1 คะแนน โดย GN⁺ 2025-11-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Shai Hulud 2.0 โจมตีระบบนิเวศ npm อีกครั้ง และทำให้แพ็กเกจของโปรเจ็กต์สำคัญอย่าง Zapier, ENS Domains, AsyncAPI, PostHog, Postman ติดมัลแวร์
  • มัลแวร์จะรันอัตโนมัติระหว่างขั้นตอนติดตั้งเพื่อ ขโมยข้อมูลลับจากเครื่องนักพัฒนาและสภาพแวดล้อมคลาวด์
  • บนระบบที่ติดเชื้อ มันใช้ TruffleHog ค้นหา API key, token, รหัสผ่าน ฯลฯ แล้วอัปโหลดไปยัง GitHub repository แบบสาธารณะ
  • การโจมตีครั้งนี้ขยายวงกว้างกว่าครั้งก่อน โดยมี แพ็กเกจติดเชื้อสูงสุด 100 รายการ และมี ฟังก์ชันลบไฟล์ใน home directory เมื่อการยืนยันตัวตนล้มเหลว
  • นี่คือการโจมตีซัพพลายเชนขนาดใหญ่ที่คุกคามระบบความเชื่อถือของ npm ecosystem และตอกย้ำว่า ทุกทีมพัฒนาต้องตรวจสอบและเปลี่ยนข้อมูลลับ

ภาพรวมแคมเปญ Shai-Hulud

  • Shai-Hulud คือ มัลแวร์แบบเวิร์มที่แพร่กระจายตัวเองในระบบนิเวศ npm และสามารถลุกลามได้อย่างรวดเร็วผ่านสภาพแวดล้อมการพัฒนาที่ติดเชื้อ
    • เมื่อเครื่องติดเชื้อ มันจะใช้ TruffleHog ค้นหา API key, token และข้อมูลลับที่เปิดเผยอยู่
    • ข้อมูลที่รวบรวมได้จะถูกส่งไปยัง GitHub repository แบบสาธารณะ จากนั้นจึงเผยแพร่ต่อด้วยการโพสต์แพ็กเกจอันตรายใหม่บน npm
  • ผู้โจมตีตั้งชื่อการโจมตีรอบนี้ว่า “Second Coming”
  • การโจมตีกลับมาอีกครั้งในช่วงที่ npm ประกาศว่า จะยกเลิก token แบบเก่าในวันที่ 9 ธันวาคม

ไทม์ไลน์ของการโจมตี

  • 27 สิงหาคม: เปิดเผยรายงานแคมเปญ S1ngularity
  • 16 กันยายน: เกิดการโจมตี Shai-Hulud ครั้งแรก
  • 18 กันยายน: มีการเผยแพร่การวิเคราะห์ทางเทคนิคและพฤติกรรมของ payload
  • 24 พฤศจิกายน: เกิด การโจมตีครั้งที่สอง (Second Coming) ก่อน npm ยกเลิก token ไม่นาน

การเปลี่ยนแปลงของรูปแบบการโจมตี

  • การโจมตีครั้งนี้ติดตั้ง Bun runtime ผ่านไฟล์ setup_bun.js แล้วจึงรัน bun_environment.js
  • มีการสร้าง GitHub repository ที่ใช้ชื่อแบบสุ่ม เพื่ออัปโหลดข้อมูลที่ขโมยมา
  • จำนวนแพ็กเกจเป้าหมายที่ติดเชื้อเพิ่มจาก 20 เป็น 100 รายการ
  • หากการยืนยันตัวตนของ GitHub หรือ npm ล้มเหลว จะมี ฟังก์ชันลบ home directory ของผู้ใช้ทั้งหมด

แพ็กเกจที่ติดเชื้อ

  • มี npm package ติดเชื้อรวม 492 รายการ และมียอดดาวน์โหลดต่อเดือนรวม 132 ล้านครั้ง
  • โปรเจ็กต์ที่ได้รับผลกระทบหลัก: Zapier, ENS Domains, AsyncAPI, PostHog, Postman, Browserbase
  • ตัวอย่างแพ็กเกจ: @zapier/zapier-sdk, @ensdomains/ensjs, @asyncapi/cli, posthog-js, @postman/pm-bin-linux-x64 เป็นต้น

การรั่วไหลของข้อมูลลับ

  • มัลแวร์อัปโหลดข้อมูลลับไปยัง GitHub repository ที่มีคำอธิบายว่า “Sha1-Hulud: The Second Coming”
  • ขณะนี้ยืนยันได้แล้วว่ามี repository มากกว่า 26,300 แห่ง ที่ถูกเปิดเผย

ความผิดพลาดของผู้โจมตี

  • แพ็กเกจบางส่วนมีเพียง setup_bun.js แต่ไม่มี bun_environment.js ทำให้เวิร์มไม่สามารถทำงานได้ครบถ้วน
  • ส่งผลให้ ขอบเขตการแพร่กระจายของการโจมตีถูกจำกัด

เส้นทางการติดเชื้อและจุดเริ่มต้นของการติดเชื้อ

  • การติดเชื้อครั้งแรกเริ่มต้นเมื่อ 24 พฤศจิกายน 2025 03:16:26 GMT+0 ใน go-template และ 36 แพ็กเกจที่เกี่ยวข้องกับ AsyncAPI
  • จากนั้นจึงแพร่ไปยัง PostHog (04:11:55) และ Postman (05:09:25) ตามลำดับ
  • มีการยืนยันโค้ดที่ถูกเผยแพร่หลังจาก สร้าง branch อันตรายใน AsyncAPI CLI repository

