
npm SDK ของ Tensorlake ถูกวางยาเพื่อขโมยข้อมูลรับรองของ AI-Agent — และเพื่อล้างไดเรกทอรี Home ของคุณ หากคุณเพิกถอนโทเค็น
- Orcaใหม่Orca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 ต่อ 1 ล้านโทเค็น · 56 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2952ความฉลาด
- anthropicAnthropic: Claude Sonnet 5.52026-09-2856ความฉลาด
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 ต่อ 1 ล้านโทเค็น · 993 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2238ความฉลาด
- OpenAIOpenAI: GPT-6 Sol2026-09-2248ความฉลาด
- AnthropicAnthropic: Claude Opus 5.52026-09-2258ความฉลาด
- xAIGrok 4.72026-09-2146ความฉลาด
- OrcaOrca: OrcaCyber Zero 1.02026-09-17$3.00 / $7.50 ต่อ 1 ล้านโทเค็น · 40 tok/s
- OrcaOrca: OrcaVerify Text 1.02026-09-16$2.00 / $0.00 ต่อ 1 ล้านโทเค็น · 2230 tok/s
- DeepSeekDeepSeek: DeepSeek V4.1 Flash2026-09-1040ความฉลาด
- OpenAIOpenAI: GPT-6 Astra2026-09-0453ความฉลาด77การเขียนโค้ด
- GoogleGoogle: Gemini 3.8 Flash2026-09-0241ความฉลาด76การเขียนโค้ด
- AlibabaQwen: Qwen3.8 Max (0902)2026-09-0245ความฉลาด76การเขียนโค้ด
- AnthropicAnthropic: Claude Fable 5.12026-09-0153ความฉลาด82การเขียนโค้ด
- TencentTencent: Hy4 preview2026-08-28$0.83 / $2.50 ต่อ 1 ล้านโทเค็น · 57 tok/s
- AlibabaQwen: Qwen3.8 Flash2026-08-26$0.15 / $0.47 ต่อ 1 ล้านโทเค็น · 125 tok/s
- z-aiZ.ai: GLM 5.3 Flash2026-08-2642ความฉลาด72การเขียนโค้ด
- DeepSeekDeepSeek: DeepSeek V4 Flash Vision (Exp)2026-08-21$0.22 / $0.66 ต่อ 1 ล้านโทเค็น · 206 tok/s
- z-aiZ.ai: GLM 5.32026-08-1845ความฉลาด75การเขียนโค้ด
เมื่อวันที่ 8 ตุลาคม 2026 รีลีสที่ถูกวางยาพิษของ tensorlake — SDK บน npm สำหรับแพลตฟอร์มของ Tensorlake ซึ่งรันโค้ดที่ไม่น่าเชื่อถือที่สร้างโดย LLM ภายในแซนด์บ็อกซ์ที่แยกจากกัน — เข้าสู่ทะเบียน npm เวอร์ชัน 0.5.144 ถูกเผยแพร่เมื่อ 01:12:07 UTC; นักวิจัยของ Socket กล่าวว่าพวกเขาแจ้งเตือนเกี่ยวกับเรื่องนี้ประมาณสิบเอ็ดนาทีต่อมา มันไม่ใช่รีลีสที่ได้รับอนุญาต Tensorlake ระบุว่าผู้โจมตีผลักโค้ดเข้าไปในที่เก็บ GitHub ของบริษัทโดยตรง และเผยแพร่ผ่านเวิร์กโฟลว์การเผยแพร่ของโปรเจกต์เอง ดังนั้นแพ็กเกจจึงมี provenance ของ npm ที่ถูกต้อง — ใบรับรองที่ลงนามซึ่งแสดงว่าถูกสร้างที่ไหน สำหรับซอร์สโค้ดที่ถูกวางยาพิษไปแล้ว บริษัทกล่าวว่าเวอร์ชันนี้เปิดให้ใช้งานอยู่ประมาณ 1 ชั่วโมง 40 นาที ตั้งแต่ 01:12 ถึง 02:54 UTC ก่อนที่ npm จะนำมันออก
เพย์โหลดนี้ไม่จำเป็นต้องนำเข้าหรือมีเอเจนต์ที่ทำงานอยู่ preinstall ฮุกใน manifest ของแพ็กเกจได้รัน node lib/setup.mjs ซึ่งเป็นตัวโหลดที่ถูกทำให้อ่านยาก และได้ติดตั้ง Bun runtime ลงบนเครื่องและใช้มันเพื่อรัน lib/Math_Symbol.js ซึ่งเป็นตัวขโมยข้อมูลรับรองขนาด 856,501 ไบต์และเป็นหนอนที่แพร่กระจายตัวเอง ใครก็ตามที่ทำการติดตั้งแบบปกติของเวอร์ชันนั้นได้รันมัน เนื่องจากมันเป็นแท็ก latest ของแพ็กเกจ เวอร์ชันนั้นคือสิ่งที่การติดตั้งเริ่มต้นเลือกใช้ในขณะที่มันยังใช้งานอยู่
สิ่งที่ทำให้บันทึกนี้ควรค่าแก่การเก็บรักษาไม่ใช่ขนาดของเพย์โหลด — ครอบครัว Shai-Hulud เคยมีเอกสารบันทึกไว้แล้ว แต่เป็นรายการเป้าหมายต่างหาก ควบคู่ไปกับโทเคน npm และ GitHub, ข้อมูลรับรอง AWS, ข้อมูลลับของ Kubernetes และ Vault, คีย์ SSH, ไฟล์ .env รหัสผ่านในเบราว์เซอร์ และกระเป๋าเงินคริปโต บิลด์นี้ยังเก็บ การตั้งค่าเครื่องมือพัฒนา AI และไฟล์ MCP — โดยเฉพาะที่เกี่ยวข้องกับ Claude Code, Cursor, Kiro, Windsurf และ Zed ตามรายงานของ Socket นอกจากนี้มันยังเขียน .claude/settings.json และ .vscode/tasks.json ของตัวเองลงในรีโพซิทอรีที่มันเข้าถึงได้ เพื่อให้โค้ดทำงานอีกครั้งในครั้งถัดไปที่นักพัฒนาเปิดโปรเจกต์นั้นใน Claude Code หรือ VS Code นี่คือการโจมตีซัพพลายเชนที่มุ่งเป้าไปที่เครื่องซึ่งผู้คนใช้สร้างเอเจนต์โดยตรง
รีลีสหลุดออกจากบัญชีของผู้ดูแลได้อย่างไร
Socket, SafeDep และ Aikido ต่างเผยแพร่บทวิเคราะห์ของตนเองเมื่อวันที่ 8 ตุลาคม และคำอธิบายกลไกของพวกเขาสอดคล้องกัน ระดับความเชื่อมั่นของคลังข้อมูลสำหรับบันทึกนี้คือ A ไม่ได้ถูกทำเครื่องหมายว่ามีข้อโต้แย้ง และไม่มีสิ่งใดที่พบในแหล่งข้อมูลขัดแย้งกับสิ่งใดในคำอธิบายเหล่านั้น
รายงานของ SafeDep ติดตามคอมมิตแปดรายการไปยังสาขาmain ของที่เก็บ ระหว่างเวลา 01:20 ถึง 03:57 UTC เมื่อวันที่ 7 ตุลาคม ซึ่งระบุว่าเป็นบัญชีผู้ดูแลที่เก็บ และทำผ่านส่วนติดต่อเว็บของ GitHub คอมมิตที่เอกสารเก็บถาวรอ้างว่าเป็นคอมมิตอันธพาลรายการแรกคือ 41b38f0 ซึ่งเป็นการแก้ไขสี่ไฟล์เมื่อเวลา 03:44:48 UTC ของวันที่ 7 ตุลาคม โดยมีข้อความว่า "Add files via upload" และมีลายเซ็น verified ของ GitHub — GitHub ลงนามคอมมิตที่ทำในโปรแกรมแก้ไขเว็บของตัวเอง ดังนั้น "verified" จึงบันทึกพื้นผิวการแก้ไข ไม่ใช่ตัวบุคคล คอมมิตนั้นไม่ได้แตะต้องไฟล์ใดนอกเหนือจาก typescript/lib/Math_Symbol.js และ typescript/lib/setup.mjs ตาม GitHub API: มีเพียงเพย์โหลดเท่านั้น และไม่มีอย่างอื่น
SafeDep เสนอการตีความพฤติกรรมของผู้ปฏิบัติการ โดยระบุว่าเป็นข้ออนุมานของตนเอง: การแก้ไขครั้งแรกของฮุก preinstall ทำให้ไวยากรณ์ JSON ของไฟล์เสีย และมีคอมมิตซ่อมแซมตามมาในอีกสิบเก้านาทีต่อมา ซึ่ง SafeDep อธิบายว่าสอดคล้องกับบุคคลที่กำลังแก้ไขไฟล์ในเบราว์เซอร์ มากกว่ากระบวนการไปป์ไลน์แบบสคริปต์ ไม่มีสิ่งใดที่เผยแพร่โดย Socket, SafeDep, Aikido, StepSecurity หรือ Tensorlake ระบุวิธีการที่บัญชีของผู้ดูแลถูกยึดไป
ผู้โจมตีไม่จำเป็นต้องมีโทเค็น npm SafeDep รายงานว่าบัญชีนั้นเริ่มของโปรเจกต์publish_npm.yaml เวิร์กโฟลว์ด้วยมือเมื่อวันที่ 8 ตุลาคม เวลา 00:08 UTC; บันทึกการบิลด์แสดงไฟล์เพย์โหลดภายใน tarball ที่เผยแพร่ การเผยแพร่ใช้ npm trusted publishing, และแพ็กเกจที่เกี่ยวข้อง tensorlake-native-* ที่เผยแพร่จากการรันเดียวกันมี SLSA provenance ที่ถูกต้อง — provenance ที่ถูกต้องอย่างแท้จริงสำหรับการบิลด์จากซอร์สที่ถูกวางยาพิษ การเผยแพร่เกิดขึ้นหลังจากเวิร์กโฟลว์เริ่มได้สิบสองนาที
archive บันทึกว่า repository ถูกเจาะระบบเป็นเวลาราว20 ชั่วโมงก่อนที่การเผยแพร่จะถูกสั่งให้ทำงาน — ช่วงว่างที่ไทม์ไลน์ด้านล่างเรียงให้เห็นทีละ commit — ซึ่งสอดคล้องกับคำแถลงของ Tensorlake เองว่าผู้โจมตีเผยแพร่ "ผ่านเวิร์กโฟลว์การปล่อยเวอร์ชันของเราเอง"
เพย์โหลดทำอะไรเมื่อมันทำงานแล้ว

