LiteLLM 1.107.0 โดนฝังมัลแวร์ เหตุลืมเพิกถอนคีย์แอดมิน
เผยเบื้องหลังมัลแวร์ใน LiteLLM 1.107.0 บน PyPI และ Docker หลังทำไฟล์ config หลุดเมื่อ 27 พ.ค. 2026 ก่อนถูกลบแต่ลืมยกเลิกคีย์ ส่งผลมียอดดาวน์โหลดร่วม 4.9 หมื่นครั้ง

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- LiteLLM 1.107.0 บน PyPI และ Docker โดนฝังมัลแวร์ขโมยข้อมูลรับรอง
- ต้นเหตุจากคีย์แอดมินในไฟล์ config ที่ถูกลบไปในเดือนพฤษภาคมแต่ไม่ได้ถูกเพิกถอน
- แฮกเกอร์ใช้สิทธิ์คีย์ดังกล่าวเข้าควบคุมองค์กร GitHub และแทรกโค้ดอันตราย
- ยอดดาวน์โหลดเวอร์ชันที่มีปัญหาพุ่งสูงถึงประมาณ 49,000 ครั้งในช่วงเวลา 2 ชั่วโมง
เหตุการณ์ความปลอดภัยไซเบอร์ครั้งสำคัญนี้เริ่มต้นขึ้นเมื่อวันที่ 27 พฤษภาคม 2026 เวลา 18:53 น. ตามเวลา UTC เมื่อมีไฟล์ชื่อ opencode.json ถูกอัปโหลดขึ้นไปยังไลบรารีสาธารณะ LiteLLM-Labs/lite-harness โดยภายในไฟล์ดังกล่าวมีกุญแจผู้ดูแลระบบสำหรับระบบภายในของ LiteLLM Agent Platform ซ่อนอยู่ แต่หลังจากนั้นเพียงประมาณสามชั่วโมง มีการคอมมิตโค้ดตามมาเพื่อลบไฟล์ดังกล่าวออกไป ทว่าไม่มีใครดำเนินการเพิกถอนกุญแจแอดมินดอกนั้นตามขั้นตอนที่ควรจะเป็น
ต่อมาในวันที่ 21 ตุลาคม กุญแจดอกเดิมที่ถูกหลงลืมไปกลับกลายเป็นจุดเริ่มต้นของห่วงโซ่การโจมตีที่จบลงด้วยการปล่อยซอฟต์แวร์รุ่น litellm==1.107.0 ที่ปนเปื้อนมัลแวร์ขึ้นสู่ PyPI รวมถึงแท็ก Docker ล่าสุดที่ชี้ไปยังอิมเมจที่ถูกเจาะระบบ โดยอ้างอิงข้อมูลจากรายงานสรุปเหตุการณ์ของ LiteLLM และการประเมินยอดดาวน์โหลดจาก Wiz พบว่าอาร์ติแฟกต์ที่ถูกบุกรุกเหล่านี้ออนไลน์อยู่เป็นเวลาประมาณสองชั่วโมง
รายงานระบุว่าการปล่อยอัปเดตดังกล่าวมีคอมไพล์มัลแวร์ที่ทำหน้าที่ขโมยข้อมูลรับรองและโหลดเครื่องมือประมวลผลโค้ดระยะไกล ขณะที่แท็กซอร์สโค้ดทางการ v1.107.0 บน GitHub ไม่เคยมีไฟล์อันตรายเหล่านี้รวมอยู่เลย ด้าน Wiz ได้อ้างอิงข้อมูลจาก ClickPy โดยประเมินว่ายอดดาวน์โหลดของเวอร์ชัน 1.107.0 ในช่วงเวลานั้นอยู่ที่ราวๆ 49,000 ครั้ง
บทเรียนสำคัญจากกรณีนี้คือ การลบไฟล์ที่ซ่อนความลับออกไปไม่ได้เป็นการยกเลิกสิทธิ์ของคีย์นั้นๆ เนื่องจากการคอมมิตเพื่อลบไฟล์จะสร้างสถาปัตยกรรมสแนปชอตใหม่ขึ้นมา แต่สแนปชอตเก่าที่ยังมีคีย์ดังกล่าวฝังอยู่ยังคงเข้าถึงได้ผ่านแฮชจากทุกโคลนและฟอร์กที่ถูกสร้างขึ้นในช่วงเวลานั้น คู่มือของ GitHub ระบุชัดเจนว่าขั้นตอนแรกสุดที่ต้องทำคือการเพิกถอนหรือหมุนเวียนเปลี่ยนความลับ (revoke/rotate) มิฉะนั้นประวัติสาธารณะจะยังคงเก็บคีย์ที่ใช้งานได้จริงเอาไว้ ซึ่งคีย์ของ LiteLLM ดอกนี้ยังคงใช้งานได้นานกว่าสี่เดือน

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
"Secret scanning must open tickets automatically, and the ticket is only closed when revocation is confirmed"
LiteLLM
นอกจากนี้ การใช้เครื่องมือโค้ดดิ้งเอเจนต์ (Coding Agents) อาจทำให้รูปแบบความผิดพลาดนี้สังเกตเห็นได้ยากขึ้น เนื่องจากเอเจนต์อาจเพิ่มไฟล์กำหนดค่าในรอบหนึ่งแล้วลบออกในรอบถัดไป ทำให้ส่วนต่างสุดท้ายในพูลรีเควสต์หักล้างกันพอดี ผู้ตรวจสอบที่อ่านแค่ผลต่างนั้นจึงมองไม่เห็นคีย์ที่ซ่อนอยู่ ทางออกในการตรวจสอบประวัติด้วย Git จึงต้องอาศัยคำสั่งเช่น git log แบบต่างๆ เพื่อค้นหาสตริงคีย์และตัวกรองไฟล์ที่ถูกลบออกไปจากทรีปัจจุบัน
เหตุการณ์นี้สะท้อนให้เห็นช่องโหว่สำคัญในการพัฒนาซอฟต์แวร์ยุคใหม่ที่พึ่งพาเครื่องมืออัตโนมัติและเอเจนต์ เมื่อสิทธิ์ระดับแอดมินหรือเจ้าขององค์กรหลุดรอดไปถึงมือผู้ไม่หวังดี ระบบตรวจสอบความปลอดภัยในไปป์ไลน์ CI/CD ทั่วไปจึงไม่สามารถป้องกันได้เต็มที่ เพราะผู้โจมตีถือสิทธิ์สูงสุดในฐานะเจ้าของระบบเอง การจำกัดสิทธิ์โทเค็นและการตั้งค่าระบบสแกนความลับแบบอัตโนมัติที่ต้องยืนยันการเพิกถอนจึงเป็นมาตรการป้องกันที่ขาดไม่ได้
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น