ผลกระทบที่อาจเกิดขึ้น

  • มันรันอัตโนมัติระหว่างการติดตั้ง จึงสามารถเข้าถึง สภาพแวดล้อม local ของนักพัฒนา, build system และ credentials บนคลาวด์
  • ข้อมูลลับที่ถูกขโมยอาจนำไปสู่ การยึดบัญชีเพิ่มเติมและการเผยแพร่แพ็กเกจอันตราย
  • เป็น ภัยคุกคามร้ายแรงต่อความปลอดภัยของซัพพลายเชนที่ตั้งอยู่บนความเชื่อถือของ npm ecosystem

คำแนะนำในการรับมือด้านความปลอดภัย

  • ตรวจสอบ npm dependency ที่เกี่ยวข้องกับ Zapier และ ENS ทั้งหมด
  • เปลี่ยนข้อมูลลับทั้งหมดของ GitHub, npm, คลาวด์ และ CI/CD
  • ค้นหา repository บน GitHub ที่มีคำอธิบายว่า “Sha1-Hulud: The Second Coming”
  • ปิดใช้งาน npm postinstall script ในสภาพแวดล้อม CI
  • ตรึงเวอร์ชันแพ็กเกจและเปิดใช้ MFA รวมถึงใช้เครื่องมืออย่าง Safe-Chain เพื่อบล็อกแพ็กเกจอันตราย

บทสรุป

  • Shai-Hulud 2.0 คือ การโจมตีซัพพลายเชน npm ครั้งใหญ่ที่เกิดขึ้นซ้ำอีกครั้ง โดย
    แพ็กเกจยอดนิยมหลายร้อยรายการและ GitHub repository หลายพันแห่ง ได้รับผลกระทบ
  • ทุกทีมพัฒนาควรดำเนินการ ตรวจสอบ dependency, เปลี่ยนข้อมูลลับ และบล็อกสคริปต์ติดตั้งอัตโนมัติ โดยทันที

1 ความคิดเห็น

 
GN⁺ 2025-11-25
ความเห็นจาก Hacker News
  • ควรพูดถึง Bubblewrap(bwrap) เครื่องมือนี้สามารถกำจัดเวกเตอร์การโจมตีส่วนใหญ่ที่อาจเกิดขึ้นในสภาพแวดล้อม npm/node ได้ หรืออย่างน้อยก็ จำกัดความเสียหายเมื่อมีการรันโค้ดตามอำเภอใจ
    มันไม่ใช่วิธีแก้ที่สมบูรณ์แบบ แต่คิดว่าเมื่อใช้ร่วมกับสคริปต์ wrapper ง่าย ๆ แล้ว ดีกว่าคอนเทนเนอร์ rootless Podman มาก
    ลิงก์ GitHub ของ Bubblewrap

  • แชร์สคริปต์ที่เขียนด้วย Python ซึ่งจะช่วยตรวจสอบว่าในรีโพซิทอรีของฉันมี แพ็กเกจที่เสียหายอยู่ในไฟล์ lock ของ pnpm หรือ npm หรือไม่
    ลิงก์สคริปต์

  • ตอนแรกดูเหมือนโพสต์ซ้ำ (Dup) แต่จริง ๆ แล้วเป็นคนละบทความ
    ลิงก์ที่เกี่ยวข้อง

    • อธิบายว่าได้ รวม คอมเมนต์ที่เกี่ยวข้องเข้าด้วยกันแล้ว แม้ลิงก์จะต่างกัน แต่ถ้าหัวข้อสนทนาโดยสาระเหมือนกันก็เข้าเกณฑ์การรวม และเพราะลิงก์ที่สองมีข้อมูลเพิ่มเติมจึงแสดงไว้ด้านบนของต้นฉบับด้วย
    • กล่าวว่าบทความนี้มี ข้อมูลเพิ่มเติม ค่อนข้างมาก
    • เสนอว่า ถ้าเป็นการส่งลิงก์เดิมซ้ำให้ใช้ “Dup” แต่ถ้าเป็นคนละลิงก์ที่พูดถึงเหตุการณ์เดียวกันให้ใช้ “See also”
    • ย้ำว่าไม่ใช่โพสต์ซ้ำ แต่เป็น บทความคนละชิ้น ที่พูดถึงเหตุการณ์เดียวกัน
    • ยก Shai-Hulud Returns: Over 300 NPM Packages Infected (helixguard.ai) มาให้อ้างอิงเพิ่มเติม
  • แจ้งว่าการสนทนาโพสต์ซ้ำกำลังดำเนินอยู่ ที่นี่

  • ชี้ว่ามี คำสะกดผิด ในชื่อเรื่อง ปัจจุบันชื่อบน HN คือ

    SHA1-Hulud the Second Comming – Postman, Zapier, PostHog All Compromised via NPM
    แต่ชื่อที่ถูกต้องคือ Shai-Hulud

    • แต่ชื่อรีโพซิทอรีที่อัปโหลดข้อมูลลับจริง ๆ คือ Sha1-Hulud: The Second Coming จึงน่าจะทำให้เกิดความสับสน
    • ตัวเวิร์มเองกำลังโพสต์ความลับบน GitHub ในชื่อ sha1-hulud
      ลิงก์ค้นหาที่เกี่ยวข้องบน GitHub
    • มีความเห็นด้วยว่า “coming” ก็ควรสะกดด้วย m ตัวเดียว และถามว่าอาจเป็นการเล่นคำโดยตั้งใจหรือไม่
    • บอกว่าไม่เข้าใจเหตุผลที่ถูกกดโหวตลบ พร้อมอธิบายว่าการโจมตีจริงไม่ได้เกี่ยวข้องกับอัลกอริทึม SHA1 และชื่อนี้ก็ ไม่ได้ตั้งใจล้อเลียนแบบนั้น