npm indexed-btree: มัลแวร์ไม่ใช้ install script — ซ่อนใน BTree.set() โหลด ~2 ล้าน/สัปดาห์
ถ้าทีมคุณพึ่ง npm audit / บล็อก postinstall เป็นแนวหน้า — รอบนี้มีเคสที่หลบได้ครับ
เมื่อ 20 ก.ย. 2026 BleepingComputer รายงานแคมเปญที่ Checkmarx พบ: แพ็กเกจ indexed-btree แอบอ้างหน้าตาคล้าย sorted-btree จริง และเคยมีดาวน์โหลดราว 2 ล้านครั้งต่อสัปดาห์
ทำไมหลบ npm v12 ได้
ตั้งแต่กลางปี GitHub/npm เพิ่มมาตรการบล็อก lifecycle script (preinstall / install / postinstall) ถ้าไม่ได้อนุมัติ
แคมเปญนี้ ไม่ใส่สคริปต์ตอนติดตั้ง แต่ซ่อนโหลดเดอร์ใน BTree.prototype.set() — เมธอดที่แอปเรียกอยู่แล้ว และจะยิงเมื่อ key เป็นค่าเฉพาะ (รายงานระบุ key == 100)
ผลคือ npm install ดูสะอาด แต่รันแอปแล้วค่อยโหลดสเตจถัดไป
หลังยิงแล้วทำอะไร
ตามรายงานเดียวกัน มัลแวร์สามารถ:
- เก็บข้อมูลเครื่อง (arch, hostname, CPU, memory, uptime)
- ส่งออกทาง Slack / Telegram ที่ฮาร์ดโค้ดไว้
- ดึงปลายทาง C2 จาก smart contract บน Ethereum Sepolia แล้วถอดรหัสสเตจสองด้วย X25519 + AES
- ลบไฟล์และถอนทริกเกอร์เมื่อผู้โจมตีปิดเกม
Checkmarx ยังพบแพ็กเกจเกี่ยวข้องอีกอย่างน้อย 9 ตัว (เช่น btree-core, ordered-kv-index, btree-lru-cache ฯลฯ) และถอนออกจาก npm แล้ว
ทำอะไรตอนนี้
- ค้น
package-lock.json/pnpm-lock.yamlว่ามีชื่อในรายการหรือไม่ - ถ้าเคยติดตั้ง — หมุน secrets ทั้งหมด และคืนสภาพเครื่องจากแบ็กอัปที่ไว้ใจได้
- อย่าพึ่งสแกนตอน install อย่างเดียว — ต้องดูพฤติกรรมตอนรันด้วย
Recap
- ค้นโปรเจกต์ว่ามี
indexed-btreeหรือแพ็กเกจ btree ที่ Checkmarx ระบุหรือไม่ - อ่าน BleepingComputer 20 ก.ย.
- ถ้าติด — หมุนโทเคน + รีอิมเมจ / restore
- เพิ่ม runtime / behavioral check ใน CI ไม่หยุดที่ block scripts