31 คะแนน โดย GN⁺ 2024-04-03 | 7 ความคิดเห็น | แชร์ทาง WhatsApp
  • ผู้โจมตีที่ใช้ชื่อว่า "Jia Tan" ทำตัวเป็นผู้มีส่วนร่วมที่ขยันและมีประสิทธิภาพกับไลบรารีบีบอัด xz มานานกว่า 2 ปี จนในที่สุดได้รับสิทธิ์ commit และสิทธิ์ผู้ดูแลระบบ
  • จากนั้นใช้สิทธิ์ดังกล่าวติดตั้ง backdoor ที่ซ่อนอย่างแนบเนียนและระมัดระวังมากไว้ใน liblzma ซึ่งเป็นส่วนหนึ่งของ xz และยังเป็น dependency ของ OpenSSH sshd บน Debian, Ubuntu, Fedora และระบบ Linux อื่น ๆ ที่ใช้ systemd
  • backdoor นี้คอยเฝ้าดูช่วงเริ่มต้นของเซสชัน SSH ว่าผู้โจมตีส่งคำสั่งลับมาหรือไม่ ทำให้ผู้โจมตีสามารถรันคำสั่งใดก็ได้บนระบบเป้าหมายโดยไม่ต้องล็อกอิน เป็นการโจมตี remote code execution กับเป้าหมายที่ไม่ต้องยืนยันตัวตน
  • การโจมตีนี้ถูกเปิดเผยต่อสาธารณะเมื่อวันที่ 29 มีนาคม 2024 และดูเหมือนจะเป็นการโจมตีซัพพลายเชนครั้งใหญ่ครั้งแรกต่อซอฟต์แวร์โอเพนซอร์สที่ถูกใช้อย่างแพร่หลาย
  • นี่เป็นเหตุการณ์สำคัญที่จะกลายเป็นจุดเปลี่ยนของความปลอดภัยในซัพพลายเชนโอเพนซอร์ส
  • โพสต์นี้คือไทม์ไลน์อย่างละเอียดของมิติด้าน social engineering ของการโจมตีครั้งนี้ ซึ่งดูเหมือนจะย้อนกลับไปได้ถึงปลายปี 2021

บทนำ

  • ช่วงปี 2005-2008 Lasse Collin ร่วมกับความช่วยเหลือจากผู้อื่น ออกแบบฟอร์แมตไฟล์ .xz โดยใช้อัลกอริทึมบีบอัด LZMA ซึ่งบีบไฟล์ได้เหลือราว 70% เมื่อเทียบกับ gzip
  • เมื่อเวลาผ่านไป ฟอร์แมตนี้ถูกใช้อย่างแพร่หลายในการบีบอัดไฟล์ tar, อิมเมจเคอร์เนล Linux และอื่น ๆ

การปรากฏตัวของ Jia Tan และบรรดาผู้สนับสนุน

  • 2021-10-29: Jia Tan ส่งแพตช์แรกที่ไม่เป็นอันตรายไปยัง mailing list ของ xz-devel
  • 2021-11-29: Jia Tan ส่งแพตช์ที่ไม่เป็นอันตรายฉบับที่สอง
  • 2022-04-19: Jia Tan ส่งแพตช์ที่ไม่เป็นอันตรายอีกฉบับ
  • 2022-04-22: "Jigar Kumar" แสดงความไม่พอใจว่าแพตช์ของ Jia Tan ยังไม่ได้ถูก merge
  • 2022-05-19: "Dennis Ens" สอบถามสถานะการดูแล XZ for Java
  • 2022-05-19: Lasse Collin ขอโทษที่ตอบช้า และตอบว่า "Jia Tan กำลังช่วย XZ Utils นอก mailing list และอย่างน้อยก็น่าจะรับบทบาทที่ใหญ่ขึ้นใน XZ Utils ได้"
  • 2022-05-27: Jigar Kumar ส่งอีเมลกดดันในเธรดแพตช์
  • 2022-06-07: Jigar Kumar ส่งอีเมลกดดันในเธรด Java
  • 2022-06-08: Lasse Collin ตอบว่าเขาไม่ได้หมดความสนใจ แต่มีข้อจำกัดจากปัญหาสุขภาพจิต
  • 2022-06-10: Lasse Collin merge commit แรกที่ Jia Tan เขียน
  • 2022-06-14: Jugar Kumar ส่งอีเมลกดดันอีกฉบับ
  • 2022-06-21: Dennis Ens ส่งอีเมลกดดันโดยเสนอให้ส่งต่อภาระการดูแลไปยังคนอื่น
  • 2022-06-22: Jigar Kumar ส่งอีเมลกดดันในเธรดแพตช์ C
  • 2022-06-29: Lasse Collin ตอบโดยบอกเป็นนัยว่า "Jia Tan อาจรับบทบาทที่ใหญ่ขึ้นในโปรเจ็กต์"

