มัลแวร์ CanisterWorm

การโจมตีห่วงโซ่อุปทานที่ซับซ้อนซึ่งเริ่มต้นจากการกำหนดเป้าหมายไปที่โปรแกรมสแกนไวรัส Trivy ที่ใช้งานกันอย่างแพร่หลาย ได้ขยายวงกว้างออกไปสู่การโจมตีแพ็กเกจ npm จำนวนมาก ผู้ก่อเหตุต้องสงสัยว่าได้ใช้เวิร์มที่แพร่กระจายตัวเองได้ซึ่งไม่เคยมีการบันทึกมาก่อน เรียกว่า CanisterWorm ซึ่งทำให้ขนาดและผลกระทบของการบุกรุกเพิ่มขึ้นอย่างมาก

มัลแวร์นี้ได้ชื่อมาจากวิธีการใช้ ICP canister ซึ่งเป็นสัญญาอัจฉริยะที่ป้องกันการแก้ไขดัดแปลงได้ และจัดเก็บอยู่บนบล็อกเชนแบบกระจายศูนย์ เป็นส่วนหนึ่งของโครงสร้างพื้นฐานการควบคุม นี่ถือเป็นกรณีแรกที่มีการบันทึกไว้ในที่สาธารณะเกี่ยวกับการใช้ ICP canister เป็นอาวุธเพื่อเข้าถึงปลายทางควบคุมและสั่งการ (C2) ซึ่งเป็นกลยุทธ์ใหม่และทนทานที่ทำให้วิธีการป้องกันแบบดั้งเดิมซับซ้อนยิ่งขึ้น

แพ็คเกจที่ถูกบุกรุกและเวกเตอร์การเข้าถึงเริ่มต้น

การโจมตีครั้งนี้ส่งผลกระทบต่อแพ็กเกจ npm หลายแพ็กเกจในขอบเขตที่แตกต่างกัน แสดงให้เห็นถึงขอบเขตความเสียหายที่กว้างขวางภายในห่วงโซ่อุปทานซอฟต์แวร์:

  • 28 แพ็กเกจภายใต้ขอบเขตของ @EmilGroup
  • 16 แพ็กเกจภายใต้ขอบเขต @opengov
  • แพ็กเกจเพิ่มเติม ได้แก่ @teale.io/eslint-config, @airtm/uuid-base32 และ @pypestream/floating-ui-dom

แคมเปญนี้เกิดขึ้นหลังจากเหตุการณ์การรั่วไหลของข้อมูลประจำตัวที่ทำให้ผู้โจมตีสามารถเผยแพร่เครื่องมือที่เกี่ยวข้องกับ Trivy เวอร์ชันที่เป็นอันตราย โดยเฉพาะอย่างยิ่ง trivy, trivy-action และ setup-trivy ซึ่งมีฟังก์ชันการขโมยข้อมูลประจำตัวฝังอยู่ เชื่อกันว่าปฏิบัติการนี้เชื่อมโยงกับกลุ่มอาชญากรไซเบอร์ที่มุ่งเน้นด้านคลาวด์ซึ่งระบุว่าเป็น TeamPCP

กระบวนการจัดการการติดเชื้อและโครงสร้างพื้นฐานการสั่งการแบบกระจายอำนาจ

กระบวนการแพร่ระบาดเริ่มต้นขึ้นในระหว่างขั้นตอนการติดตั้งแพ็กเกจ npm โดยสคริปต์ postinstall จะเรียกใช้ loader loader นี้จะติดตั้ง backdoor ที่เขียนด้วยภาษา Python ซึ่งออกแบบมาเพื่อสื่อสารกับ ICP canister canister ทำหน้าที่เป็น dead drop resolver โดยส่งคืน URL ที่นำระบบที่ติดเชื้อไปดาวน์โหลดและเรียกใช้ payload ในขั้นตอนถัดไป

ลักษณะการกระจายอำนาจของโครงสร้างพื้นฐาน ICP ทำให้ผู้โจมตีได้เปรียบอย่างมาก เนื่องจาก canister สามารถอัปเดต URL ของ payload ได้แบบไดนามิก ผู้โจมตีจึงสามารถกระจายไฟล์ไบนารีที่เป็นอันตรายใหม่ไปยังระบบที่ติดเชื้อทั้งหมดได้โดยไม่ต้องแก้ไขมัลแวร์ที่ติดตั้งไว้ สถาปัตยกรรมนี้ยังทำให้การกำจัดมัลแวร์ทำได้ยากขึ้นอย่างมากอีกด้วย

กลไกการคงอยู่และเทคนิคการพรางตัว

การรักษาการทำงานอย่างต่อเนื่องทำได้โดยการสร้างบริการผู้ใช้ systemd ที่กำหนดค่าให้รีสตาร์ทกระบวนการที่เป็นอันตรายโดยอัตโนมัติ คุณลักษณะสำคัญได้แก่:

  • การเริ่มต้นใหม่โดยอัตโนมัติจะถูกบังคับใช้ผ่านคำสั่ง Restart=always
  • หากถูกปิดกั้น จะมีการหน่วงเวลา 5 วินาที ก่อนที่จะเปิดใช้งานแบ็กดอร์อีกครั้ง
  • ปลอมแปลงบริการดังกล่าวให้ดูเหมือนซอฟต์แวร์ตรวจสอบ PostgreSQL ที่ถูกต้องตามกฎหมาย โดยใช้ชื่อว่า 'pgmon'

