ช่องโหว่ TARmageddon เปิดโปงปัญหาซอฟต์แวร์ถูกทิ้งในวงการ Rust

ทีมชุมชน BigGo
ช่องโหว่ TARmageddon เปิดโปงปัญหาซอฟต์แวร์ถูกทิ้งในวงการ Rust

ช่องโหว่ความปลอดภัยระดับวิกฤตในไลบรารีแยกวิเคราะห์ไฟล์ TAR ยอดนิยมของ Rust ได้เผยให้เห็นปัญหาที่ลึกซึ้งยิ่งกว่าในระบบนิเวศโอเพ่นซอร์ส ช่องโหว่ดังกล่าวซึ่งถูกติดตามเป็น CVE-2025-62518 และมีชื่อเล่นว่า TARmageddon อนุญาตให้ผู้โจมตีแอบลักลอบนำไฟล์ที่ซ่อนอยู่เข้าไปในกระบวนการแตกไฟล์ ซึ่งอาจนำไปสู่การดำเนินการโค้ดจากระยะไกลได้ สิ่งที่ทำให้กรณีนี้น่ากังวลเป็นพิเศษไม่ใช่แค่ตัวช่องโหว่ทางเทคนิคในตัวมันเอง แต่เป็นเครือข่ายที่ซับซ้อนของไลบรารีที่ถูกทิ้งและถูกแยกพัฒนาต่อ (forked) ซึ่งทำให้กระบวนการปิดช่องโหว่มีความยากลำบากเป็นพิเศษ

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

"ทำความเข้าใจช่องโหว่ด้านความปลอดภัยใน Open Source: TARmageddon เน้นย้ำความเสี่ยงในซอฟต์แวร์สมัยใหม่"
"ทำความเข้าใจช่องโหว่ด้านความปลอดภัยใน Open Source: TARmageddon เน้นย้ำความเสี่ยงในซอฟต์แวร์สมัยใหม่"

ช่องโหว่ที่ไม่ควรเกิดขึ้น

TARmageddon ใช้ประโยชน์จากความไม่สอดคล้องกันในการแยกวิเคราะห์ (parsing inconsistency) ของไลบรารี async tar ของ Rust ในการจัดการกับไฟล์ที่ซ้อนกัน (nested archives) ที่มีข้อมูลส่วนหัวขัดแย้งกัน เมื่อไฟล์ tar มีทั้งส่วนหัวแบบขยาย PAX และส่วนหัวแบบดั้งเดิม ustar ที่ไม่ตรงกันเกี่ยวกับขนาดไฟล์ ตัวแยกวิเคราะห์ที่มีช่องโหว่จะดำเนินการผ่านสตรีมของไฟล์เก็บถาวรอย่างไม่ถูกต้อง สิ่งนี้สร้างการผิดจังหวะ (desynchronization) ซึ่งอนุญาตให้ไฟล์ที่ซ่อนอยู่จากไฟล์ที่ซ้อนกันถูกแตกออกมาเสมือนเป็นส่วนที่ถูกต้องตามกฎหมายของไฟล์เก็บถาวรหลัก

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

ส่วนที่น่ากลัวไม่ใช่ข้อบกพร่อง — แต่มันคือกระบวนการปิดช่องโหว่ที่เปราะบางอย่างไรเมื่อไลบรารีไม่ได้รับการบำรุงรักษาอีกต่อไป

ช่องโหว่นี้ส่งผลกระทบต่อ คราเทส (crates) ยอดนิยมหลายตัวของ Rust รวมถึง tokio-tar ซึ่งมีจำนวนการดาวน์โหลดมากกว่า 5 ล้านครั้งบน crates.io กระบวนการค้นพบได้เปิดเผยว่า ฟอร์ก (fork) ที่ใช้กันอย่างแพร่หลายที่สุดนั้นโดยพื้นฐานแล้วคือซอฟต์แวร์ถูกทิ้ง (abandonware) — ไม่ได้รับการบำรุงรักษาอย่างต่อเนื่องโดยนักพัฒนาดั้งเดิมอีกต่อไป

Rust Crates ที่ได้รับผลกระทบและสถานะ

  • tokio-tar: Fork ที่ได้รับความนิยมมากที่สุด (ดาวน์โหลดมากกว่า 5 ล้านครั้ง) ถูกละทิ้ง
  • async-tar: ไลบรารีหลัก ผู้ดูแลได้จัดเตรียมแพตช์แล้ว
  • krata-tokio-tar: เดิมพัฒนาโดย Edera ปัจจุบันถูกเก็บถาวร ได้รับการแพตช์แล้ว
  • astral-tokio-tar: มีการดูแลอย่างต่อเนื่องโดย Astral ได้รับการแพตช์แล้ว

ความท้าทายที่แท้จริง: การปิดช่องโหว่ซอฟต์แวร์ที่ถูกทิ้ง