Jia Tan กลายเป็นผู้ดูแล

  • ดูเหมือนว่า Lasse เริ่มทำงานใกล้ชิดกับ Jia Tan มากขึ้น ขณะที่ Jigar Kumar และ Dennis Ens มีแนวโน้มสูงว่าจะเป็นตัวตนปลอม
  • 2022-09-27: Jia Tan ให้สรุปรีลีส 5.4.0
  • 2022-11-30: Lasse Collin เปลี่ยนอีเมลรายงานบั๊กจากที่อยู่ส่วนตัวไปเป็น alias ที่แชร์กับ Jia Tan
  • 2022-12-30: Jia Tan merge commit แรกเข้า repository ของ xz โดยตรง
  • 2023-01-11: Lasse Collin ติดแท็กและ build รีลีสสุดท้ายของตนคือ v5.4.1
  • 2023-03-18: Jia Tan ติดแท็กและ build รีลีสแรกของตนคือ v5.4.2
  • 2023-03-20: Jia Tan อัปเดตการตั้งค่า Google oss-fuzz ให้ส่งบั๊กมาหาตนเอง
  • 2023-06-22: Hans Jansen ส่งแพตช์คู่ที่ใช้ความสามารถ "GNU indirect function" ซึ่ง Lasse Collin นำไปปรับแก้แล้วให้ Jia Tan เป็นผู้ merge
  • 2023-07-07: Jia Tan ปิดการรองรับ ifunc ระหว่างการ build ของ oss-fuzz
  • 2024-01-19: Jia Tan ย้ายเว็บไซต์ไปยัง GitHub Pages และเข้าควบคุมหน้าเว็บ XZ Utils

การเริ่มต้นของการโจมตี

  • 2024-02-23: Jia Tan merge โค้ดไบนารีของ backdoor ที่ซ่อนอยู่ไว้ในไฟล์อินพุตทดสอบ
  • 2024-02-24: Jia Tan ติดแท็ก v5.6.0 และเผยแพร่แพ็กเกจ xz-5.6.0.tar.gz ที่มี build-to-host.m4 อันตรายรวมอยู่
  • 2024-02-24: Gentoo เริ่มพบการแครชใน 5.6.0
  • 2024-02-26: Debian เพิ่ม xz-utils 5.6.0-0.1 เข้า unstable
  • 2024-02-28: Debian เพิ่ม xz-utils 5.6.0-0.2 เข้า unstable
  • 2024-02-29: บน GitHub ผู้ใช้ @teknoraver ส่ง pull request เพื่อไม่ให้เชื่อม liblzma เข้ากับ libsystemd
  • 2024-02-28: Jia Tan เพิ่มการสะกดผิดแบบแนบเนียนในโปรแกรม C ที่ใช้ตรวจสอบการรองรับ Landlock ทำให้การตรวจจับ Landlock ของสคริปต์ configure พัง
  • 2024-03-04: ดิสทริบิวชันของ RedHat เริ่มพบข้อผิดพลาด Valgrind ที่ _get_cpuid ของ liblzma
  • 2024-03-05: PR ของ libsystemd ถูก merge และ liblzma ถูกนำออก
  • 2024-03-05: Debian เพิ่ม xz-utils 5.6.0-0.2 เข้า testing
  • 2024-03-05: Jia Tan commit การแก้บั๊ก ifunc
  • 2024-03-08: Jia Tan commit การแก้ไขสำหรับ Valgrind
  • 2024-03-09: Jia Tan commit อัปเดตไฟล์ backdoor
  • 2024-03-09: Jia Tan ติดแท็ก v5.6.1 และเผยแพร่ดิสทริบิวชัน xz 5.6.1
  • 2024-03-20: Lasse Collin ส่งชุดแพตช์ไปยัง LKML เพื่อเพิ่มทั้งตนเองและ Jia Tan เป็นผู้ดูแลโค้ดบีบอัด xz ในเคอร์เนล
  • 2024-03-25: Hans Jansen เปิดบั๊กของ Debian เพื่ออัปเดต xz-utils เป็น 5.6.1
  • 2024-03-28: Jia Tan เปิดบั๊กของ Ubuntu เพื่อให้ xz-utils ใน Debian อัปเดตเป็น 5.6.1

