TL; DR
Shai-Hulud 3.0 คือวิวัฒนาการล่าสุดของมัลแวร์ npm ชื่อ shai-hulud หนอนห่วงโซ่อุปทานที่แพร่พันธุ์ได้เอง การใช้แพ็กเกจ npm ในทางที่ผิดเพื่อขโมยข้อมูลประจำตัว แพร่กระจายโดยอัตโนมัติ และบุกรุกระบบ CI/CD สภาพแวดล้อม แตกต่างจากคลื่นลูกก่อนๆ Shai-Hulud 3.0 ปรับปรุงตรรกะการแพร่กระจาย กำหนดเป้าหมายไปที่ไลบรารีฟรอนต์เอนด์ยอดนิยม และเร่งการติดเชื้อผ่านการใช้โทเค็นของผู้ดูแลระบบในทางที่ผิด
ด้วยเหตุนี้ มัลแวร์ shai-hulud จึงพิสูจน์อีกครั้งว่า การโจมตีห่วงโซ่อุปทาน npm ในยุคปัจจุบันไม่ได้อาศัยช่องโหว่ Zero-day อีกต่อไป แต่พึ่งพาการทำงานอัตโนมัติ การใช้ความไว้วางใจในทางที่ผิด และขั้นตอนการทำงานของนักพัฒนา
Shai-Hulud 3.0 คืออะไร?
Shai-Hulud 3.0 เป็นคลื่นลูกที่สามที่ได้รับการยืนยันแล้วของแคมเปญมัลแวร์ npm ชื่อ shai-hulud ต่อจากเวิร์ม Shai-Hulud รุ่นแรก และการระบาดครั้งใหญ่ของ Shai-Hulud 2.0
อย่างไรก็ตาม เวอร์ชันนี้ไม่ได้นำเสนอช่องโหว่ใหม่ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง แต่เป็นการปรับปรุงประสิทธิภาพ การพรางตัว และการกำหนดเป้าหมาย กล่าวอีกนัยหนึ่ง Shai-Hulud 3.0 ปรับปรุงรูปแบบการโจมตีห่วงโซ่อุปทานให้ดียิ่งขึ้น แทนที่จะคิดค้นรูปแบบใหม่ทั้งหมด
ที่สำคัญที่สุดคือ มัลแวร์ยังคงทำงานในลักษณะของเวิร์ม ไม่ใช่ในรูปแบบของแพ็กเกจมัลแวร์ที่แพร่กระจายเพียงครั้งเดียว
เหตุใด Shai-Hulud 3.0 จึงมีความสำคัญต่อความปลอดภัยของ npm
เมื่อมองแวบแรก Shai-Hulud 3.0 อาจดูเหมือน "แค่แพ็กเกจ npm ที่เป็นอันตรายอีกตัวหนึ่ง" อย่างไรก็ตาม การสันนิษฐานเช่นนั้นกลับเป็นเหตุผลที่ทำให้แคมเปญนี้ประสบความสำเร็จ
เนื่องจากระบบนิเวศของ npm พึ่งพาปัจจัยเหล่านี้เป็นอย่างมาก:
- ความไว้วางใจโดยปริยาย
- การติดตั้งอัตโนมัติ
- ข้อมูลประจำตัวผู้ดูแลระบบ
- CI/CD pipelines
โทเค็นที่ถูกบุกรุกเพียงตัวเดียวสามารถลุกลามบานปลายกลายเป็นการระบาดของมัลแวร์ในห่วงโซ่อุปทาน npm ได้อย่างรวดเร็ว
ด้วยเหตุนี้ มัลแวร์ shai-hulud จึงไม่จำเป็นต้องใช้ช่องโหว่ มันใช้กระบวนการทำงานปกติเป็นอาวุธแทน
ช่องทางการโจมตีของ Shai-Hulud 3.0: มัลแวร์ npm แพร่กระจายได้อย่างไร
การติดเชื้อเริ่มต้นผ่านแพ็กเกจ npm ที่เป็นอันตราย
มัลแวร์ shai-hulud npm เข้าสู่ระบบนิเวศผ่านแพ็กเกจที่ถูกดัดแปลงเป็นโทรจัน ซึ่งเผยแพร่ภายใต้บัญชีผู้ดูแลที่ถูกต้องหรือบัญชีผู้ดูแลที่ถูกบุกรุก
ในการระบาดของ Shai-Hulud เวอร์ชัน 3.0 นักวิจัยพบการติดเชื้อผ่านทางส่วนประกอบที่นิยมใช้กันทั่วไป รวมถึงแพ็กเกจที่เน้นการใช้งานฝั่ง frontend เช่น:
เนื่องจากแพ็กเกจเหล่านี้มีลำดับความสัมพันธ์สูงในกราฟการพึ่งพา การติดตั้งเพียงครั้งเดียวจึงกระจายไปยังโปรเจกต์ต่างๆ ได้อย่างรวดเร็ว
การเก็บรวบรวมใบรับรองและการเพาะเลี้ยงหนอน
เมื่อติดตั้งแล้ว Shai-Hulud 3.0 จะเรียกใช้สคริปต์วงจรชีวิตที่เป็นอันตรายระหว่างการติดตั้ง install or postinstall.
ในขั้นตอนนี้ มัลแวร์มีลักษณะดังนี้:
- สแกนไฟล์ในเครื่องและตัวแปรสภาพแวดล้อม
- ดึงโทเค็น npm และข้อมูลรับรอง GitHub
- ระบุแหล่งเก็บข้อมูลและแพ็กเกจที่สามารถเข้าถึงได้
ดังนั้น การติดเชื้อจึงเปลี่ยนจากทันทีจาก การประนีประนอมในระดับท้องถิ่น ไปยัง การแพร่กระจายในวงกว้างของระบบนิเวศ.
การเผยแพร่ซ้ำอัตโนมัติในพอร์ตโฟลิโอของผู้ดูแลระบบ
หลังจากเก็บรวบรวมข้อมูลประจำตัวแล้ว shai-hulud npm malware โปรแกรมจะแสดงรายการแพ็กเกจทั้งหมดที่เป็นของผู้ดูแลระบบที่ถูกบุกรุกโดยอัตโนมัติ
จากนั้นก็เกิดเหตุการณ์ดังนี้:
- แทรกโค้ดที่เป็นอันตรายเข้าไปในเวอร์ชันใหม่
- เผยแพร่เวอร์ชันเหล่านั้นซ้ำโดยอัตโนมัติ
- เปลี่ยนเหยื่อแต่ละรายให้กลายเป็นจุดกระจายสินค้าใหม่
เป็นผลให้ โทเค็นที่ถูกขโมยเพียงอันเดียวสามารถแพร่เชื้อไปยังแพ็กเกจ npm หลายสิบหรือหลายร้อยแพ็กเกจได้ภายในเวลาไม่กี่ชั่วโมง.
ไช่ฮูลุด 3.0 เทียบกับคลื่นลูกก่อนหน้า
มีอะไรเปลี่ยนแปลงใน Shai-Hulud 3.0 บ้าง?
แม้ว่ากลไกหลักๆ จะยังคงคุ้นเคยอยู่ก็ตาม ชัยฮูลุด 3.0 นำเสนอการปรับปรุงที่สำคัญหลายประการ
ที่โดดเด่นที่สุดคือ:
- ตรรกะการแพร่กระจายที่เร็วขึ้น
- โครงสร้างเพย์โหลดที่สะอาดกว่า
- ผสานเข้ากับการอัปเดตแพ็กเกจที่ถูกต้องได้ดียิ่งขึ้น
- ลดเสียงรบกวนเมื่อเทียบกับ Shai-Hulud 2.0
ด้วยเหตุนี้ การตรวจจับที่อาศัยเพียงชื่อเสียงหรือรหัส CVE จึงไม่มีประสิทธิภาพ
| แง่มุม | ชัยฮูลุด 2.0 | ชัยฮูลุด 3.0 |
|---|---|---|
| เวกเตอร์การติดเชื้อเบื้องต้น | แพ็กเกจ npm ที่เป็นอันตรายซึ่งมีสคริปต์วงจรชีวิตก่อนการติดตั้ง | แพ็กเกจ npm ที่เป็นอันตรายใช้ประโยชน์จากไลบรารีที่มีชื่อเสียงและเส้นทางการอัปเดตที่น่าเชื่อถือ |
| เป้าหมายหลัก | ระบบนิเวศ npm และ CI/CD pipelines | ระบบนิเวศ npm ที่มุ่งเน้นที่เครื่องของนักพัฒนาและผู้ใช้งานปลายทาง |
| กลไกการแพร่กระจาย | การขโมยข้อมูลประจำตัว ตามด้วยการเผยแพร่แพ็กเกจซ้ำโดยอัตโนมัติ | การนำข้อมูลประจำตัวกลับมาใช้ซ้ำ บวกกับการใช้ประโยชน์จากความไว้วางใจในความสัมพันธ์ เพื่อขยายขอบเขตการเข้าถึงได้เร็วขึ้น |
| การละเมิดรันไทม์ | การติดตั้งรันไทม์ของ Bun แบบทันที | การนำรันไทม์ Node.js ที่มีอยู่และเส้นทางการดำเนินการที่เชื่อถือได้มาใช้ซ้ำ |
| CI/CD ใช้ผิดวิธี | เวิร์กโฟลว์ GitHub Actions ที่ซ่อนอยู่ และรันเนอร์แบบโฮสต์เอง | ลดลง CI/CD เสียงรบกวน เน้นการดำเนินการในระดับแพ็กเกจอย่างแนบเนียนมากขึ้น |
| พฤติกรรมของเพย์โหลด | เพย์โหลด JavaScript ขนาดใหญ่ที่เข้ารหัสลับและการสแกนสภาพแวดล้อม | เพย์โหลดขนาดเล็กกว่า เน้นเป้าหมายเฉพาะเจาะจง โดยมุ่งเน้นที่การคงอยู่และการแพร่กระจาย |
| การกำหนดเป้าหมายข้อมูลประจำตัว | โทเค็น GitHub, โทเค็น npm, ข้อมูลรับรองระบบคลาวด์, รหัสลับ CI | เป้าหมายข้อมูลประจำตัวเหมือนเดิม แต่สามารถนำกลับมาใช้ใหม่ได้เร็วขึ้น และมีการรั่วไหลของข้อมูลน้อยลงจนมองเห็นได้ยากขึ้น |
| เสียงรบกวนในการทำงาน | เสียงดังมาก: การสร้าง repository จำนวนมาก, การแทรกเวิร์กโฟลว์, การอัปโหลดจำนวนมาก | สัญญาณรบกวนต่ำลง: มีสิ่งแปลกปลอมให้เห็นน้อยลง ตรวจจับได้ยากขึ้นด้วยการตรวจสอบด้วยตนเอง |
| รัศมีการชน | มีขนาดใหญ่แต่สามารถตรวจจับได้เนื่องจากขนาดและสิ่งแปลกปลอม | อาจมีขนาดใหญ่กว่านี้เนื่องจากการลักลอบนำเข้าและการใช้แพ็กเกจที่น่าเชื่อถือในทางที่ผิด |
| การท้าทายเชิงรับ | การหยุด CI/CD การละเมิดและการรั่วไหลของข้อมูลประจำตัว | ตรวจจับพฤติกรรมที่เป็นอันตรายภายในแพ็กเกจที่ดูเหมือนถูกต้องตามกฎหมาย |
ทำไมหนอนตัวนี้ถึงยังตัวเดิมอยู่
แม้จะมีการเปลี่ยนแปลงเหล่านั้นแล้วก็ตาม Shai-Hulud 3.0 ยังคงเป็นเวิร์มในห่วงโซ่อุปทาน npm ประเภทเดียวกัน.
มันขึ้นอยู่กับ:
- การนำข้อมูลรับรองมาใช้ซ้ำ
- การเผยแพร่ซ้ำอัตโนมัติ
- ความไว้วางใจที่พึ่งพา
- CI/CD การปฏิบัติ
ดังนั้น สภาพแวดล้อมใดๆ ที่ติดตั้งแพ็กเกจ npm โดยไม่มีการควบคุมพฤติกรรมจึงยังคงมีความเสี่ยงอยู่
ตัวบ่งชี้การประนีประนอม
ทีมรักษาความปลอดภัยที่ตรวจสอบมัลแวร์ shai-hulud ควรสังเกตสัญญาณต่อไปนี้:
- การเปลี่ยนแปลงเวอร์ชันแพ็กเกจที่ไม่คาดคิด
- สคริปต์วงจรชีวิตถูกเพิ่มเข้ามาโดยไม่มีเหตุผล
- บล็อก JavaScript ที่ถูกทำให้คลุมเครือ
- คำขอเครือข่ายขาออกระหว่างการติดตั้ง
- npm หรือ GitHub โทเค็นที่เข้าถึงระหว่างการติดตั้ง
- CI/CD งานต่างๆ ทำงานผิดปกติหลังจากอัปเดตการพึ่งพา
ที่สำคัญคือ สิ่งเหล่านี้ไม่จำเป็นต้องมี CVE เพื่อให้มีอยู่จริง
เหตุใดเครื่องมือรักษาความปลอดภัย npm แบบดั้งเดิมจึงพลาด Shai-Hulud 3.0
การตรวจจับตาม CVE ล้มเหลว
เนื่องจาก Shai-Hulud 3.0 ใช้ประโยชน์จากขั้นตอนการทำงานที่ถูกต้องตามกฎหมายในทางที่ผิด ทำให้โปรแกรมสแกนที่เน้นเฉพาะช่องโหว่ที่รู้จักไม่พบสิ่งผิดปกติใดๆ
มี:
- ไม่มีฟังก์ชันที่เปราะบาง
- ไม่มี API ที่ไม่ปลอดภัย
- ไม่มีความเสียหายของหน่วยความจำ
แต่ในความเป็นจริงแล้ว มีเจตนาร้ายแฝงอยู่ในโค้ด JavaScript ทั่วไป
SBOM การมองเห็นอย่างเดียวไม่เพียงพอ
ในทำนองเดียวกัน SBOMs บอกคุณได้เลย อะไร คุณพึ่งพา แต่ไม่ใช่ สิ่งที่มันทำในระหว่างการติดตั้ง.
ดังนั้น การเปิดเผยข้อมูลโดยปราศจากการบังคับใช้กฎหมายจึงไม่สามารถหยุดยั้งหนอนในห่วงโซ่อุปทานได้
Xygeni ป้องกันการโจมตีห่วงโซ่อุปทาน npm Shai-Hulud 3.0 ได้อย่างไร
นี่คือจุดที่สถาปัตยกรรมของ Xygeni มีความสำคัญอย่างยิ่ง
ระบบแจ้งเตือนมัลแวร์ล่วงหน้า (MEW): หยุดมัลแวร์ npm ในขณะเผยแพร่
ระบบเตือนภัยมัลแวร์ล่วงหน้าของ Xygeni (MEW) สแกนแพ็กเกจ npm ที่เผยแพร่ใหม่แบบเรียลไทม์อย่างต่อเนื่อง
MEW ตรวจพบ:
- เพย์โหลดที่ถูกปกปิด
- สคริปต์วงจรชีวิตที่น่าสงสัย
- พฤติกรรมการเก็บรวบรวมใบรับรอง
- การเขียนข้อมูลลงไฟล์ระบบผิดปกติ
- กิจกรรมเครือข่ายที่ไม่คาดคิด
ที่สำคัญที่สุด MEW สามารถบล็อกการสร้างโดยอัตโนมัติ ป้องกันไม่ให้มัลแวร์ shai-hulud npm เข้ามาได้ CI/CD.
Guardrails: บังคับใช้พฤติกรรมการพึ่งพาที่ปลอดภัย
ไซเกนี Guardrails บังคับใช้นโยบายที่เข้มงวดภายใน pipelines.
พวกเขา:
- บล็อกแพ็กเกจ npm ที่เป็นอันตรายหรือน่าสงสัย
- ป้องกันไม่ให้สคริปต์การติดตั้งที่ซ่อนอยู่ทำงาน
- หยุดการดาวน์โหลดรันไทม์ระหว่างการสร้าง
- บังคับใช้ความสมบูรณ์ของไฟล์ล็อก
เป็นผลให้ pipeline หยุดการทำงานก่อนที่เวิร์มจะลงมือ
CI/CD ความปลอดภัย: ปกป้อง Pipelineจากการถูกล่วงละเมิด
เนื่องจาก Shai-Hulud 3.0 มักจะเปลี่ยนไปใช้รูปแบบอื่น CI/CDจอภาพ Xygeni pipelineสำหรับ:
- การเปลี่ยนแปลงเวิร์กโฟลว์ที่ไม่ได้รับอนุญาต
- รูปแบบการดำเนินการที่ผิดปกติ
- การใช้สิทธิ์ในทางที่ผิด
- การแทรกเวิร์กโฟลว์ที่ถูกกระตุ้นโดยการพึ่งพา
หากพบพฤติกรรมเสี่ยง Xygeni จะทำการบล็อกพฤติกรรมนั้น pipeline ทันทีที่เริ่มการเคลื่อนไหวด้านข้างหยุดลง
การปกป้องความลับ: ลดรัศมีของการระเบิด
เนื่องจากมัลแวร์ shai-hulud ขโมยข้อมูลประจำตัวอย่างรุนแรง Xygeni ยังให้ความสำคัญกับความลับต่างๆ ด้วย
ไซเจนี:
- ตรวจจับความลับที่ถูกเปิดเผยทั่วทั้งระบบ SDLC
- หมุนเวียนข้อมูลประจำตัวที่มีความเสี่ยงสูงโดยอัตโนมัติ
- บังคับใช้แนวทางปฏิบัติเกี่ยวกับโทเค็นที่ปลอดภัยยิ่งขึ้น
ดังนั้น แม้ว่ามัลแวร์จะทำงานได้ แต่ข้อมูลลับที่ถูกขโมยไปก็จะเสื่อมค่าลงอย่างรวดเร็ว
เหตุใด Shai-Hulud 3.0 จึงยืนยันแนวโน้มระยะยาว
ท้ายที่สุดแล้ว Shai-Hulud 3.0 ยืนยันถึงความเป็นจริงที่กว้างกว่านั้น
การโจมตีห่วงโซ่อุปทาน npm สมัยใหม่:
- แพร่กระจายโดยอัตโนมัติ
- ดำเนินการเร็วกว่าการตรวจสอบโดยมนุษย์
- จงใช้ประโยชน์จากความไว้วางใจ ไม่ใช่ช่องโหว่
- เป้า pipelineไม่ใช่แค่โค้ด
ด้วยเหตุนี้ การป้องกันมัลแวร์ shai-hulud npm จึงจำเป็นต้องใช้การตรวจจับและการบังคับใช้เชิงพฤติกรรม ไม่ใช่แค่การสแกนเพียงอย่างเดียว
หมายเหตุสุดท้าย: เหตุใด Shai-Hulud 3.0 จึงยังคงมีความสำคัญ
แม้ว่า Shai-Hulud 3.0 จะไม่ได้นำเสนอช่องโหว่ใหม่ที่น่าตื่นเต้น แต่ก็แสดงให้เห็นถึงรูปแบบการโจมตีที่สมบูรณ์ สามารถทำซ้ำได้ และปรับขนาดได้
กล่าวอีกนัยหนึ่ง นี่จะไม่ใช่คลื่นลูกสุดท้าย
ทีมที่พึ่งพาการรักษาความปลอดภัยแบบตอบสนองจะยังคงไล่ตามการติดเชื้อต่อไป ในขณะที่ทีมที่บล็อกพฤติกรรมที่เป็นอันตรายตั้งแต่เนิ่นๆ จะสามารถหยุดยั้งไวรัสได้โดยสิ้นเชิง
นั่นคือความแตกต่าง





