کشف آسیب‌پذیری Request Smuggling و SSRF در Next.js

کشف آسیب‌پذیری Request Smuggling و SSRF در Next.js

تاریخ ایجاد

دو آسیب‌پذیری با شناسه‌های CVE-2024-34350 و CVE-2024-34351 و شدت‌های بالا در برخی از نسخه‌های Next.js کشف شده‌اند که مربوط به Response queue poisoning و SSRF می‌باشند.
آسیب‌پذیری Response queue poisoning به دلیل تفسیر ناسازگار درخواست‌های HTTP به وجود آمده است که گاهی به عنوان یک درخواست و گاهی دو درخواست جداگانه تفسیر می‌شوند. آسیب‌پذیری SSRF به دلیل استفاده از یک مولفه آسیب‌پذیر در Next.js ایجاد شده است که به طور پیش‌فرض فعال می‌باشد.

جزئیات آسیب‌پذیری HTTP Request Smuggling با شناسه CVE-2024-34350
مهاجم در صورت بهره‌برداری  از این آسیب‌پذیری می‌تواند به طور بالقوه موفق به دریافت پاسخ‌های غیر همگام از Next.js شود و منجر به آسیب‌پذیری Response queue poisoning خواهد شد. این آسیب‌پذیری نوعی حمله Request smuggling می‌باشد که می‌تواند یک سرور front-end را تحت تاثیر قرار دهد و پاسخ‌های نادرستی در back-end نگاشت کند. اما با این وجود به منظور بهره‌برداری از آسیب‌پذیری مذکور، مسیرهای تحت تاثیر باید از ویژگی rewrite در Next.js استفاده کنند. راه حلی جز استفاده از نسخه‌های وصله شده برای مقابله با این آسیب‌پذیری وجود ندارد.

جزئیات آسیب‌پذیری Server-Side Request Forgery با شناسه CVE-2024-34351
این آسیب‌پذیری به دلیل وجود API endpoint آسیب‌پذیر یعنی _next/image به وجود آمده است. NextJS دارای یک مولفه بهینه‌سازی تصویر می‌باشد که به طور پیش‌فرض فعال است. اگر شما دارای یک تصویر بزرگ هستید که می‌خواهید در اندازه کوچک یا اندازه پویا ارائه شود، ارسال آن با اندازه اصلی به سمت کلاینت موجب هدر رفتن پهنای باند خواهد شد. به ازای آن می‌توان یک کد React نوشت و تصویر با اندازه مناسب به سمت کلاینت ارسال خواهد شد. علاوه بر این، تصویر می‌تواند Cash شود و لازم نیست  سرور در هر درخواست مجدداً آن را تغییر اندازه دهد. اگر نسخه NextJS قدیمی باشد مهاجم می‌تواند یک لینک به فایل SVG میزبانی شده بر روی دامنه خود ارائه دهد که منجر به حمله XSS خواهد شد. همچنین به دلیل بررسی‌های ناکافی، امکان افشای محتوای فایل‌های XML از طریق SSRF وجود دارد و به دلیل دریافت Host header از سمت کلاینت، امکان دریافت پاسخ از host به جای خود app وجود دارد که در نهایت منجر به SSRF خواهد شد.

محصولات تحت تاثیر
آسیب‌پذیری HTTP Request Smuggling:
در نسخه‌های قبل از 13.5.1 و نسخه‌های 13.4.0 و بالاتر Next.js وجود دارد که در نسخه 13.5.1 برطرف شده است.
آسیب‌پذیری Server-Side Request Forgery:
در نسخه‌های قبل از 14.1.1 و نسخه‌های 13.4 و بالاتر Next.js وجود دارد که در نسخه 14.1.1 برطرف شده است.

توصیه‌های امنیتی
این دو آسیب‌پذیری در آخرین نسخه منتشر شده Next.js برطرف شده‌اند. توصیه می‌شود کاربان در اسرع وقت به نسخه وصله شده یعنی 14.1.1 به‌روزرسانی نمایند.

منابع خبر:


[1]https://cybersecuritynews.com/next-js-server-compromise/
[2]https://www.assetnote.io/resources/research/digging-for-ssrf-in-nextjs-apps