มีการตรวจพบช่องโหว่วิกฤตในไลบรารี PLY (Python Lex-Yacc) เวอร์ชัน 3.11 ที่เผยแพร่ผ่าน PyPI ซึ่งช่วยให้สามารถรันโค้ดตามอำเภอใจได้ผ่านการ deserialization ไฟล์ pickle ที่ไม่น่าเชื่อถือโดยไม่ปลอดภัย ช่องโหว่นี้ระบุด้วยรหัส CVE-2025-56005 ส่งผลกระทบต่อพารามิเตอร์ `picklefile` ที่ไม่ได้มีการบันทึกไว้ในฟังก์ชัน `yacc()` ซึ่งยังคงไม่มีอยู่ในเอกสารทางการ แม้จะมีการใช้งานในเวอร์ชันที่เผยแพร่จริงก็ตาม ช่องโหว่นี้ก่อให้เกิดความเสี่ยงที่ไม่เหมือนใคร เนื่องจากโค้ดจะถูกรันอย่างเงียบๆ ในระหว่างการเริ่มต้นแอปพลิเคชัน ก่อนที่จะเข้าถึงตรรกะการวิเคราะห์ใดๆ

     

Severity: วิกฤต

      
     

System Impact:

     

  • ไลบรารี PLY (Python Lex-Yacc) เวอร์ชัน 3.11 ที่เผยแพร่ผ่าน PyPI
  • สภาพแวดล้อมที่ตาราง parser ถูกแคชไว้บนดิสก์
  • สภาพแวดล้อมที่มีการแชร์ตาราง parser ระหว่างบริการต่างๆ
  • สภาพแวดล้อมที่มีการสร้างตาราง parser ใน CI/CD pipelines
  • แอปพลิเคชันที่ใช้ไลบรารี PLY 3.11

      
     

Technical Attack Steps:

     

  1. ช่องโหว่เกิดจากพารามิเตอร์ `picklefile` ในฟังก์ชัน `yacc()` ซึ่งเป็นพารามิเตอร์ที่ไม่ได้มีการบันทึกไว้
  2. พารามิเตอร์ `picklefile` เรียกใช้ `pickle.load()` บนไฟล์ที่ผู้โจมตีควบคุมได้โดยไม่มีการตรวจสอบความถูกต้อง
  3. โมดูล `pickle` ของ Python มีการรองรับการรันโค้ดตามอำเภอใจในระหว่างการ deserialization ผ่านเมธอด `__reduce__()`
  4. ผู้โจมตีสามารถควบคุม, แทนที่ หรือมีอิทธิพลต่อเส้นทางของไฟล์ pickle ได้ (เช่น ตำแหน่งตาราง parser ที่แคชไว้, ไดเรกทอรีเครือข่ายที่ใช้ร่วมกัน, อาร์ติแฟกต์ของ CI/CD pipeline, หรือเส้นทางไฟล์ที่กำหนดค่าหรือเขียนได้)
  5. การโหลดไฟล์ pickle ที่สร้างขึ้นโดยเฉพาะ (malicious pickle payload) ที่มีเมธอด `__reduce__()` ที่ฝังอยู่ จะทำให้โค้ดถูกรันโดยพลันก่อนที่ parser จะเริ่มทำงาน

      
     

Recommendations:

     

Short Term:

     

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

     

Long Term:

     

  • สร้างตาราง parser แบบไดนามิก แทนที่จะโหลดจากดิสก์
  • นักพัฒนาควรอัปเดตแอปพลิเคชันที่ใช้ PLY 3.11
  • ตรวจสอบการตั้งค่าเพื่อหาช่องโหว่ที่อาจเกิดขึ้นผ่านพารามิเตอร์ที่ไม่ได้มีการบันทึกไว้

      
     

Source: https://cybersecuritynews.com/python-ply-library-vulnerability/

   

Share this content:

Leave a Reply

Your email address will not be published. Required fields are marked *