แนวทางนี้ช่วยให้การทำงานเป็นไปอย่างต่อเนื่อง พร้อมทั้งลดโอกาสในการตรวจจับให้น้อยที่สุด ด้วยการกลมกลืนไปกับบริการระบบที่ถูกต้องตามกฎหมาย

การส่งข้อมูลแบบปรับเปลี่ยนได้และพฤติกรรมสวิตช์ปิดระบบ

ช่องโหว่นี้จะสื่อสารกับ ICP canister เป็นระยะทุก 50 นาที โดยใช้ User-Agent ของเบราว์เซอร์ปลอมเพื่อหลีกเลี่ยงการถูกสงสัย URL ที่ได้รับกลับมาจะเป็นตัวกำหนดการดำเนินการต่อไป:

  • หาก URL ชี้ไปยังไฟล์ที่เป็นอันตรายที่ถูกต้อง มัลแวร์จะดาวน์โหลดและเรียกใช้ไฟล์นั้น
  • หาก URL มีคำว่า 'youtube.com' อยู่ มัลแวร์จะเข้าสู่สถานะพักตัว

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

นอกจากนี้ ยังพบกลไกปิดการทำงานอัตโนมัติแบบเดียวกันที่ใช้ YouTube เป็นฐาน ในไบนารี Trivy ที่ถูกดัดแปลงเป็นโทรจัน (เวอร์ชัน 0.69.4) ซึ่งสื่อสารกับโครงสร้างพื้นฐาน ICP เดียวกันผ่านตัวปล่อยมัลแวร์ Python แยกต่างหาก

ความสามารถของเวิร์มและการแพร่กระจายอัตโนมัติ

ในขั้นต้น การแพร่กระจายอาศัยสคริปต์ที่เรียกใช้งานด้วยตนเองชื่อ deploy.js ซึ่งใช้โทเค็นการตรวจสอบสิทธิ์ npm ที่ถูกขโมยมาเพื่อแทรกโค้ดที่เป็นอันตรายเข้าไปในแพ็กเกจที่เข้าถึงได้ สคริปต์นี้ไม่ได้ถูกเรียกใช้งานระหว่างการติดตั้ง แต่ทำหน้าที่เป็นเครื่องมืออิสระเพื่อขยายขอบเขตการโจมตี

เวอร์ชันต่อมาของ CanisterWorm ได้มีการพัฒนาไปอย่างมาก ในเวอร์ชันใหม่กว่า เช่น เวอร์ชันที่พบใน @teale.io/eslint-config (เวอร์ชัน 1.8.11 และ 1.8.12) เวิร์มนี้ได้รวมการแพร่กระจายตัวเองโดยตรงเข้าไปในกระบวนการติดตั้งของแพ็กเกจ กลไกที่ได้รับการปรับปรุงใหม่นี้ประกอบด้วย:

  • การดึงโทเค็นการตรวจสอบสิทธิ์ npm จากสภาพแวดล้อมที่ติดไวรัส
  • ดำเนินการขั้นตอนการแพร่กระจายทันทีในฐานะกระบวนการพื้นหลังที่ไม่เกี่ยวข้อง
  • การเผยแพร่แพ็กเกจที่ถูกบุกรุกโดยอัตโนมัติโดยใช้ข้อมูลประจำตัวที่เก็บรวบรวมมา

การเปลี่ยนแปลงนี้เปลี่ยนรูปแบบการโจมตีจากแคมเปญที่ดำเนินการด้วยตนเองไปเป็นระบบเผยแพร่อัตโนมัติอย่างสมบูรณ์

การลุกลามจนกลายเป็นภัยคุกคามต่อห่วงโซ่อุปทานที่ยั่งยืนด้วยตนเอง

การนำระบบเก็บเกี่ยวโทเค็นอัตโนมัติและการแพร่กระจายด้วยตนเองมาใช้ ถือเป็นการยกระดับความเสี่ยงอย่างร้ายแรง เวิร์กสเตชันของนักพัฒนาหรือไปป์ไลน์ CI/CD ใดๆ ที่ติดตั้งแพ็กเกจที่เสียหายและมีข้อมูลรับรอง npm ที่เข้าถึงได้ จะกลายเป็นโหนดการแพร่กระจายที่ทำงานอยู่ ซึ่งจะสร้างผลกระทบแบบลูกโซ่ โดยแพ็กเกจที่ติดเชื้อจะนำไปสู่การติดเชื้อเพิ่มเติมในส่วนประกอบอื่นๆ ที่เกี่ยวข้อง

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

สิ่งที่ยิ่งน่ากังวลคือ การทดสอบโดยใช้ตัวอย่างโค้ด เช่น เพย์โหลดตัวแทน ('hello123') บ่งชี้ว่าผู้โจมตีกำลังปรับปรุงและตรวจสอบความถูกต้องของห่วงโซ่การโจมตีอย่างแข็งขันก่อนที่จะปล่อยไบนารีที่เป็นอันตรายซึ่งใช้งานได้อย่างสมบูรณ์

มาแรง

เข้าชมมากที่สุด

กำลังโหลด...