สรุปสั้น
นักวิจัยด้านความปลอดภัยค้นพบกลุ่มแพ็กเกจ npm จำนวน 13 ตัวที่ถูกใช้ปล่อยมัลแวร์ขโมยข้อมูลที่เขียนด้วย JavaScript ตัวใหม่ซึ่งยังไม่เคยมีการบันทึกมาก่อน ในชื่อรหัสว่า WeaselBiscuit ตามข้อมูลของบริษัท OpenSourceMalware มัลแวร์ตระกูลนี้มีฟังก์ชันทับซ้อนกับมัลแวร์สองสายพันธุ์ที่เชื่อมโยงกับแคมเปญ Contagious Interview ของเกาหลีเหนือ ได้แก่ BeaverTail และ OtterCookie แต่ WeaselBiscuit ถูกออกแบบให้ “เล็กกว่า เบากว่า และถูกตัดทอนฟังก์ชันหนักหลายอย่างออกไป” ตามคำอธิบายของนักวิจัย นาย Paul McCarty (หรือ 6mile)
ที่มาของชื่อมาจากคำอธิบายของ นาง Jenn Gile ผู้ร่วมก่อตั้ง OpenSourceMalware ที่ว่า “วีเซิล (weasel) ตัวเล็กกว่านาก (otter) และบิสกิตก็ดูหรูน้อยกว่าคุกกี้” จุดเด่นของ WeaselBiscuit คือความเรียบง่าย เพราะขาดความสามารถหลายอย่างที่มัลแวร์รุ่นพี่มี ทั้งการเข้าถึงระยะไกล การฝังตัวถาวร โค้ดดูดกระเป๋าคริปโท และการส่งเพย์โหลดขั้นถัดไปอย่าง InvisibleFerret แทนที่จะเป็นเช่นนั้น มันถูกกระตุ้นผ่านการ import แพ็กเกจ npm ทำให้ตัวโหลด (loader.js) ดึงมัลแวร์หลักจาก dead drop บนบริการ Npoint มารันในหน่วยความจำโดยตรง
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 18 กันยายน 2569 ว่า เมื่อ WeaselBiscuit ทำงาน มันจะดึงค่าตั้งค่าการสั่งการและควบคุม (C2) จาก URL ของ Npoint อีกตัวหนึ่ง จากนั้นเก็บโปรไฟล์ของเครื่องที่ติดเชื้อ และดูดข้อมูลในที่เก็บของส่วนขยาย Chrome (Chrome extension storage) ทั้งบน Windows, macOS และ Linux โดยอ้างอิงคำสั่งที่ได้รับจากเซิร์ฟเวอร์ C2 (ที่อยู่ 103.170.217[.]184:8787) มันยังสามารถบันทึกเนื้อหาในคลิปบอร์ดและคีย์ที่กด (keystrokes) บนเครื่อง Windows ได้ด้วย
นาย McCarty อธิบายว่าแม้มัลแวร์นี้จะไม่มีฟังก์ชันขโมยกระเป๋าคริปโทเหมือนรุ่นพี่ แต่ความสามารถในการดูดข้อมูลจากที่เก็บของส่วนขยาย Chrome นั้นมีนัยทางการเงิน เพราะสามารถเปิดเผยสถานะของส่วนขยายที่เป็นกระเป๋าเงินคริปโท หรือข้อมูลอ่อนไหวอื่นที่ส่วนขยายเก็บไว้ได้ โดยมัลแวร์จะอัปโหลดไฟล์ทุกไฟล์ที่อ่านได้และไม่ว่างเปล่าภายใต้ไดเรกทอรี Local Extension Settings ซึ่งเป็นที่เก็บข้อมูลแบบคีย์/ค่า LevelDB ออกไปทั้งหมด สำหรับรายชื่อแพ็กเกจทั้ง 13 ตัวที่ใช้ปล่อยมัลแวร์ ได้แก่ @biz44/id10-client, @biz44/id12-client, @biz44/id44-client, @biz44/id79-client, @biz44/id95-client, @biz44/id99-client, @biz44/process-runtime-utils, @biz44/runtime-utils, engin1, id79-client, process-lhpm, process-mite และ process-tailwind

