สรุปย่อ
ในวันที่ 31 มีนาคม 2569 ผู้โจมตีได้บุกรุกบัญชี npm ของผู้ดูแลหลักของ Axios ซึ่งเป็นไคลเอนต์ HTTP JavaScript ที่ได้รับความนิยมสูงสุดด้วยยอดดาวน์โหลด 83 ล้านครั้งต่อสัปดาห์ พวกเขาเผยแพร่เวอร์ชันที่เป็นอันตราย (1.14.1 และ 0.30.4) ซึ่งมี RAT (Remote Access Trojan) ข้ามแพลตฟอร์มที่ขโมยข้อมูลประจำตัว คีย์ SSH และโทเค็นคลาวด์จากเครื่องของนักพัฒนา ลดระดับ Axios เป็นเวอร์ชัน 1.14.0 ทันที หมุนเวียนความลับทั้งหมด และสแกนหาร่องรอยการประนีประนอมในระบบของคุณ
บทนำ
Axios ประมวลผลคำขอ HTTP มากกว่าไลบรารี JavaScript อื่นๆ หากคุณเคยสร้างไคลเอนต์ API, ทดสอบปลายทาง หรือเชื่อมต่อส่วนหน้ากับส่วนหลังในช่วงห้าปีที่ผ่านมา คุณน่าจะเคยใช้มัน
ในวันที่ 31 มีนาคม 2569 เวลา 00:21 UTC ผู้ไม่ประสงค์ดีได้เผยแพร่ Axios เวอร์ชัน 1.14.1 ผ่านบัญชีผู้ดูแลที่ถูกยึดครอง แพ็กเกจดังกล่าวดูเหมือนกับเวอร์ชันที่ถูกต้อง ความแตกต่างนั้นเล็กน้อย: มีเพียง package.json เท่านั้นที่เปลี่ยนไปใน 86 ไฟล์ แต่ไฟล์เดียวนี้ได้ฉีดการพึ่งพาปลอมที่เรียกว่า plain-crypto-js ซึ่งติดตั้งโทรจันเข้าถึงระยะไกล (Remote Access Trojan) ไปยังทุกเครื่องที่รัน npm install
เวอร์ชันที่เป็นอันตรายยังคงใช้งานได้ประมาณสองถึงสามชั่วโมงก่อนที่ npm จะถอนออก สองถึงสามชั่วโมงท่ามกลางยอดดาวน์โหลด 83 ล้านครั้งต่อสัปดาห์
บทความนี้จะอธิบายวิธีการโจมตี การตรวจจับว่าระบบของคุณถูกบุกรุกหรือไม่ และสิ่งที่ทีม API ควรเปลี่ยนแปลงเกี่ยวกับการจัดการการพึ่งพาในอนาคต
การโจมตีซัพพลายเชนของ Axios คลี่คลายลงได้อย่างไร
ไทม์ไลน์
ผู้โจมตีดำเนินการนี้อย่างแม่นยำภายในกรอบเวลา 18 ชั่วโมง:
- 30 มีนาคม, 05:57 UTC: แพ็กเกจล่อที่สะอาด
plain-crypto-js@4.2.0ถูกเผยแพร่ไปยัง npm การเผยแพร่เวอร์ชัน "สะอาด" ก่อนทำให้แพ็กเกจมีประวัติสั้นๆ ใน registry ซึ่งทำให้ดูน่าสงสัยน้อยลง - 30 มีนาคม, 23:59 UTC: เวอร์ชันที่เป็นอันตราย
plain-crypto-js@4.2.1ถูกเผยแพร่ โดยเพิ่ม hookpostinstallที่มี dropper - 31 มีนาคม, 00:21 UTC:
axios@1.14.1ถูกเผยแพร่โดยใช้บัญชีjasonsaaymanที่ถูกบุกรุก - 31 มีนาคม, 01:00 UTC:
axios@0.30.4ตามมา 39 นาทีต่อมา โดยพุ่งเป้าไปที่โครงการที่ถูกปักหมุดไว้ที่สาขา 0.x - 31 มีนาคม, ~03:15 UTC: npm ถอนการเผยแพร่ Axios ทั้งสองเวอร์ชันหลังจากรายงานจากชุมชน
- 31 มีนาคม, 04:26 UTC: npm เผยแพร่ stub ตัวยึดความปลอดภัยสำหรับ
plain-crypto-jsเพื่อป้องกันการเผยแพร่ซ้ำ
บัญชีถูกบุกรุกได้อย่างไร
ผู้โจมตีได้เข้าควบคุมบัญชี npm jasonsaayman ซึ่งเป็นผู้ดูแลหลักของ Axios พวกเขาเปลี่ยนอีเมลที่ลงทะเบียนเป็น ifstap@proton.me หลักฐานทางนิติเวชที่สำคัญ:
- การเผยแพร่ Axios ที่ถูกต้องใช้ GitHub Actions กับกลไก OIDC Trusted Publisher ของ npm เวอร์ชันที่เป็นอันตรายขาดการผูก OIDC โดยสิ้นเชิง
- ไม่มีฟิลด์
gitHeadปรากฏในการเผยแพร่ที่ถูกบุกรุก ซึ่งหมายความว่าไม่มีคอมมิต GitHub ที่สอดคล้องกัน - ผู้โจมตีใช้โทเค็นการเข้าถึง npm ที่มีอายุการใช้งานยาวนานที่ถูกขโมยเพื่อเผยแพร่ด้วยตนเองแทนที่จะผ่าน CI/CD
ความแตกต่างนี้มีความสำคัญ หากองค์กรของคุณเผยแพร่แพ็กเกจ npm การไม่มีการผูก OIDC และ CI/CD provenance ในการเผยแพร่ถือเป็นธงแดงที่ควรทำการตรวจสอบอัตโนมัติ
เทคนิคการฉีดการพึ่งพา
นี่คือสิ่งที่ทำให้การโจมตีนี้มีความละเอียดอ่อน ผู้โจมตีไม่ได้แก้ไขซอร์สโค้ดของ Axios พวกเขาเปลี่ยนบรรทัดเดียวใน package.json เพื่อเพิ่ม plain-crypto-js@^4.2.1 เป็นการพึ่งพาเวลาทำงาน แพ็กเกจนี้ไม่เคยถูกนำเข้าที่ใดในโค้ดเบสของ Axios มันมีอยู่เพื่อกระตุ้น hook postinstall ระหว่าง npm install เท่านั้น
การวิเคราะห์ไบนารียืนยันความแม่นยำในการผ่าตัด: มีเพียง package.json เท่านั้นที่แตกต่างกันระหว่างเวอร์ชัน 1.14.0 ที่สะอาดและเวอร์ชัน 1.14.1 ที่ถูกบุกรุกในทั้งหมด 86 ไฟล์ในแพ็กเกจ
เพย์โหลดที่เป็นอันตรายทำอะไร
กลไก Dropper
hook postinstall ใน plain-crypto-js ได้ดำเนินการไฟล์ที่ถูกอำพรางขนาด 4.2 KB ที่เรียกว่า setup.js มันใช้การอำพรางสองชั้น:
- ชั้นที่ 1: XOR cipher โดยใช้คีย์ที่ได้จากสตริง
"OrDeR_7077" - ชั้นที่ 2: การเข้ารหัส Base64 พร้อมการย้อนกลับตัวอักษร
เมื่อถอดรหัสแล้ว dropper จะระบุระบบปฏิบัติการโฮสต์และดำเนินการเพย์โหลดที่เฉพาะเจาะจงกับแพลตฟอร์ม
เส้นทางการโจมตีที่เฉพาะเจาะจงกับแพลตฟอร์ม
macOS:
เขียน AppleScript ไปยัง /tmp/6202033
ดำเนินการผ่าน osascript
ดาวน์โหลดเพย์โหลดไปยัง /Library/Caches/com.apple.act.mond
Windows:
คัดลอก PowerShell ไปยัง %PROGRAMDATA%\wt.exe (สิ่งตกค้างสำหรับการคงอยู่)
ดำเนินการ VBScript dropper ผ่าน cscript
Linux:
ดาวน์โหลด Python RAT ไปยัง /tmp/ld.py
ดำเนินการผ่าน nohup python3
ทั้งสามสาขาติดต่อเซิร์ฟเวอร์ควบคุมและสั่งการพร้อมกับ POST body ที่เฉพาะเจาะจงกับแพลตฟอร์ม:
- macOS:
packages.npm.org/product0 - Windows:
packages.npm.org/product1 - Linux:
packages.npm.org/product2
ความสามารถของ RAT
โทรจันเข้าถึงระยะไกลที่ถูกติดตั้งรองรับ:
- การดำเนินการคำสั่ง shell โดยพลการ
- การแจงนับและขโมยไฟล์ระบบ
- การแสดงรายการและฉีดกระบวนการ
- การฉีดไบนารีในหน่วยความจำ (การดำเนินการแบบไร้ไฟล์)
- ช่วงเวลา beacon 60 วินาทีไปยังโครงสร้างพื้นฐาน C2
พูดง่ายๆ คือ: ผู้โจมตีสามารถควบคุมเครื่องพัฒนาของคุณจากระยะไกลได้อย่างสมบูรณ์ พวกเขาสามารถอ่านไฟล์ .env ของคุณ ขโมยคีย์ API ของคุณ คัดลอกคีย์ SSH ของคุณ และเก็บเกี่ยวโทเค็นผู้ให้บริการคลาวด์
การป้องกันนิติเวช: เพย์โหลดที่ทำความสะอาดตัวเอง
หลังจากดำเนินการ dropper จะทำความสะอาดสามขั้นตอน:
- ลบ
setup.jsตัวเอง - ลบ
package.jsonที่เป็นอันตราย - เปลี่ยนชื่อ
package.md(รายงานเวอร์ชัน 4.2.0) ที่เตรียมไว้ล่วงหน้าเป็นpackage.json
สิ่งนี้สร้างชั้นการหลอกลวงที่ npm list จะรายงานเวอร์ชัน 4.2.0 แทนที่จะเป็น 4.2.1 ที่ดำเนินการเพย์โหลด นักพัฒนาที่ตรวจสอบการพึ่งพาหลังจากนั้นจะไม่เห็นสิ่งผิดปกติ
ใครอยู่เบื้องหลังการโจมตีนี้
Google Threat Intelligence Group ระบุว่าการโจมตี Axios เกิดขึ้นโดย UNC1069 ซึ่งเป็นผู้ไม่ประสงค์ดีที่ต้องสงสัยว่าเป็นชาวเกาหลีเหนือ มัลแวร์ macOS แสดงให้เห็นถึง "ความทับซ้อนอย่างมีนัยสำคัญ" กับ WAVESHAPER ซึ่งเป็นแบ็คดอร์ C++ ที่ Mandiant ติดตามในเดือนกุมภาพันธ์ 2569
กลุ่มที่ได้รับการสนับสนุนจากรัฐบาลเกาหลีเหนือมีประสบการณ์อย่างมากกับการโจมตีซัพพลายเชน พวกเขาเคยใช้เครื่องมือสำหรับนักพัฒนาที่ถูกบุกรุกเพื่อขโมยสกุลเงินดิจิทัล และการดำเนินการนี้ก็เป็นไปตามแนวทางเดียวกัน: บุกรุกเครื่องมือสำหรับนักพัฒนาที่ใช้กันอย่างแพร่หลายเพื่อเข้าถึงข้อมูลประจำตัวและโครงสร้างพื้นฐานคลาวด์ในหลายพันองค์กร
ระดับความซับซ้อนนั้นโดดเด่น การฉีดการพึ่งพาสองขั้นตอน การติดตั้ง RAT แบบหลายแพลตฟอร์ม และการทำความสะอาดเพื่อป้องกันการตรวจสอบทางนิติเวช ล้วนบ่งชี้ถึงการดำเนินการที่มีทรัพยากรดี นี่ไม่ใช่เด็กมือใหม่ที่ปล่อย cryptominer นี่คือการปฏิบัติการข่าวกรองที่มุ่งเป้าไปที่เวิร์คสเตชันของนักพัฒนา
วิธีตรวจสอบว่าคุณได้รับผลกระทบหรือไม่
ขั้นตอนที่ 1: ตรวจสอบเวอร์ชัน Axios ของคุณ
เรียกใช้สิ่งนี้ในทุกโปรเจกต์ที่ใช้ Axios:
npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
หากมีผลลัพธ์แสดงว่าโปรเจกต์ของคุณติดตั้งเวอร์ชันที่ถูกบุกรุก
ขั้นตอนที่ 2: ตรวจสอบการพึ่งพาที่เป็นอันตราย
ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENTIALLY AFFECTED"
แม้ว่า dropper จะทำความสะอาดตัวเองแล้ว การมีอยู่ของไดเรกทอรีก็ยืนยันว่าเพย์โหลดได้ทำงานแล้ว
ขั้นตอนที่ 3: ตรวจสอบหาสิ่งตกค้างของ RAT ในระบบของคุณ
macOS:
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null
Linux:
ls -la /tmp/ld.py 2>/dev/null
Windows (PowerShell):
Test-Path "$env:PROGRAMDATA\wt.exe"
ขั้นตอนที่ 4: ตรวจสอบตัวบ่งชี้เครือข่าย
บล็อกและสแกนการเชื่อมต่อไปยัง:
- โดเมน C2:
sfrclak.com - IP C2:
142.11.206.73 - URL C2:
http://sfrclak.com:8000/6202033
ขั้นตอนที่ 5: ตรวจสอบบันทึกการสร้าง CI/CD
ทบทวนการทำงานของ CI/CD pipeline ระหว่างวันที่ 31 มีนาคม 00:21 UTC ถึง 03:15 UTC การรัน npm install หรือ npm ci ในช่วงเวลานี้ที่แก้ไข Axios อาจได้รัน dropper ในสภาพแวดล้อมการสร้างของคุณ
ขั้นตอนการแก้ไขเบื้องต้นทันที
หากคุณพบตัวบ่งชี้การบุกรุกใดๆ ให้ถือว่าระบบที่ได้รับผลกระทบถูกบุกรุกโดยสมบูรณ์ นี่คือรายการลำดับความสำคัญ:
1. ลดระดับ Axios ทันที
npm install axios@1.14.0
หรือสำหรับสาขา 0.x:
npm install axios@0.30.3
2. เพิ่มการแทนที่เวอร์ชันลงใน package.json ของคุณ
ป้องกันการแก้ไขแบบเปลี่ยนผ่านไปยังเวอร์ชันที่เป็นอันตราย:
{
"overrides": {
"axios": "1.14.0"
}
}
สำหรับ Yarn:
{
"resolutions": {
"axios": "1.14.0"
}
}
3. ลบแพ็คเกจที่เป็นอันตราย
rm -rf node_modules/plain-crypto-js
4. หมุนเวียนข้อมูลประจำตัวทั้งหมด
หาก dropper ได้ทำงานบนเครื่องของคุณ ให้สันนิษฐานว่าสิ่งต่อไปนี้ถูกบุกรุก:
- โทเค็น npm
- ข้อมูลประจำตัว AWS/GCP/Azure
- คีย์ SSH
- โทเค็น GitHub
- คีย์ API ในไฟล์
.env - ข้อมูลประจำตัวฐานข้อมูล
- ความลับใดๆ ที่จัดเก็บไว้ในตัวแปรสภาพแวดล้อม
หมุนเวียนทุกอย่าง ไม่มีทางรู้ว่า RAT ขโมยอะไรไปบ้างในช่วงเวลาที่ทำงานอยู่
5. บล็อก C2 ที่ระดับเครือข่าย
เพิ่มลงในไฟล์โฮสต์หรือกฎไฟร์วอลล์ของคุณ:
echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts
6. หากพบสิ่งตกค้าง ให้สร้างเครื่องใหม่
RAT ที่มีการรันเชลล์และการเข้าถึงระบบไฟล์สามารถแก้ไขอะไรก็ได้ หากคุณพบสิ่งตกค้างจากขั้นตอนที่ 3 อย่าเชื่อถือระบบ สร้างใหม่จากสถานะที่ทราบว่าดี
การป้องกันระยะยาวสำหรับทีมพัฒนา API
ใช้ lockfiles และปักหมุดเวอร์ชันที่แน่นอน
การโจมตี Axios ใช้ประโยชน์จากช่วง semver ^ หาก package.json ของคุณระบุ "axios": "^1.14.0", npm จะแก้ไขเวอร์ชันที่เข้ากันได้ล่าสุด ซึ่งคือ 1.14.1 ในช่วงเวลาการโจมตี
{
"dependencies": {
"axios": "1.14.0"
}
}
ปักหมุดเวอร์ชันที่แน่นอน คอมมิต package-lock.json หรือ yarn.lock ของคุณเสมอ รัน npm ci แทน npm install ใน CI/CD เพื่อบังคับใช้การแก้ไข lockfile
ปิดใช้งานสคริปต์ postinstall ใน CI/CD
การโจมตีทั้งหมดขึ้นอยู่กับ hook postinstall ที่ทำงานระหว่าง npm install คุณสามารถปิดใช้งานสิ่งนี้ได้:
npm ci --ignore-scripts
สิ่งนี้จะทำให้บางแพ็กเกจที่ไม่ต้องการการคอมไพล์แบบเนทีฟหยุดทำงาน ทดสอบการสร้างของคุณก่อน จากนั้นอนุญาตสคริปต์แบบเลือกสำหรับแพ็กเกจที่ต้องการใช้ .npmrc:
ignore-scripts=true
ตรวจสอบการพึ่งพาอย่างสม่ำเสมอ
npm audit
npx socket-security/cli audit
รันสิ่งเหล่านี้ใน CI/CD เป็นตัวกรอง ช่องโหว่ที่ร้ายแรงหรือสูงควรบล็อกการสร้าง
ลดพื้นผิวการพึ่งพาไคลเอนต์ HTTP ของคุณ
คำถามที่ลึกซึ้งยิ่งขึ้นที่การโจมตีนี้ตั้งขึ้นคือ: เหตุใดขั้นตอนการทำงานการทดสอบ API ของคุณจึงต้องพึ่งพาไลบรารี HTTP ของบุคคลที่สามที่อาจถูกบุกรุก?
Apidog มีไคลเอนต์ HTTP ในตัวสำหรับการทดสอบ API, การดีบัก และเอกสารประกอบ คุณไม่จำเป็นต้องมี Axios, node-fetch หรือ got ในสแต็กการทดสอบของคุณ ไคลเอนต์ HTTP เป็นส่วนหนึ่งของแพลตฟอร์ม โดยไม่มีการพึ่งพาบุคคลที่สามที่จะถูกบุกรุก
สำหรับการทดสอบ API โดยเฉพาะ การย้ายคำขอ HTTP ของคุณไปยัง Apidog จะช่วยขจัดพื้นผิวการโจมตีทั้งหมด:
- การทดสอบ API: ใช้เครื่องมือสร้างการทดสอบแบบภาพของ Apidog แทนการเขียนสคริปต์ทดสอบที่ใช้ Axios
- การดีบัก API: ใช้ตัวตรวจสอบคำขอในตัวของ Apidog แทนโค้ดไคลเอนต์ HTTP แบบกำหนดเอง
- เซิร์ฟเวอร์จำลอง: ใช้ mock อัจฉริยะของ Apidog แทนการสร้างปลายทางจำลองด้วย Express + Axios
- การรวม CI/CD: ใช้ Apidog CLI สำหรับการทดสอบ API อัตโนมัติโดยไม่ต้องพึ่งพา HTTP ของ npm
ลองใช้ Apidog ฟรี เพื่อดูว่าการลบการพึ่งพาไลบรารี HTTP ออกจากขั้นตอนการทำงาน API ของคุณช่วยลดความเสี่ยงของซัพพลายเชนได้อย่างไร
ตรวจสอบที่มาของแพ็กเกจ
ตอนนี้ npm รองรับที่มาของแพ็กเกจผ่าน Sigstore ตรวจสอบว่าแพ็กเกจที่คุณพึ่งพาใช้สิ่งนี้หรือไม่:
npm audit signatures
เวอร์ชัน Axios ที่เป็นอันตรายขาดหลักฐาน OIDC การเผยแพร่ที่ถูกต้องจาก CI/CD pipeline จะรวมการรับรองการเข้ารหัสของแหล่งที่มาของการสร้าง หากมีเวอร์ชันใหม่ปรากฏขึ้นโดยไม่มีหลักฐาน ให้ถือว่าน่าสงสัย
สิ่งนี้มีความหมายต่อระบบนิเวศ JavaScript อย่างไร
รูปแบบความไว้วางใจพังทลายลง
รูปแบบความไว้วางใจของ npm ขึ้นอยู่กับความปลอดภัยของบัญชีผู้ดูแล การเข้าถึงข้อมูลประจำตัวที่ถูกบุกรุกเพียงครั้งเดียวทำให้ผู้โจมตีสามารถควบคุมแพ็คเกจที่ 83 ล้านโครงการติดตั้งทุกสัปดาห์ การยืนยันตัวตนสองชั้นช่วยได้ แต่โทเค็นการเข้าถึงที่มีอายุการใช้งานยาวนานยังคงถูกขโมยจากสภาพแวดล้อมการพัฒนาที่ถูกบุกรุกได้
ชุมชนกำลังหารือเกี่ยวกับการเปลี่ยนแปลงเชิงโครงสร้างหลายประการ:
- การเผยแพร่ OIDC ภาคบังคับ: กำหนดให้แพ็คเกจทั้งหมดที่มีจำนวนการดาวน์โหลดเกินเกณฑ์ต้องใช้การเผยแพร่แบบ CI/CD ที่มีโทเค็น OIDC แทนข้อมูลประจำตัวที่มีอายุการใช้งานยาวนาน
- การอนุมัติการเผยแพร่โดยสองบุคคล: กำหนดให้ผู้ดูแลคนที่สองอนุมัติการเผยแพร่สำหรับแพ็คเกจที่สำคัญ
- การกำหนดขอบเขตสิทธิ์การรันไทม์: จำกัดสิ่งที่สคริปต์
postinstallสามารถเข้าถึงได้ คล้ายกับโมเดลสิทธิ์ของ Deno
การโจมตีซัพพลายเชนไม่ชะลอตัวลง
การโจมตีครั้งนี้เกิดขึ้นภายในไม่กี่วันหลังจากเหตุการณ์ RubyGems fracture และความกังวลเกี่ยวกับการพึ่งพา PyPI ที่กำลังดำเนินอยู่ Registry ของแพ็กเกจในทุกระบบนิเวศของภาษาอยู่ภายใต้การโจมตีอย่างต่อเนื่อง นักพัฒนา API จำเป็นต้องคิดถึง dependency tree ของพวกเขาว่าเป็นพื้นผิวการโจมตี ไม่ใช่ความสะดวกสบาย
การอภิปรายใน Reddit แสดงความรู้สึกได้ดีว่า: “NPM คือจุดอ่อนที่ใหญ่ที่สุดของอินเทอร์เน็ตในปัจจุบัน และมันจะยังคงก่อให้เกิดหายนะครั้งใหญ่” ไม่ว่าคุณจะเห็นด้วยกับการพูดเกินจริงหรือไม่ก็ตาม การโจมตี Axios แสดงให้เห็นว่ารัศมีการระเบิดนั้นเป็นของจริง
การเปรียบเทียบ: แนวทางการพึ่งพาไคลเอนต์ HTTP
| แนวทาง | ความเสี่ยงซัพพลายเชน | ภาระในการบำรุงรักษา | ความสามารถในการทดสอบ |
|---|---|---|---|
| Axios + สคริปต์แบบกำหนดเอง | สูง (การพึ่งพาจากบุคคลที่สาม) | สูง (การจัดการเวอร์ชัน) | ต้องตั้งค่าด้วยตนเอง |
| Node.js native fetch | ต่ำ (สร้างขึ้นในรันไทม์) | ต่ำ | คุณสมบัติการทดสอบจำกัด |
| ไคลเอนต์ในตัวของ Apidog | ไม่มี (ไม่ขึ้นกับ npm) | ไม่มี (จัดการโดยแพลตฟอร์ม) | ทดสอบ, Mock, เอกสารเต็มรูปแบบ |
| สคริปต์ curl/httpie | ต่ำ (เครื่องมือระดับระบบ) | ปานกลาง | ระบบอัตโนมัติจำกัด |
คำถามที่พบบ่อย
ตอนนี้ Axios ปลอดภัยที่จะใช้งานแล้วหรือไม่?
ใช่ เวอร์ชัน 1.14.0 และ 0.30.3 นั้นสะอาด เวอร์ชันที่ถูกบุกรุก (1.14.1 และ 0.30.4) ถูกยกเลิกการเผยแพร่ภายในประมาณสามชั่วโมง ตรวจสอบเวอร์ชันที่คุณติดตั้งด้วย npm list axios และตรวจสอบ lockfile ของคุณเพื่อยืนยันว่าคุณอยู่ในเวอร์ชันที่ปลอดภัย
ฉันจะรู้ได้อย่างไรว่า RAT ทำงานบนเครื่องของฉันหรือไม่?
ตรวจสอบสิ่งตกค้างเฉพาะแพลตฟอร์ม: /Library/Caches/com.apple.act.mond บน macOS, /tmp/ld.py บน Linux หรือ %PROGRAMDATA%\wt.exe บน Windows นอกจากนี้ตรวจสอบว่ามี node_modules/plain-crypto-js อยู่ในโปรเจกต์ของคุณหรือไม่ dropper จะทำความสะอาดตัวเอง ดังนั้นการไม่มีสิ่งตกค้างไม่ได้หมายความว่าคุณปลอดภัยหากคุณติดตั้งเวอร์ชันที่ถูกบุกรุก
ฉันควรเลิกใช้ Axios โดยสิ้นเชิงหรือไม่?
ไม่จำเป็น Axios ยังคงเป็นไลบรารีที่ได้รับการดูแลอย่างดีและมีประวัติที่ดี แต่การโจมตีครั้งนี้ควรทำให้คุณพิจารณาว่าคุณต้องการไคลเอนต์ HTTP ของบุคคลที่สามเลยหรือไม่ Node.js 18+ มี fetch ในตัว สำหรับการทดสอบ API แพลตฟอร์มอย่าง Apidog มีไคลเอนต์ HTTP ในตัวที่ช่วยขจัดความพึ่งพานี้
ฉันจะป้องกันการโจมตีซัพพลายเชนในโปรเจกต์ของฉันได้อย่างไร?
ปักหมุดเวอร์ชันการพึ่งพาที่แน่นอน, คอมมิต lockfiles, รัน npm ci --ignore-scripts ใน CI/CD, ตรวจสอบการพึ่งพาอย่างสม่ำเสมอ, ตรวจสอบที่มาของแพ็กเกจด้วย npm audit signatures, และลดขนาดของ dependency tree ของคุณ พิจารณาย้ายขั้นตอนการทำงานการทดสอบ API ไปยังแพลตฟอร์มแบบรวมที่ไม่อาศัยแพ็กเกจ npm สำหรับการสื่อสาร HTTP
การโจมตีครั้งนี้เกี่ยวข้องกับการรั่วไหลของซอร์สโค้ด Claude Code หรือไม่?
ทั้งสองเหตุการณ์เกิดขึ้นในวันเดียวกัน (31 มีนาคม 2569) แต่ไม่เกี่ยวข้องกัน การโจมตี Axios เป็นการบุกรุกซัพพลายเชนโดยเจตนาโดยผู้ไม่ประสงค์ดีที่ได้รับการสนับสนุนจากรัฐบาล การรั่วไหลของ Claude Code เกิดจากข้อผิดพลาดของเครื่องมือสร้าง Bun ที่ส่ง source maps ในการผลิต การเกิดขึ้นพร้อมกันโดยบังเอิญนี้ได้กระตุ้นการสนทนาเกี่ยวกับความปลอดภัยของ registry ของ npm โดยรวม
ใครอยู่เบื้องหลังการโจมตี Axios?
Google Threat Intelligence Group ระบุว่าการโจมตีนี้เกิดจาก UNC1069 ซึ่งเป็นผู้ไม่ประสงค์ดีที่ต้องสงสัยว่าเป็นชาวเกาหลีเหนือ มัลแวร์ macOS มีความทับซ้อนอย่างมีนัยสำคัญกับ WAVESHAPER ซึ่งเป็นแบ็คดอร์ที่ Mandiant ติดตาม กลุ่มเกาหลีเหนือมีประสบการณ์อย่างมากกับการโจมตีซัพพลายเชน โดยปกติจะมุ่งเป้าไปที่ข้อมูลประจำตัวของนักพัฒนาและโครงสร้างพื้นฐานของสกุลเงินดิจิทัล
มีนักพัฒนาได้รับผลกระทบกี่ราย?
เวอร์ชันที่เป็นอันตรายใช้งานอยู่ประมาณสองถึงสามชั่วโมง ด้วยยอดดาวน์โหลด 83 ล้านครั้งต่อสัปดาห์ ความเสี่ยงที่อาจเกิดขึ้นนั้นมีนัยสำคัญ npm ยังไม่ได้เผยแพร่จำนวนผลกระทบอย่างเป็นทางการ การตรวจจับรันไทม์ของ StepSecurity ยืนยันว่า dropper ติดต่อ C2 ภายใน 1.1 วินาทีหลังจาก npm install เริ่มทำงาน ก่อนที่การแก้ไขการพึ่งพาจะเสร็จสมบูรณ์
Apidog สามารถช่วยป้องกันการโจมตีซัพพลายเชนได้หรือไม่?
Apidog ช่วยลดช่องโหว่การโจมตีที่สำคัญอย่างหนึ่งโดยการจัดเตรียมไคลเอนต์ HTTP ในตัวสำหรับการทดสอบ API, การดีบัก และเอกสารประกอบ คุณไม่จำเป็นต้องติดตั้ง Axios, node-fetch หรือไลบรารี HTTP อื่นๆ ในขั้นตอนการทำงานการทดสอบของคุณ ซึ่งจะช่วยลดพื้นผิวการพึ่งพา npm ของคุณและขจัดความเสี่ยงที่แพ็คเกจไคลเอนต์ HTTP ที่ถูกบุกรุกจะส่งผลกระทบต่อกระบวนการพัฒนา API ของคุณ
ประเด็นสำคัญ
- การโจมตีซัพพลายเชนของ Axios ประนีประนอมยอดดาวน์โหลดกว่า 83 ล้านครั้งต่อสัปดาห์ผ่านบัญชีผู้ดูแลที่ถูกขโมยเพียงบัญชีเดียว
- RAT กำหนดเป้าหมายทุกแพลตฟอร์ม (macOS, Windows, Linux) และขโมยข้อมูลประจำตัว, คีย์ SSH และโทเค็นคลาวด์
- ตรวจสอบระบบของคุณทันทีโดยใช้ขั้นตอนการตรวจจับข้างต้น
- ปักหมุดเวอร์ชันการพึ่งพาที่แน่นอนและปิดใช้งานสคริปต์ postinstall ใน CI/CD
- ลดพื้นผิวการพึ่งพาไคลเอนต์ HTTP ของคุณโดยใช้เครื่องมือในตัวเช่น Apidog สำหรับการทดสอบ API
- ความปลอดภัยของ Registry ของแพ็คเกจเป็นปัญหาระบบที่ส่งผลกระทบต่อ npm, PyPI และ RubyGems
การโจมตี Axios เป็นสัญญาณเตือนภัย ทุกการพึ่งพาใน node_modules ของคุณคือการตัดสินใจเรื่องความไว้วางใจ ตรวจสอบให้แน่ใจว่าคุณตัดสินใจเหล่านั้นอย่างจงใจ ไม่ใช่โดยค่าเริ่มต้น
