ไลบรารี jsPDF ที่ใช้สำหรับสร้างเอกสาร PDF ในแอปพลิเคชัน JavaScript มีช่องโหว่ร้ายแรง (CVE-2025-68428) ที่ทำให้ผู้โจมตีสามารถขโมยข้อมูลที่ละเอียดอ่อนจากระบบไฟล์ในเครื่องได้ โดยการแทรกข้อมูลเหล่านั้นเข้าไปในไฟล์ PDF ที่สร้างขึ้น ช่องโหว่นี้ได้รับการจัดอันดับความรุนแรงที่ 9.2 และส่งผลกระทบต่อ jsPDF เวอร์ชันก่อน 4.0 โดยเฉพาะ Node.js builds ที่ใช้ฟังก์ชัน ‘loadFile’ ซึ่งสามารถถูกหลอกให้เข้าถึงพาธไฟล์ที่ไม่ถูกตรวจสอบได้ แม้จะมีการแก้ไขในเวอร์ชัน 4.0.0 โดยจำกัดการเข้าถึงระบบไฟล์ แต่การตั้งค่าสิทธิ์ที่ไม่เหมาะสมใน Node.js หรือการไม่ได้อัปเกรด Node.js เวอร์ชันที่แนะนำ อาจทำให้การแก้ไขไม่มีผลสมบูรณ์.

     

Severity: วิกฤต

      
     

System Impact:

     

  • ไลบรารี jsPDF สำหรับการสร้างเอกสาร PDF ในแอปพลิเคชัน JavaScript
  • jsPDF เวอร์ชันก่อน 4.0
  • Node.js builds ของไลบรารี jsPDF (โดยเฉพาะไฟล์ dist/jspdf.node.js และ dist/jspdf.node.min.js)

      
     

Technical Attack Steps:

     

  1. ช่องโหว่นี้เป็นแบบ Local File Inclusion (LFI) และ Path Traversal.
  2. ผู้โจมตีส่งผ่านพาธที่ไม่ถูกตรวจสอบ (unsanitized paths) ไปยังฟังก์ชัน ‘loadFile’ (รวมถึง ‘addImage’, ‘html’, ‘addFont’ ซึ่งเรียกใช้ ‘loadFile’) ใน jsPDF Node.js builds ที่ได้รับผลกระทบ.
  3. jsPDF จะทำการอ่านระบบไฟล์ในเครื่องตามพาธที่ผู้โจมตีระบุ.
  4. เนื้อหาของไฟล์ในเครื่องที่ระบุจะถูกแทรกเข้าไปในเอาต์พุต PDF ที่สร้างขึ้น.
  5. ทำให้ผู้โจมตีสามารถขโมยข้อมูลที่ละเอียดอ่อนจากระบบไฟล์ในเครื่องได้.

      
     

Recommendations:

     

Short Term:

     

  • อัปเกรดไลบรารี jsPDF เป็นเวอร์ชัน 4.0.0 หรือใหม่กว่าทันที.
  • สำหรับ Node.js เวอร์ชันเก่าที่ไม่สามารถอัปเกรด jsPDF ได้ทันที ให้ตรวจสอบและทำความสะอาด (sanitize) พาธที่ผู้ใช้ป้อนให้ถูกต้องอย่างเข้มงวด ก่อนส่งไปยังฟังก์ชันของ jsPDF.

     

Long Term:

     

  • อัปเกรด jsPDF เป็นเวอร์ชัน 4.0.0 หรือใหม่กว่า เพื่อแก้ไขช่องโหว่โดยการจำกัดการเข้าถึงระบบไฟล์โดยค่าเริ่มต้น.
  • แนะนำให้อัปเกรด Node.js เป็นเวอร์ชัน 22.13.0, 23.5.0, หรือ 24.0.0 ขึ้นไป เพื่อรองรับโหมดสิทธิ์ (permission mode) ที่สมบูรณ์ ซึ่งช่วยเสริมความปลอดภัย.
  • หลีกเลี่ยงการตั้งค่าสิทธิ์การเข้าถึงระบบไฟล์ที่กว้างเกินไปเมื่อใช้แฟล็ก ‘–allow-fs-read’ เนื่องจากจะทำให้การแก้ไขช่องโหว่ไม่มีผลและยังคงมีความเสี่ยงอยู่.
  • ใช้ allowlist ที่เข้มงวดสำหรับการป้อนข้อมูล หากมีการรับค่าพาธไฟล์จากผู้ใช้ เพื่อป้องกันการแทรกพาธที่ไม่พึงประสงค์.

      
     

Source: https://www.bleepingcomputer.com/news/security/critical-jspdf-flaw-lets-hackers-steal-secrets-via-generated-pdfs/

   

Share this content:

Leave a Reply

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