เชื่อมโยงกับมัลแวร์เกาหลีเหนือ
BeaverTail คือชื่อของมัลแวร์ขโมยข้อมูลข้ามแพลตฟอร์มและตัวดาวน์โหลดที่ดำเนินการโดยผู้ก่อภัยคุกคามเกาหลีเหนือเบื้องหลังแคมเปญ Contagious Interview ซึ่งพุ่งเป้าไปยังนักพัฒนาซอฟต์แวร์ ผู้เชี่ยวชาญด้านไอที และผู้ใช้คริปโทเคอร์เรนซี โดยเคลื่อนไหวมาตั้งแต่อย่างน้อยปลายปี 2565 ส่วน OtterCookie เป็นมัลแวร์ที่ผสมความสามารถขโมยข้อมูลเข้ากับการเข้าถึงระยะไกลที่ให้ผู้ปฏิบัติการรันคำสั่งบนเครื่องที่ถูกเจาะได้ ซึ่งบริษัท NTT Security Holdings บันทึกต่อสาธารณะครั้งแรกเมื่อเดือนธันวาคม 2567
อย่างไรก็ตาม OpenSourceMalware ย้ำว่าแม้จะมีความทับซ้อนอย่างมีนัยกับเครื่องมือของแคมเปญ Contagious Interview ที่เชื่อมโยงกับเกาหลีเหนือ แต่ยังไม่มีหลักฐานชี้ชัดในแง่โครงสร้างพื้นฐานของผู้ปฏิบัติการ ลักษณะเหยื่อ ข้อมูลเมทาของแคมเปญ หรือวัสดุการเซ็นรับรอง ที่จะระบุตัวได้อย่างแน่ชัดว่าเป็นฝีมือเกาหลีเหนือ สัญญาณเชิงเทคนิคอื่นที่ชี้ไปทางเกาหลีเหนือได้แก่ การใช้บริการเก็บ JSON ออนไลน์แบบเบาอย่าง Npoint.io (ซึ่งบริษัท NVISO เคยตั้งข้อสังเกตเมื่อเดือนพฤศจิกายน 2568 ว่าเชื่อมโยงกับ Contagious Interview) การใช้การค้นหา IP สาธารณะและตำแหน่งทางภูมิศาสตร์ซ้อนกันผ่าน api.ipify.org และ ip-api.com ความคล้ายคลึงของสถาปัตยกรรม C2 ที่ทับซ้อนกับ OtterCookie และการใช้รหัสแคมเปญเป็นตัวเลข (10, 12, 44, 79, 95, 99) เพื่อกำกับการติดตั้งแต่ละครั้ง ซึ่งสะท้อนวิธีของมัลแวร์ PolinRider นอกจากนี้เมื่อเดือนตุลาคม 2568 บริษัท Cisco Talos เคยระบุแพ็กเกจ npm ชื่อ node-nvm-ssh ที่มีลักษณะของทั้ง BeaverTail และ OtterCookie ปนกันจนแยกไม่ออก
ผลกระทบ
เป้าหมายของ WeaselBiscuit สอดคล้องกับแคมเปญ Contagious Interview ที่เน้นเจาะนักพัฒนาและผู้ใช้คริปโท โดยอาศัยแพ็กเกจ npm ที่ตั้งชื่อให้ดูเหมือนไลบรารีเครื่องมือทั่วไปเป็นช่องทางแพร่กระจาย ความน่ากังวลอยู่ที่การดูดข้อมูลจากที่เก็บของส่วนขยาย Chrome แบบเหมารวมทุกไฟล์ เพราะส่วนขยายจำนวนมากเก็บสถานะการล็อกอิน โทเคน หรือข้อมูลกระเป๋าเงินคริปโทไว้ในที่นั้น การขโมยข้อมูลระดับนี้จึงอาจนำไปสู่การเข้าถึงบัญชีหรือทรัพย์สินดิจิทัลได้แม้มัลแวร์จะไม่มีโค้ดดูดกระเป๋าโดยตรง การที่มัลแวร์รันในหน่วยความจำและไม่ฝังตัวถาวรยังทำให้ตรวจจับด้วยการสแกนไฟล์บนดิสก์ได้ยากขึ้น ประเด็นที่กว้างกว่าคือระบบนิเวศ npm ยังคงเป็นสนามที่ผู้โจมตีใช้แทรกมัลแวร์เข้าสู่เครื่องนักพัฒนาอย่างต่อเนื่อง
คำแนะนำ
นักพัฒนาควรตรวจสอบที่มาของแพ็กเกจ npm ก่อนติดตั้ง ระวังแพ็กเกจใหม่หรือแพ็กเกจที่ไม่คุ้นเคยซึ่งตั้งชื่อเลียนแบบไลบรารีเครื่องมือ และหลีกเลี่ยงการติดตั้งแพ็กเกจตามคำชวนจากการติดต่อที่อ้างเป็นการสัมภาษณ์งานหรือทดสอบโค้ด ซึ่งเป็นวิธีตั้งต้นของแคมเปญ Contagious Interview ควรใช้สภาพแวดล้อมแยก (sandbox หรือ container) ในการทดลองรันโค้ดจากภายนอก และเฝ้าระวังการเชื่อมต่อขาออกที่ผิดปกติ โดยเฉพาะไปยังบริการเก็บ JSON อย่าง Npoint.io และการค้นหา IP ผ่าน api.ipify.org หรือ ip-api.com องค์กรควรบล็อกหรือเฝ้าระวังที่อยู่ C2 ที่ทราบ (103.170.217[.]184) ทบทวนสิทธิ์การเข้าถึงที่เก็บข้อมูลของส่วนขยายเบราว์เซอร์ และให้ความรู้แก่ทีมพัฒนาเรื่องกลลวงผ่านการสัมภาษณ์งานปลอมที่เกาหลีเหนือใช้เป็นประจำ
Indicators of Compromise (IoCs)
ตัวชี้วัดถูก defang ไว้แล้ว โปรดใช้ประกอบกับบริบทอื่น
| ประเภท | Indicator | คำอธิบาย |
|---|---|---|
| C2 | 103.170.217[.]184:8787 | เซิร์ฟเวอร์สั่งการและควบคุม |
| แพ็กเกจ npm | @biz44/id10-client, id12, id44, id79, id95, id99, process-runtime-utils, runtime-utils, engin1, id79-client, process-lhpm, process-mite, process-tailwind | แพ็กเกจที่ใช้ปล่อย WeaselBiscuit |
| บริการที่ถูกใช้ | Npoint.io, api.ipify.org, ip-api.com | dead drop และการค้นหา IP/ตำแหน่ง |
