x

ช่องโหว่ร้ายแรง jsPDF เสี่ยงข้อมูลรั่วผ่าน PDF

🚨 ช่องโหว่ร้ายแรง jsPDF เสี่ยงข้อมูลรั่วผ่านไฟล์ PDF

นักวิจัยด้านความปลอดภัยออกมาเตือนถึง ช่องโหว่ระดับ Critical ใน jsPDF ไลบรารียอดนิยมสำหรับสร้างไฟล์ PDF บนแอปพลิเคชัน JavaScript ซึ่งอาจเปิดทางให้แฮกเกอร์ ดึงข้อมูลลับจากไฟล์ในเครื่องเซิร์ฟเวอร์ ออกไปฝังอยู่ในไฟล์ PDF ได้โดยที่ผู้ดูแลระบบไม่รู้ตัว 😱

🔍 รายละเอียดช่องโหว่ CVE-2025-68428

ช่องโหว่นี้ถูกติดตามภายใต้รหัส CVE-2025-68428 มีคะแนนความรุนแรงสูงถึง 9.2
ต้นเหตุเกิดจากปัญหา Local File Inclusion และ Path Traversal ในฟังก์ชัน loadFile ของ jsPDF เวอร์ชันก่อน 4.0 ซึ่งเปิดโอกาสให้ส่ง path ที่ไม่ได้ผ่านการกรอง (unsanitized path) เข้าไปอ่านไฟล์ในระบบได้

📌 หากมีการนำ input จากผู้ใช้ไปใช้เป็น path โดยตรง
jsPDF อาจดึงเนื้อหาไฟล์ภายในเครื่อง เช่น

  • ไฟล์ config

  • environment variables

  • credential หรือ secret key
    ไปฝังอยู่ใน PDF ที่ถูกสร้างขึ้นทันที ⚠️

📦 ไลบรารียอดนิยม แต่ความเสี่ยงสูง

jsPDF เป็นแพ็กเกจที่ถูกใช้อย่างแพร่หลายมาก โดยมียอดดาวน์โหลดกว่า 3.5 ล้านครั้งต่อสัปดาห์ บน npm
ฟังก์ชันที่ได้รับผลกระทบไม่ได้มีแค่ loadFile เท่านั้น แต่ยังรวมถึง

  • addImage

  • html

  • addFont

เนื่องจากทั้งหมดมีการเรียกใช้ loadFile ภายในเช่นกัน

⚠️ หมายเหตุ: ช่องโหว่นี้กระทบเฉพาะ jsPDF เวอร์ชันที่รันบน Node.js เช่น
jspdf.node.js และ jspdf.node.min.js

🛠️ วิธีแก้ไขและลดความเสี่ยง

ทีม jsPDF ได้ออกแพตช์แก้ไขแล้วใน เวอร์ชัน 4.0.0 โดย

  • จำกัดการเข้าถึง filesystem เป็นค่าเริ่มต้น

  • ใช้ Node.js permission mode แทน

🔐 อย่างไรก็ตาม ผู้เชี่ยวชาญแนะนำให้ใช้ Node.js เวอร์ชัน
22.13.0, 23.5.0 หรือ 24.0.0 ขึ้นไป
เนื่องจาก permission mode ใน Node 20 ยังอยู่ในสถานะ experimental

⚠️ ข้อควรระวังเพิ่มเติม:

  • การใช้ flag --permission จะกระทบทั้ง process ของ Node.js

  • หากตั้งค่า --allow-fs-read กว้างเกินไป จะทำให้การป้องกันไร้ผล

  • สำหรับ Node เวอร์ชันเก่า ควร sanitize path จากผู้ใช้ทุกครั้ง

🧩 บทเรียนสำคัญสำหรับองค์กร

ด้วยการใช้งาน jsPDF อย่างแพร่หลายในระบบเว็บและระบบภายในองค์กร
ช่องโหว่นี้ถือเป็นเป้าหมายที่มีโอกาสถูกนำไปโจมตีจริงสูงมาก 🚨

👉 องค์กรควร:

  • ตรวจสอบ dependency และเวอร์ชันของ jsPDF

  • หลีกเลี่ยงการรับ path จาก user โดยตรง

  • ใช้หลัก least privilege กับ Node.js process

  • ทำ Security Code Review อย่างสม่ำเสมอ

สำหรับองค์กรที่ไม่มีทีมดูแลเฉพาะทาง
การใช้ IT Outsource หรือ บริการดูแลระบบคอมพิวเตอร์ จะช่วยตรวจสอบช่องโหว่, อัปเดตแพตช์ และลดความเสี่ยงด้านความปลอดภัยได้อย่างมืออาชีพ 🔐💼

ที่มา – https://www.bleepingcomputer.com/news/security/critical-jspdf-flaw-lets-hackers-steal-secrets-via-generated-pdfs/