کشف آسیب‌پذیری در کتابخانه جاوااسکریپت jsPDF

کشف آسیب‌پذیری در کتابخانه جاوااسکریپت jsPDF

تاریخ ایجاد

کتابخانه jsPDF  یک کتابخانه JavaScript برای تولید فایل‌های PDF در سمت کاربر و سمت سرور است که به‌طور گسترده در برنامه‌های مبتنی بر Node.js مورد استفاده قرار می‌گیرد. اخیرا یک آسیب‌پذیری بحرانی با شناسهCVE-2025-68428  و شدت ۹.۲ در نسخه‌های Node.js کتابخانه jsPDF گزارش شده است که به مهاجم اجازه می‌دهد از طریق دستکاری مسیر فایل‌ها، به محتوای فایل‌های دلخواه در سیستم فایل سرور دسترسی پیدا کند. این ضعف می‌تواند محرمانگی داده‌ها و امنیت کلی سامانه را به‌شدت تحت تأثیر قرار دهد.

جزئیات آسیب‌پذیری ها

این آسیب‌پذیری ناشی از عدم اعتبارسنجی و پاک‌سازی مناسب مسیر فایل‌ها در متد loadFile و برخی متدهای مرتبط در نسخه Node.js کتابخانه jsPDF است. اگر مسیر فایلی که به متد) loadFileیا متدهای مشابه در jsPDF نسخه (Node.js داده می‌شود، از ورودی کاربر تأمین شود و قبل از استفاده اعتبارسنجی و محدودسازی نشود، امکان عبور از مسیرهای مجاز و دسترسی به فایل‌های دلخواه سیستم فایل وجود دارد. بنابراین، مهاجم می‌تواند با ارسال مسیرهای دلخواه، محتوای فایل‌های حساس موجود در سرور (مانند فایل‌های پیکربندی، کلیدها یا اطلاعات سیستمی) را خوانده و این محتوا به‌صورت مستقیم در فایل PDF تولیدشده درج می‌شود. این مسئله یک ضعف جدی از نوع  پیمایش مسیر محسوب می‌شود.

بردار CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N نشان می­دهد این آسیب‌پذیری از طریق شبکه و از راه دور با سهولت بالا قابل بهره‌برداری است. مهاجم بدون داشتن شرایط خاص، دسترسی قبلی یا مجوز معتبر و بدون نیاز به تعامل کاربر نهایی، می‌تواند حمله را انجام دهد. مهاجم قادر است به فایل‌های مهم و حساس دسترسی پیدا کند، و محرمانگی در دامنه گسترده‌تری نقض می‌گردد اما یکپارچگی داده‌ها و دسترس‌پذیری سامانه به‌طور مستقیم تحت تأثیر قرار نمی‌گیرد و تغییر مستقیم در داده‌ها یا ایجاد اختلال در سرویس رخ نمی‌دهد.

نسخه‌های تحت تاثیر

این آسیب‌پذیری صرفاً تمامی نسخه‌های Node.js کتابخانه  jsPDF قبل از 4.0.0 را تحت تاثیر قرار می دهد و فایل‌های jspdf.node.js و jspdf.node.min.js در مسیر dist / آسیب‌پذیر هستند. نسخه‌های مرورگری تحت تأثیر این نقص قرار ندارند.

توصیه‌های امنیتی

  • به‌روزرسانی به نسخه امن: ارتقاء فوری کتابخانه jsPDF به نسخه 4.0.0 یا بالاتر در تمامی پروژه‌های مبتنی بر Node.js.
  • محدودسازی دسترسی به سیستم فایل: استفاده از قابلیت‌های امنیتی جدیدNode.js ، به‌ویژه اجرای برنامه با  --permission در محیط‌های عملیاتی.
  • اعتبارسنجی ورودی‌های کاربر: پاک‌سازی و محدودسازی کامل مسیرهای فایل دریافت‌شده از کاربر پیش از ارسال به متدهای jsPDF، به‌خصوص در نسخه‌های قدیمی Node.js.
  • کاهش سطح دسترسی فرآیند Node.js: اجرای سرویس Node.js با حداقل مجوزهای لازم در سطح سیستم عامل.
  • بازبینی کاربرد jsPDF در کد: بررسی تمامی نقاطی که متدهای loadFile، addImage، html و addFont با ورودی پویا فراخوانی می‌شوند.

منابع

https://nvd.nist.gov/vuln/detail/CVE-2025-68428

https://github.com/parallax/jsPDF/commit/a688c8f479929b24a6543b1fa2d6364abb03066d

https://www.cve.org/CVERecord?id=CVE-2025-68428

https://www.cvedetails.com/cve/CVE-2025-68428