دو باگ DoS جدی تو body-parser و multer اکسپرس
خلاصهٔ کاملتر
تیم Express نسخههای 2.4.0 و 1.20.9 از body-parser و نسخه 2.5.0 از multer رو منتشر کرده. این نسخهها دو آسیبپذیری DoS (یعنی حملهای که سرور رو از دسترس خارج میکنه) رو برطرف میکنن. هر دو شدت High دارن و مشترکشون اینه که یه درخواست بدون احراز هویت کافیه تا پروسه Node کرش کنه.
اولی CVE-2026-111181 تو body-parser هست. این middleware بهطور پیشفرض بدنههای فشردهشده رو باز میکنه. اگه بدنه درخواست یه بخش gzip معتبر باشه و بعدش چند بایت اضافه بیاد، بخش اول درست دیکود میشه و اپ هم جواب عادی میده. ولی اون بایتهای اضافه به stream فشردهسازیای میرسن که کارش تموم شده و خطا میده. چون دیگه کسی گوشبهزنگ این خطا نیست، تبدیل میشه به یه uncaught exception (یعنی خطایی که هیچجا گرفته نشده) و پروسه میخوابه. پارس کردن قبل از routing انجام میشه، پس لازم نیست درخواست به route خاصی بخوره. نسخههای آسیبپذیر >= 2.0.0, < 2.4.0 و < 1.20.9 هستن.
دومی CVE-2026-113872 تو multer هست، middlewareی که آپلود فایل رو مدیریت میکنه. multer برای هر فایل آپلودی یه fileFilter که خودت نوشتی رو اجرا میکنه. اگه این تابع async باشه و درخواست وسط کار قطع بشه، مثلاً چون یه فایل رد شده، ممکنه filter یه فایل دیگه هنوز تموم نشده باشه. بعداً که این callback برمیگرده، streamی رو ادامه میده که multer قبلاً جمعش کرده. اینجا busboy (کتابخونهای که multer برای پارس استفاده میکنه) خطا میده و پروسه کرش میکنه. نسخههای >= 2.0.0, < 2.5.0 آسیبپذیرن، ولی اگه fileFilter تو sync باشه مشکلی نداری.
تیم Express یه نکته هم درباره CVE-2026-111497 گفته، یه باگ out-of-bounds write (یعنی نوشتن بیرون از محدوده حافظه) تو دیکودر Brotli که گوگل منتشرش کرده. Node.js همین دیکودر رو داخل خودش داره و بادیپارسرهای Express مثل express.json() با تنظیمات پیشفرض، بدنههای Content-Encoding: br رو از طریق zlib.createBrotliDecompress() باز میکنن. توصیه تیم اینه که خود Node.js رو به نسخهای که دیکودر پچشده داره آپدیت کنی، چون راهحل اصلی همینه. فقط اگه نمیتونی Node رو آپدیت کنی و به بدنههای Brotli نیاز نداری، این درخواستها رو قبل از رسیدن به body parser رد کن.
نکات کلیدی:
- body-parser نسخه 2.4.0 و 1.20.9 باگ CVE-2026-111181 رو رفع میکنن
- multer نسخه 2.5.0 باگ CVE-2026-113872 رو رفع میکنه
- هر دو باگ با یه درخواست بدون احراز هویت پروسه Node رو کرش میکنن
- باگ multer فقط وقتی پیش میاد که fileFilter بهصورت async نوشته شده باشه
- برای باگ Brotli (CVE-2026-111497) راهحل اصلی آپدیت خود Node.js هست




