การโจมตีห่วงโซ่อุปทานทำให้ npm ต้องหยุดชะงักครั้งใหญ่: บัญชีผู้ดูแล axios ถูกขโมย ยอดดาวน์โหลดรายสัปดาห์ 300 ล้านครั้งทั้งหมดประสบปัญหา

MarketWhisper

供應鏈攻擊重挫npm

สถาบันวิจัยความปลอดภัย Socket ตรวจพบว่าแพ็กเกจหลักของ npm อย่าง axios ถูกโจมตีแบบห่วงโซ่อุปทานที่กำลังใช้งานอยู่เมื่อวันที่ 31 มีนาคม ผู้โจมตีได้เจาะบัญชี npm ของ jasonsaayman ผู้ดูแลหลักของ axios เผยแพร่เวอร์ชันที่เป็นอันตราย และแทรกแพ็กเกจการพึ่งพาที่เป็นอันตราย เพื่อนำไปใช้ในการปล่อยโทรจันการเข้าถึงระยะไกลแบบข้ามแพลตฟอร์ม (RAT) โดยมีเป้าหมายโจมตีระบบปฏิบัติการ macOS, Windows และ Linux

การวิเคราะห์ห่วงโซ่การโจมตี: ตั้งแต่การบุกรุกบัญชีไปจนถึงกระบวนการทำลายตัวเองของ RAT อย่างครบถ้วน

axios供應鏈攻擊 (แหล่งที่มา: Socket)

เหตุการณ์นี้เป็นการโจมตีแบบห่วงโซ่อุปทานหลายขั้นตอนที่วางแผนอย่างรอบคอบ ผู้โจมตีเริ่มจากการบุกรุกบัญชีของผู้ดูแล แล้วเปลี่ยนอีเมลเป็น ifstap@proton.me จากนั้นจึงใช้ข้อมูลรับรองการเข้าถึง npm ที่ถูกขโมยไปเผยแพร่เวอร์ชันที่เป็นอันตรายด้วยตนเอง โดยหลีกเลี่ยงกระบวนการเผยแพร่ที่ถูกต้องของ axios ซึ่งใช้ GitHub Actions + OIDC Trusted Publisher อย่างสิ้นเชิง เวอร์ชันที่เป็นอันตรายทั้งสองไม่มีบันทึกการคอมมิต แท็ก หรือการเผยแพร่ที่สอดคล้องกันในคลัง GitHub

งานเตรียมของผู้โจมตีก็ละเอียดเช่นกัน: ควบคุมอีกบัญชีหนึ่ง (nrwise, nrwise@proton.me) ซึ่งเผยแพร่เวอร์ชันหลอกที่สะอาด plain-crypto-js@4.2.0 ก่อนหน้าไปประมาณ 18 ชั่วโมงเพื่อสร้างประวัติ จากนั้นจึงเผยแพร่เวอร์ชันที่เป็นอันตราย 4.2.1 ในวันที่ 30 มีนาคม 23:59 UTC

หลังจาก hook postinstall ที่เป็นอันตรายถูกรัน ตัวปล่อย RAT (setup.js) จะเชื่อมต่อไปยังเซิร์ฟเวอร์คำสั่งและควบคุม sfrclak[.]com:8000 เพื่อดึงเพย์โหลดเฉพาะแพลตฟอร์ม เมื่อเสร็จสิ้นแล้วจะทำลายตัวเองและแทนที่ package.json ด้วยสแตบที่สะอาด ทำให้การตรวจสอบภายหลังไม่สามารถพบร่องรอยการติดเชื้อได้ในไดเรกทอรี node_modules

ตัวชี้วัดทางเทคนิคที่สำคัญของการโจมตี (IOC)

เวอร์ชันของแพ็กเกจที่เป็นอันตราย:axios@1.14.1、axios@0.30.4、plain-crypto-js@4.2.1

เซิร์ฟเวอร์ C2:sfrclak[.]com / 142.11.206.73 / [.]com:8000

ร่องรอยการติดเชื้อบน macOS:/Library/Caches/com.apple.act.mond

ร่องรอยการติดเชื้อบน Windows:%PROGRAMDATA%\wt.exe、%TEMP%\6202033.vbs

ร่องรอยการติดเชื้อบน Linux:/tmp/ld.py

บัญชีของผู้โจมตี:jasonsaayman(ถูกบุกรุกแล้ว)、nrwise(บัญชีที่ผู้โจมตีก่อตั้ง)

แนวทางตอบสนองฉุกเฉิน: การยืนยันการได้รับผลกระทบและขั้นตอนการแก้ไข