การตรวจพบการโจมตี

  • 2024-03-28: Andres Freund พบบั๊กและแจ้ง Debian กับ distros@openwall แบบไม่เปิดเผยต่อสาธารณะ RedHat กำหนดรหัส CVE-2024-3094
  • 2024-03-28: Debian ย้อนกลับจาก 5.6.1 และนำ 5.6.1+really5.4.5-1 มาใช้
  • 2024-03-29: Andres Freund โพสต์คำเตือนเรื่อง backdoor ไปยังลิสต์สาธารณะ oss-security@openwall โดยบอกว่าพบมันมา "ในช่วงไม่กี่สัปดาห์ที่ผ่านมา"
  • 2024-03-29: RedHat ประกาศว่า xz ที่มี backdoor ถูกแจกจ่ายใน Fedora Rawhide และ Fedora Linux 40 beta
  • 2024-03-30: Debian หยุดการ build และสร้างเครื่อง build ใหม่โดยใช้ Debian stable

ความเห็นของ GN⁺

  • เหตุการณ์นี้จะเป็นจุดเปลี่ยนสำคัญต่อการโจมตีซัพพลายเชนของซอฟต์แวร์โอเพนซอร์ส เพราะผู้ร่วมขบวนการใช้แนวทาง social engineering ระยะยาวเพื่อสร้างความไว้วางใจและเข้าถึงสิทธิ์ ก่อนแอบฝัง backdoor ลงในไลบรารีแกนหลักที่ถูกใช้อย่างกว้างขวาง
  • จำเป็นต้องทบทวนกระบวนการกำกับดูแลและการถ่ายโอนสิทธิ์ของโปรเจ็กต์โอเพนซอร์ส อาจควรพิจารณาโมเดล governance แบบกระจายมากขึ้น เพื่อไม่ให้ชะตาของโปรเจ็กต์ขึ้นอยู่กับสถานการณ์ส่วนตัวของเมนเทนเนอร์หลัก
  • การตรวจสอบความปลอดภัยและ code review สำหรับโปรเจ็กต์โอเพนซอร์สสำคัญ ๆ จะยิ่งมีความสำคัญมากขึ้น รวมถึงต้องมีเครื่องมือตรวจสอบอัตโนมัติเพื่อจับการเปลี่ยนแปลงที่น่าสงสัยและป้องกันการใช้อำนาจในทางที่ผิด เช่น การเตือนเมื่อมีการเพิ่มข้อมูลไบนารี
  • จำเป็นต้องมีทั้งมาตรการทางเทคนิคและเชิงสถาบันที่ช่วยคัดกรองผู้มีส่วนร่วมที่มุ่งร้ายและหยุดการโจมตีได้ตั้งแต่เนิ่น ๆ โดยไม่ทำลายข้อดีของแนวทางโอเพนซอร์สที่พัฒนาอย่างเปิดเผยและให้ทุกคนมีส่วนร่วมได้
  • โปรเจ็กต์โอเพนซอร์สที่ใช้ภาษาหรือเครื่องมือซึ่งมีจุดอ่อนด้านความปลอดภัยจะยิ่งมีความเสี่ยงสูงขึ้น จึงต้องยกระดับความปลอดภัยในหลายมิติ เช่น memory safety, static analysis, Fuzzing พร้อมกับการเปลี่ยนผ่านไปใช้เครื่องมือสมัยใหม่
  • ผู้คนจะจับตาผลการวิเคราะห์เชิงลึกเรื่องเงื่อนไขการเปิดใช้งาน backdoor ที่ซ่อนไว้ เส้นทางการแพร่กระจาย และขอบเขตผลกระทบ เพื่อให้ได้บทเรียนสำหรับป้องกันการโจมตีลักษณะคล้ายกันในอนาคต

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

 
sagee 2024-04-09