สิ่งที่ควรจะเป็นเพียงการเปิดเผยช่องโหว่ความปลอดภัยที่ตรงไปตรงมา กลับกลายเป็น кошмарของการประสานงานที่ซับซ้อน แทนที่จะทำงานกับผู้บำรุงรักษาเพียงคนเดียว ทีมความปลอดภัยจาก Edera ต้องนำทางผ่านสายเลือดที่พันกันของไลบรารีที่ถูกแยกพัฒนาต่อ พวกเขาจำเป็นต้องพัฒนาแพตช์สำหรับเวอร์ชันต้นทาง (upstream) ค้นหาผู้บำรุงรักษาของโครงการที่ไม่ได้บำรุงรักษาแล้วผ่านวิศวกรรมสังคมและการสืบสวน และประสานงานการปิดช่องโหว่ไปพร้อมกัน across multiple active forks ภายใต้การปกป้องข้อมูล (embargo) ที่เข้มงวด 60 วัน

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

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

ไทม์ไลน์การเปิดเผยข้อมูล

  • 2025-08-21: ค้นพบบั๊กและสร้างการทำซ้ำ
  • 2025-08-22: พัฒนาแพตช์และเปิดเผยให้กับผู้ดูแลระบบ
  • 2025-09-02: ผู้ดูแล async-tar ยืนยันรับทราบ
  • 2025-10-21: เปิดเผยต่อสาธารณะและปล่อยแพตช์

เหนือกว่าความปลอดภัยของหน่วยความจำ: ขีดจำกัดของความปลอดภัยใน Rust

ช่องโหว่ TARmageddon ทำหน้าที่เป็นเครื่องเตือนใจสำคัญว่าการรับประกันความปลอดภัยของหน่วยความจำของ Rust ไม่ได้ป้องกันข้อบกพร่องทางลอจิก (logic bugs) ในขณะที่ Rust ขจัดช่องโหว่ความเสียหายของหน่วยความจำทั้งชั้นที่รบกวนโค้ด C และ C++ ได้อย่างมีประสิทธิภาพ แต่มันไม่ได้ให้การป้องกันพิเศษต่อข้อบกพร่องในลอจิกของโปรแกรมหรือการจัดการข้อมูล

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

เหตุการณ์นี้ยังทำให้เกิดคำถามเกี่ยวกับกลยุทธ์การจัดการ dependencies ในระบบนิเวศต่างๆ ผู้แสดงความคิดเห็นระบุว่าการกระจาย Linux แบบดั้งเดิมมักจะรักษาแพตช์ความปลอดภัยสำหรับแพ็กเกจไว้ แม้ว่าผู้บำรุงรักษาต้นทางจะหายไป ในขณะที่ตัวจัดการแพ็กเกจเฉพาะภาษาอย่าง Cargo, pip และ npm มักจะทำตามแนวทาง ส่งสิ่งที่พวกเขาให้เรา (ship what they give us)

สценาริโอการโจมตีที่อาจเกิดขึ้น

  • การแฮ็กแพ็กเกจ Python ผ่านการอัปโหลดไปยัง PyPI
  • การแทรกสิ่งเป็นพิษใน Container image ในเฟรมเวิร์กการทดสอบ
  • การหลีกเลี่ยงการสแกนความปลอดภัยสำหรับไฟล์ที่ไม่ได้รับอนุมัติ
  • การโจมตีระบบ Build ใน CI/CD pipelines

มองไปข้างหน้า: ทางออกสำหรับระบบนิเวศที่สุขภาพดีขึ้น

ความพยายามในการเปิดเผยข้อมูลแบบประสานงาน แม้จะท้าทาย แต่ก็แสดงให้เห็นว่าความปลอดภัยที่ขับเคลื่อนโดยชุมชนสามารถทำงานได้ แม้ในสถานการณ์ที่ยากลำบาก ทีม Edera ทำงานร่วมกับผู้บำรุงรักษาหลายราย across different forks เพื่อให้แน่ใจว่าแพตช์พร้อมใช้งานก่อนการเปิดเผยต่อสาธารณะ พวกเขายังติดต่อโครงการ downstream หลักๆ อย่าง proactive เพื่อเตรียมความพร้อมให้พวกเขาสำหรับการอัปเดตที่จำเป็น

สำหรับองค์กรที่พึ่งพาซอฟต์แวร์โอเพ่นซอร์ส เหตุการณ์นี้เน้นย้ำถึงความสำคัญของการตรวจสอบ dependencies อย่างสม่ำเสมอเพื่อดูสถานะการบำรุงรักษา มาตรการบรรเทาผลกระทบขณะรันไทม์ เช่น การตรวจสอบความถูกต้องของจำนวนไฟล์ที่แตกออกมากับ manifest ที่คาดหวัง และการใช้ sandboxes แยกสำหรับการแตกไฟล์ สามารถให้การป้องกันแบบหลายชั้น (defense-in-depth) แม้ในเวลาที่ไม่สามารถอัปเดต dependencies ที่มีช่องโหว่ได้ทันที

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

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

อ้างอิง: TARMAGEDDON (CVE-2025-62518): RCE VULNERABILITY HIGHLIGHTS THE CHALLENGES OF OPEN SOURCE ABANDONWARE