เนื่องจากตัวปล่อยที่เป็นอันตรายจะทำลายตัวเองหลังการทำงาน จึงไม่สามารถยืนยันการติดเชื้อได้โดยตรวจสอบไดเรกทอรี node_modules วิธีที่ถูกต้องคือการตรวจสอบ lockfile โดยตรง (package-lock.json หรือ yarn.lock) ว่ามีบันทึกเวอร์ชันของ axios@1.14.1 หรือ axios@0.30.4 หรือไม่

ย้อนกลับไปใช้เวอร์ชันที่ปลอดภัย: ผู้ใช้ 1.x ให้ลดลงเป็น axios@1.14.0; ผู้ใช้ 0.x ให้ลดลงเป็น axios@0.30.3 และหลังจากนั้นให้ลบไดเรกทอรี plain-crypto-js ออกจาก node_modules แล้วติดตั้งการพึ่งพาใหม่อีกครั้ง

หากพบร่องรอยการติดเชื้อของ RAT ใดๆ ในระบบ (com.apple.act.mond、wt.exe、ld.py) ห้ามพยายามล้างออกในที่เดิม ควรสร้างระบบใหม่จากสถานะที่ทราบว่าเป็นปกติ และทำการหมุนเวียน (rotate) ข้อมูลรับรองที่อาจถูกเปิดเผยทันที รวมถึงโทเค็น npm, AWS access key, SSH private key, key สำหรับ CI/CD และค่าต่างๆ ในไฟล์ .env

สำหรับนักพัฒนาในด้านสกุลเงินดิจิทัลและ Web3 axios คือไลบรารี HTTP หลักที่ใช้กันอย่างแพร่หลายในส่วนหน้า (frontend) ของโปรโตคอล DeFi เครื่องมือจัดการสินทรัพย์คริปโต และบริการสำหรับค้นหาข้อมูลบนเชน สภาพแวดล้อมการพัฒนาที่ถูกติดเชื้ออาจทำให้กุญแจส่วนตัวของวอลเล็ต วลีช่วยจำ หรือ API key รั่วไหลไปยังผู้โจมตี จึงแนะนำให้ตรวจสอบและหมุนเวียนข้อมูลรับรองที่ละเอียดอ่อนทั้งหมดเป็นลำดับความสำคัญ

คำถามที่พบบ่อย

จะยืนยันได้อย่างไรว่าติดตั้ง axios เวอร์ชันที่ได้รับผลกระทบหรือไม่?

เนื่องจากตัวปล่อยที่เป็นอันตรายจะทำลายตัวเองหลังการทำงาน จึงไม่สามารถยืนยันการติดเชื้อได้ด้วยการตรวจสอบไดเรกทอรี node_modules ควรตรวจสอบ lockfile โดยตรงว่ามีบันทึกของ axios@1.14.1 หรือ axios@0.30.4 หรือไม่ และตรวจสอบด้วยว่าไดเรกทอรี plain-crypto-js มีอยู่ใน node_modules หรือไม่ สามารถเรียกใช้ npm list axios หรือค้นหาสตริงเวอร์ชันโดยตรงใน lockfile

การโจมตีแบบห่วงโซ่อุปทานครั้งนี้ส่งผลกระทบเฉพาะต่อผู้พัฒนาสกุลเงินคริปโตและ Web3 อย่างไร?

axios คือไลบรารี HTTP ที่ใช้กันทั่วไปในแอปพลิเคชันส่วนหน้า (frontend) แบบ Web3 และส่วนติดต่อของโปรโตคอล DeFi สภาพแวดล้อมการพัฒนาที่ถูกติดเชื้ออาจทำให้ข้อมูลรับรองที่ละเอียดอ่อน เช่น private key, seed phrase, API key ของ exchange หรือ CI/CD configuration เปิดเผยต่อผู้โจมตี ดังนั้นผู้พัฒนาที่เกี่ยวข้องควรให้ความสำคัญกับการตรวจสอบและหมุนเวียนข้อมูลรับรองที่เกี่ยวข้องกับคริปโตทั้งหมดที่อาจถูกเปิดเผย

จะป้องกันการโจมตีแบบห่วงโซ่อุปทานของ npm ในอนาคตได้อย่างไร?

มาตรการป้องกันหลักได้แก่: ใน CI/CD ให้ใช้คำสั่ง npm ci --ignore-scripts เพื่อปิดใช้งาน postinstall hook เสมอ ทำให้การอ้างอิงเวอร์ชันถูกล็อกสำหรับแพ็กเกจที่สำคัญ ตรวจสอบบันทึกการเปลี่ยนแปลงของ lockfile อย่างสม่ำเสมอ และติดตั้งเครื่องมืออย่าง Socket, Aikido เพื่อทำการตรวจสอบแบบเรียลไทม์สำหรับมัลแวร์ที่เป็นอันตรายในแพ็กเกจการพึ่งพา

news.article.disclaimer
แสดงความคิดเห็น
0/400
ไม่มีความคิดเห็น