เรื่องนี้ทำให้กังวลขึ้นมาว่า..
อาจจะแฮ็กพีซีของนักพัฒนาโอเพนซอร์ส หรือไม่ก็ลักพาตัว/กักขังไว้ แล้วก็ซื้อตัวด้วยเงินเพื่อฝังมัลแวร์ลงไป..
พอนึกถึงเรื่องเงิน ก็อดคิดไม่ได้ว่านักพัฒนาโอเพนซอร์สเขาอยู่ดีกินดีไหมเหมือนกันนะ?

 
botplaysdice 2024-04-05

ผมทำงานสายความปลอดภัยอยู่ เวลารีวิวโค้ดแล้วเจอบั๊ก ก็จะมีมุกประมาณว่า "เข้ามาทำงานที่นี่ตั้งแต่ 5 ปีก่อนก็เพื่อฝังโค้ดนี้ใช่ไหม?" ฮ่าๆ

 
aer0700 2024-04-04

Collin ผู้น่าสงสารคงลำบากมากในหลายด้านเลยนะ...

 
xcutz 2024-04-03

ใช่ archlinux แพตช์ไปนานแล้ว~ เข้ามาสิ เข้ามาเลย ใช่ แบ็กดอร์ออกไป latest arch เจ๋งสุดๆ~

 
tpdns90321 2024-04-07

pacman -Syu

 
sdkfile 2024-04-03

Lasse Collin ได้เขียนบทความสรุปเหตุการณ์นี้ไว้แล้ว
https://tukaani.org/xz-backdoor/

 
GN⁺ 2024-04-03
ความคิดเห็นจาก Hacker News
  • เป็นสรุปเหตุการณ์ที่ยอดเยี่ยมและรวมลิงก์ทั้งหมดไว้ในที่เดียว จึงเป็นแหล่งข้อมูลที่เหมาะอย่างยิ่งสำหรับคนที่อยากเรียนรู้ว่าการโจมตีด้วยวิศวกรรมสังคมเกิดขึ้นจริงอย่างไร

    • ในส่วน "จุดเริ่มต้นของการโจมตี" มีการกล่าวถึง Ubuntu และ Debian แต่ยังไม่มี Fedora ซึ่งอาจเพิ่มเข้าไปเพื่อให้เนื้อหาสมบูรณ์ยิ่งขึ้น
    • ดูเหมือนว่าแรงกดดันเชิงวิศวกรรมสังคมต่อ Fedora จะเริ่มขึ้นในสัปดาห์ก่อนวันที่ 4 มีนาคม 2024
  • มีการชี้ให้เห็นว่าไทม์ไลน์ของ Fedora ถูกตกหล่น

    • บุคคลชื่อ "Jia Tan" พยายามติดต่อระหว่างวันที่ 27 กุมภาพันธ์ถึง 27 มีนาคม เพื่อให้นำ xz เวอร์ชันใหม่เข้าไปใน Fedora 40 และ 41
  • มีความเห็นว่าเราไม่ควรยอมรับโค้ดที่เข้าใจได้ยากภายในระบบอีกต่อไป

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

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

  • มีการชี้ว่าข้อสังเกตเกี่ยวกับรูปแบบอีเมลแอดเดรสไม่ถูกต้อง

    • รูปแบบอีเมลของ Jigar Kumar และ Dennis Ens แตกต่างกัน และสิ่งนี้ไม่ได้พิสูจน์หรือหักล้างว่าทั้งสองเป็นคนเดียวกัน (sockpuppets)
  • มีการแสดงความกังวลว่าความกดดันทางสังคมสามารถทำให้ผู้คนยอมสละการควบคุมได้ง่ายเพียงใด

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

  • มีการอ้างความเห็นของ Joe Cooper และแบ่งปันมุมมองของเขาเกี่ยวกับแรงกดดันที่มีต่อผู้ดูแลโครงการ

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

    • นี่เป็นคำเตือนสำหรับผู้ที่สนับสนุน binary blobs สำหรับฮาร์ดแวร์ที่ซอฟต์แวร์โอเพนซอร์สไม่รองรับ
    • สิ่งเหล่านี้ควรต้องสามารถสร้างซ้ำได้ในรูปแบบซอร์ส ไม่เช่นนั้นก็ไม่ควรมีอยู่เลย