การประเมินของ Socket ระบุถึงการเก็บเกี่ยวข้อมูลจากไฟล์ภายในเครื่อง สภาพแวดล้อม CI แหล่งข้อมูล Kubernetes และ Vault รวมถึงการส่งข้อมูลออก การคงอยู่ในระบบ และการรันโค้ดที่ถูกส่งมาจากระยะไกล SafeDep ได้จำลองเพย์โหลดที่ถอดรหัสแล้วขึ้นมาใหม่: lib/setup.mjs ดาวน์โหลด Bun 1.3.13 จาก GitHub release อย่างเป็นทางการ และใช้มันรันเวิร์ม และมันจะยุติการทำงานบน CI runner — เป้าหมายคือเครื่องของนักพัฒนา ไม่ใช่บิลด์เอเจนต์ SafeDep ยังพบว่าเพย์โหลดนั้นมีสำเนาแบบธรรมดาของตัวโหลดตัวเดียวกันนี้ติดมาด้วย ซึ่งมันจะฝังลงในแพ็กเกจและรีโพซิทอรีอื่น ๆ
เพย์โหลดรันชั้นอำพรางสามชั้น ซึ่ง SafeDep ถอดรหัสได้โดยไม่ต้องรันตัวอย่าง: อาร์เรย์สตริงของออบฟัสเคเตอร์ ไซเฟอร์กำหนดเองที่ใช้ซอลต์ svksjrhjkcejg — เหมือนกับตัวที่รายงานไว้ในเหตุการณ์ก่อนหน้านี้ของ keyv ที่ถูกละเมิด — และ AES-256-GCM ครอบคลุมไฟล์ที่ฝังไว้สิบเอ็ดไฟล์ รวมถึงสคริปต์ ฮุก และคีย์สาธารณะ RSA สองคีย์ บรรทัดแรกมีแท็กบิลด์ WORMTAG='tensrlake', สะกดผิด ซึ่งเป็นวิธีที่ SafeDep ใช้แยกแยะบิลด์นี้จากการติดเชื้อซ้ำที่กำลังดำเนินอยู่
นอกจากคอนฟิกูเรชันของเครื่องมือ AI แล้ว รายการที่ถูกเก็บรวบรวมยังกว้างและเจาะจง: ~/.claude.json และ ~/.kiro/settings/mcp.json สำหรับการตั้งค่าของเอเจนต์; คีย์ SSH, ไฟล์ CLI ของคลาวด์, .npmrc, .env, ไฟล์ Docker และ Kubernetes และประวัติเชลล์; wallet.dat รวมถึงข้อมูลของ Exodus, Electrum และ Ledger Live และส่วนขยายกระเป๋าเงินในเบราว์เซอร์ เช่น MetaMask และ Phantom; AWS STS, SSM Parameter Store และ Secrets Manager; ซีเคร็ตของ GitHub Actions ที่อ่านจากหน่วยความจำของโปรเซส Runner.Worker; และโทเคนบัญชีบริการของ Kubernetes และโทเคน Vault มันดาวน์โหลดไบนารีเฉพาะแพลตฟอร์มจาก iseekaigogo[.]com/hbd/<platform> และรันมันด้วยอาร์กิวเมนต์ "dump -b all -c password -f json" — อาร์กิวเมนต์ที่ตรงกับเครื่องมือ HackBrowserData แม้ว่า SafeDep ระบุว่าไม่สามารถกู้ไบนารีตัวนั้นกลับมาได้ และจัดให้การระบุตัวตนครั้งนี้เป็นการอนุมาน หนอนตัวนี้ SafeDep เสริม จะออกเมื่อเจอโลแคลรัสเซีย
![A screenshot of a card titled 'Persistence, resolution, and the wipe trigger', kicked 'tensorlake@0.5.144 · staying power', subtitled 'The release was removed in under two hours; the implant it installed was built to outlive that.' Three columns sit side by side. 'Persistence: gh-token-monitor' lists a systemd user service on Linux, a LaunchAgent com.user.gh-token-monitor on macOS, a scheduled task with a PowerShell monitor on Windows, and files left behind in ~/.local/bin, ~/.config and %LOCALAPPDATA%. 'Endpoint resolution order' lists, in numbered order, the primary endpoint iseekaigogo[.]com:443/router; an Ethereum contract 0xb614155Fd88...1Df091B9; the public RPC endpoints that contract is read through, given as ~30 by Socket and 35 by SafeDep; signed GitHub commits found by the string thebeautifulmarchoftime; and public dead-drop repositories described as 'Shai-Hulud: Here We Go Again'. 'The dead-man switch' lists a poll of api.github.com/user every 60s, for 24 hours, firing on a 40x response to that token, with the effect rm -rf ~/ (advisory: home dir), armed only if the account has no orgs, and the order that matters: remove monitor, then revoke. A footer reads 'Per Socket's blog and SafeDep's analysis, with the C2 endpoint, the contract and the gh-token-monitor service confirmed in Tensorlake's advisory. Socket and SafeDep give different counts of the public RPC endpoints the contract is read through.'](https://cms.orcarouter.ai/api/media/file/3-1820.png)
การคงอยู่เป็นสิ่งที่จงใจ Socket เขียนถึงเพย์โหลดนี้ว่า "การผสมผสานนั้นขยายความเสี่ยงออกไปไกลเกินกว่าการที่คีย์ API เพียงคีย์เดียวถูกขโมย" พร้อมเสริมว่า "การคงอยู่สามารถรักษาสิทธิ์การเข้าถึงของผู้โจมตีไว้ได้แม้ dependency ที่ได้รับผลกระทบจะถูกนำออกไปแล้ว" SafeDep รายงานว่าหนอนนี้คอมมิตไฟล์ hook ของ Claude Code และ VS Code โดยใช้ชื่อผู้เขียน git ว่า claude และฝังเวิร์กโฟลว์ "Run Copilot" ที่ดัมป์ความลับทั้งหมดของรีโพซิทอรีแล้วลบ run และสาขานั้นทิ้ง คำแนะนำของ Tensorlake บอกนักพัฒนาที่กำลังตรวจสอบล็อกของตนให้มองหาสาขาที่ชื่อ dependabot/github_actions/format/setup-formatter และคอมมิตที่เขียนขึ้นภายใต้อัตลักษณ์เดียวกันนั้น
การแพร่กระจายอาศัยโทเค็นที่ถูกขโมยมา มากกว่าจะอาศัยช่องโหว่ตัวที่สอง Socket ระบุว่าหนอนตัวนี้จะไล่แจกแจงแพ็กเกจที่เชื่อมโยงกับตัวตนด้านการเผยแพร่ของเหยื่อ สร้าง provenance ของ Sigstore ขึ้นมา แล้วเผยแพร่เวอร์ชันที่ถูกวางยาพิษซ้ำออกไป SafeDep เสริมรายละเอียดว่าภายใน CI มันจะเพิ่ม dependency แบบ git และลงลายเซ็นให้ผลลัพธ์ของตนด้วย Fulcio และ Rekor ดังนั้น provenance บนแพ็กเกจที่มันเผยแพร่เป็นรายถัดไปจึงถูกต้องสมบูรณ์พอ ๆ กับ provenance บนเวอร์ชัน 0.5.144
ยี่สิบชั่วโมงก่อนการเผยแพร่
ช่องว่างระหว่างคอมมิตอันธพาลรายการแรกกับรีลีสคือส่วนหนึ่งของไทม์ไลน์ที่อธิบายว่าแพ็กเกจที่ถูกวางยามี provenance ที่ถูกต้องได้อย่างไร เวลาทั้งหมดเป็น UTC; เวลาคอมมิตเป็นของ SafeDep และ GitHub API และเวลาเผยแพร่ การนำออก และการแจ้งเตือนเป็นของ Tensorlake

อ่านประกอบกัน: ไฟล์เพย์โหลดถูกนำเข้าสู่แบรนช์หลักของรีโพซิทอรีเมื่อวันที่ 7 ตุลาคม เวอร์ชันถูกตั้งเป็น 0.5.144 เมื่อเวลา 03:57 ของเช้าวันนั้น และไม่มีอะไรถูกเผยแพร่จนกระทั่งบัญชีหนึ่งเริ่มเวิร์กโฟลว์การเผยแพร่ด้วยมือเมื่อเวลา 00:08 ของวันถัดไป ซอร์สโค้ดที่ถูกบุกรุกอยู่ในแบรนช์นั้นราว 20 ชั่วโมงก่อนที่ไปป์ไลน์ของโครงการเองจะบิลด์มัน นั่นคือทั้งหมดของการโจมตีเส้นทางการเผยแพร่ — ไม่มีการปลอมแปลง attestation ไม่มี tarball ที่ถูกเผยแพร่ซ้ำ ข้อมูล provenance นั้นถูกต้องเกี่ยวกับการบิลด์โค้ดที่ไม่ควรอยู่ในแบรนช์ตั้งแต่แรก
สวิตช์คนตาย
ส่วนของเหตุการณ์นี้ที่ไม่เคยมีมาก่อนในการถูกเจาะระบบ npm ก่อนหน้านี้ คือสิ่งที่เกิดขึ้นหลังจากที่เหยื่อตอบสนองอย่างถูกต้อง หากโทเค็น GitHub ที่ถูกขโมยไปเป็นของบัญชีที่ไม่มีองค์กรใด ๆ SafeDep รายงาน ตัวหนอนจะติดตั้ง gh-token-monitor: บริการที่คอยตรวจสอบ api.github.com/user ด้วยโทเค็นที่ถูกขโมยมานั้นทุก 60 วินาที เป็นเวลา 24 ชั่วโมง เมื่อ GitHub ตอบกลับเป็น 40x — ซึ่งจะเกิดขึ้นทันทีที่โทเค็นถูกเพิกถอน — ตัวตรวจสอบจะเรียกใช้ตัวจัดการที่ผู้โจมตีจัดหาให้ และลบไดเรกทอรีบ้านของผู้ใช้
Socket อธิบายคอมโพเนนต์เดียวกันว่าเป็นการใช้มอนิเตอร์ของ Socket ที่คงอยู่ผ่านONLOGON scheduled task โดยรันแฮนด์เลอร์ที่ผู้โจมตีจัดหามาผ่านInvoke-Expression และระบุว่าโค้ดมีสตริงตามตัวอักษรว่า "IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner" ซึ่งพบในระลอก Shai-Hulud ก่อนหน้านี้ SafeDep ระบุชื่อแฮนด์เลอร์ว่าrm -rf ~/ ถ้อยคำของ Socket ชัดเจนว่ากลไกนี้ทำงานไม่ว่าการเพิกถอนจะเกิดขึ้นที่ใด มอนิเตอร์อยู่ในเครื่อง แต่การเพิกถอนไม่ได้อยู่ในเครื่อง แหล่งข้อมูลทั้งสี่แห่ง — Socket, SafeDep, StepSecurity และคำแนะนำของ Tensorlake เอง — ให้ลำดับการดำเนินการเดียวกัน: ลบมอนิเตอร์ก่อน แล้วจึงเพิกถอน.
อะไรคือสิ่งที่ได้รับการยืนยันแล้ว และอะไรคือสิ่งที่เพียงแต่เป็นการอนุมาน
คลังข้อมูลบันทึกว่าไม่มีความเสียหายที่ยืนยันได้สำหรับรายการนี้ และแหล่งข้อมูลสนับสนุนข้อสรุปนั้น ไม่ใช่เพียงแค่ไม่ได้โต้แย้งมัน
• Tensorlake ระบุว่าไม่พบการใช้งานเวอร์ชันนี้คำแนะนำของบริษัทระบุว่าบริษัทติดตามการใช้งาน SDK ผ่านเฮดเดอร์ user-agent และ "ไม่พบการใช้งานเวอร์ชันนี้เลยนับตั้งแต่เปิดตัว" นั่นเป็นถ้อยแถลงของผู้ขายเกี่ยวกับข้อมูลเทเลเมทรีของตนเอง ไม่ใช่ตัวเลขที่ผ่านการตรวจสอบ
• ตัวเลขการดาวน์โหลดไม่ใช่จำนวนการติดเชื้อSocket รายงานว่าแพ็กเกจนี้มียอดดาวน์โหลดประมาณ12,000 ครั้งต่อสัปดาห์และตั้งข้อสังเกตว่านี่อธิบายการใช้งานโดยรวมของแพ็กเกจ ไม่ใช่การดาวน์โหลดเวอร์ชันที่เป็นอันตราย; SafeDep กล่าวอ้างประมาณ106,000 ครั้งต่อเดือนบนแพ็กเกจเดียวกัน ไม่มีหลักฐานใดบ่งชี้ว่า 0.5.144 ทำงานที่ใดก็ตาม หน้าต่างการเปิดตัวที่ถูกตั้งค่าสถานะของ Socket และหน้าต่างสองชั่วโมงของ Tensorlake สอดคล้องกับเวอร์ชันที่ถูกลบออกก่อนที่จะแพร่กระจาย
• บั๊กของเพย์โหลดเองอาจจำกัดการแพร่กระจายของมันไว้ SafeDep พบสองจุด: เส้นทางการแพร่กระจายผ่าน npm ต้องมี ./dist/Math_Symbol.js อยู่บนดิสก์ และจะหยุดทำงานหากไม่มีไฟล์นี้ และตัวโหลดที่ฝังไว้จะมองหา ai_init.js ขณะที่เวิร์มเขียน math_init.js SafeDep ระบุว่าสิ่งที่พบเหล่านี้เป็นข้อจำกัดในการแพร่กระจาย และบทความมองว่าสิ่งเหล่านี้เป็นเพียงการตีความโค้ดของบทวิเคราะห์ชิ้นหนึ่ง ไม่ใช่หลักประกันว่าจะไม่มีอะไรแพร่กระจายไปเลย
• การรับรองแหล่งที่มา (provenance attestation) เป็นของจริงนี่ไม่ใช่ข้อกล่าวอ้างที่ยังเป็นที่โต้แย้ง: npm provenance บันทึกว่าแพ็กเกจถูกสร้างที่ไหนและโดยเวิร์กโฟลว์ใด และในกรณีนี้มันบันทึกความจริงไว้ — เวิร์กโฟลว์การรีลีสของโปรเจกต์เอง ซึ่งสร้างซอร์สที่ถูกวางยาพิษ คำเตือนของ Tensorlake ระบุไว้ตรง ๆ ว่า "แพ็กเกจนี้มี npm provenance ที่ถูกต้อง" Socket ชี้ประเด็นเดียวกันอย่างตรงไปตรงมาเมื่อระบุว่า provenance "บอกว่าแพ็กเกจถูกสร้างที่ไหน แต่มันไม่ได้บอกว่าโค้ดปลอดภัย"
รายละเอียดหลายประการที่แพร่กระจายอยู่ในขณะนี้เป็นข้อกล่าวอ้างจากการวิเคราะห์เพียงแหล่งเดียว และควรอ่านในลักษณะเช่นนั้น กลไกเฉพาะที่ผู้โจมตีใช้เพื่อให้ได้มาซึ่งบัญชีของผู้ดูแลนั้น ยังไม่ถูกเปิดเผยโดยบริษัทที่ทำการสอบสวนใด ๆ หรือโดย Tensorlake ที่อยู่สัญญา Ethereum และบทบาทของมันในการแปลงเอนด์พอยต์ปรากฏอยู่ในรายงานของ SafeDep และ Socket — Socket กล่าวว่าเพย์โหลดแปลงเอนด์พอยต์ของมันผ่านสัญญา Ethereum โดยใช้เอนด์พอยต์ RPC สาธารณะประมาณ 30 แห่ง พร้อมกลไกสำรองผ่าน GitHub ขณะที่ SafeDep ระบุจำนวน RPC ไว้ที่ 35 และรายงานว่าเมื่อวันที่ 8 ตุลาคม สัญญาดังกล่าวส่งคืนค่า iseekaigogo.com — และ Tensorlake ยืนยันเอนด์พอยต์และสัญญาดังกล่าวในคำแนะนำของบริษัท จำนวน RPC ที่แน่นอนนั้นแตกต่างกันระหว่างบทวิเคราะห์ทั้งสองชิ้น แต่การออกแบบไม่แตกต่าง
ช่องว่างหนึ่งประการในบันทึกสาธารณะสมควรกล่าวไว้อย่างตรงไปตรงมา ไม่มีแหล่งข้อมูลใดที่ตรวจสอบสำหรับบทความนี้รายงานการติดเชื้อในทอดปลายน้ำที่ได้รับการยืนยัน — แพ็กเกจหรือรีโพซิทอรีอีกรายที่ถูกเวิร์มวางยาโดยใช้ข้อมูลรับรองที่ขโมยมาจากแพ็กเกจนี้ โค้ดที่ใช้แพร่กระจายนั้นมีอยู่จริง และ SafeDep ได้อ่านมันแล้ว แต่มันสร้างเหยื่อรายที่สองหรือไม่นั้นยังไม่เป็นที่ทราบ
อะไรเปลี่ยนแปลงไปหลังจากนั้น
การตอบสนองรวดเร็วกว่าและประสานงานกันมากกว่าเหตุการณ์
• เวอร์ชันนั้นหายไปแล้ว ตามข้อมูลของ Tensorlake มันเปิดให้ใช้งานตั้งแต่ 01:12 ถึง 02:54 UTC ของวันที่ 8 ตุลาคม ขณะที่ SafeDep รายงานว่า npm ได้ลบมันออกไป เมื่อสอบถาม registry ของ npm โดยตรงเมื่อวันที่ 10 ตุลาคมสำหรับบทความนี้ 0.5.144 ไม่ปรากฏอยู่ในบรรดาเวอร์ชันที่เผยแพร่ของแพ็กเกจนี้แล้ว และแท็ก latest ของแพ็กเกจคือ 0.5.148 คำแนะนำของ Tensorlake ชี้ให้นักพัฒนาหันไปใช้ 0.5.143 เป็นเวอร์ชันสุดท้ายที่ไม่ได้รับผลกระทบ
• คำแนะนำนี้ได้รับการเผยแพร่พร้อมแพตช์แก้ไข คำแนะนำ GHSA-8g63-53c9-65j2 ของ Tensorlake ระบุว่าแพ็กเกจจาก PyPI และ crates.io ที่ชื่อ tensorlake รวมทั้ง tensorlake CLI ไม่ได้รับผลกระทบ — มีเพียงแพ็กเกจ npm เท่านั้นที่ได้รับผลกระทบ — และเวอร์ชัน 0.5.143 และก่อนหน้าไม่ได้รับผลกระทบ SafeDep รายงานว่าผู้ดูแลได้ย้อนกลับซอร์สโค้ดในพูลรีเควสต์ #1016 และปล่อย 0.5.145.
• เธรดการเปิดเผยนี้ครบถ้วนอย่างผิดปกติ นักวิจัย Ashish Kurmi จาก StepSecurity ได้เปิด issue บน GitHub #1014 เมื่อ 01:22:02 UTC วันที่ 8 ตุลาคม — ประมาณสิบนาทีหลังการเผยแพร่ — โดยชี้ไปที่บทวิเคราะห์ของ StepSecurity เองเกี่ยวกับสิ่งที่พวกเขาเรียกว่าเวิร์ม "โทเค็นตัวประกัน" Oliver Smith จาก Aikido แสดงความคิดเห็นว่าเพย์โหลดถูกนำเข้ามาในคอมมิต 41b38f0 และระบุว่ามันเป็นโปรแกรมขโมยข้อมูล Shai-Hulud ตัวใหม่ ผู้ดูแล David Lorenzo — ตัวตนผู้ดูแลที่ระบุไว้บนแพ็กเกจ npm ว่า calavera — ตอบกลับเมื่อ 9 ตุลาคม ยืนยันคำแนะนำด้านความปลอดภัยและปิด issue ว่าเสร็จสิ้นในวันเดียวกัน ชื่อ issue เองสอดคล้องกับหลักฐาน: เริ่มต้นเป็นรายงาน "อาจเป็นอันตราย" และเมื่อถึงเวลาที่มันถูกปิด ก็ถูกเปลี่ยนชื่อให้อธิบายเพย์โหลดว่าเป็นอันตรายโดยไม่มีเงื่อนไข
• แคมเปญที่สิ่งนี้เป็นส่วนหนึ่งนั้นใหญ่กว่าตัวแพ็กเกจนี้ Socket, SafeDep และ Aikido ต่างก็จัดให้การเผยแพร่ของ Tensorlake อยู่ในระลอก ChainDrop / Mini Shai-Hulud ที่ได้รับการบันทึกไว้ครั้งแรกเมื่อต้นเดือนสิงหาคม 2026 ซึ่งเหยื่อใน npm รวมถึง keyv, cacheable และแพ็กเกจที่เกี่ยวข้อง คำแนะนำของ Tensorlake กล่าวเช่นเดียวกัน โดยอ้างอิงถึง Socket, SafeDep และ Aikido
คำแนะนำของ Socket สำหรับทุกคนที่ติดตั้งเวอร์ชันนี้ คือควรถือว่าโฮสต์ถูกบุกรุกแล้ว: ตรวจสอบ lockfile, manifest และ build log ว่าเป็นเวอร์ชันนี้หรือไม่; ลบ gh-token-monitorเซอร์วิสก่อนเพิกถอนโทเคนใด ๆ; จากนั้นหมุนเวียนข้อมูลรับรองจากเครื่องที่สะอาด คำแนะนำของ Tensorlake ระบุลำดับเดียวกันและแนะนำให้ตรวจสอบ package registry และ repository ที่โทเคนที่ถูกเปิดเผยอาจเขียนข้อมูลลงไปได้ ว่ามีการเผยแพร่ที่ผิดปกติหรือไม่ บทความของ Aikido แนะนำให้ตั้งค่า ignore-scripts=trueใน.npmrcเพื่อบล็อก install hook และถือว่าเครื่องใดก็ตามที่ hook นั้นทำงานไปแล้วว่าถูกบุกรุกโดยสมบูรณ์
นี่คือบันทึกหนึ่งรายการ ซึ่งถูกรายงานโดยผู้อื่นและถูกอ้างอิงถึงพวกเขาไว้ ณ ที่นี้ เหตุการณ์ของเอเจนต์อื่นๆ ที่มีการบันทึกไว้ โดยแต่ละเหตุการณ์มีแหล่งที่มา ระดับความรุนแรง เกรดความเชื่อมั่น และแฟล็กข้อโต้แย้งเป็นของตัวเอง อยู่ใน คลังเหตุการณ์ AI — ดังนั้นการถูกบุกรุกในห่วงโซ่อุปทานที่มุ่งเป้าไปที่เครื่องมือของเอเจนต์จึงสามารถอ่านเทียบกับส่วนที่เหลือของสิ่งที่เกิดขึ้นจริงได้
