کشف آسیب‌پذیری در SvelteKit

کشف آسیب‌پذیری در SvelteKit

تاریخ ایجاد

به تازگی محققان امنیتی یک آسیب‌پذیری با شناسه CVE-2024-23641 و شدت CVSS=7.5 در برخی از نسخه‌های ابزار توسعه وب SvelteKit 2 کشف کردند. این ابزار که یک چهار چوب جاوا اسکریپتی است به توسعه‌دهندگان ابزارهای تحت وب اجازه می‌دهد تا با سهولت بیشتری بتوانند تغییرات دلخواه خود را در کدها پیاده‌سازی کنند. با توجه به ساختار اجرایی این ابزار، کاربر اجازه ارسال دیتا در بدنه (body) درخواست‌های ارسال شده از طریق متد HEAD یا GET را ندارد. این محدودیت برای اپلیکیشن‌هایی است که با این ابزار طراحی شده‌اند و در حالت پیش نمایش یا میزبانی (preview/hosting) قرار دارند. در صورتی که کاربر این نوع درخواست‌ها را ارسال کند خطای زیر برای او نمایش داده خواهد شد:


TypeError: Request with GET/HEAD method cannot have body

اما زمانی که مهاجم اقدام به ارسال یک درخواست با شرایط مذکور می‌کند؛ به دلیل عدم وجود مکانیزم مناسب در اعتبارسنجی ورودی‌های ارسال شده از سمت کاربر (Proper Input Validation) در SvelteKit2 ، مهاجم می‌تواند از این آسیب‌پذیری بهره‌برداری کند که این امر منجر به از دسترس خارج شدن برنامه‌هایی که از دو پکیج زیر استفاده می‌کنند خواهد شد:


•    @sveltejs/adapter-node 
•    @sveltejs/kit 

مهاجم برای بهره‌برداری از این آسیب‌پذیری مراحل زیر را انجام می‌دهد:
•    ابتدا ابزار SvelteKit2 را نصب می‌کند و سپس دستورات زیر را به ترتیب اجرا می‌کند:


1)    npm run build
2)    npm run preview
3)    http://localhost:4173 
4)    curl -X GET -d "{}" http://localhost:4173/bye
5)    http://localhost:4173 

•    مهاجم بعد از اجرای دستور (3) مطمئن می‌شود که سرویس روی پورت شماره 4137 در حال اجرا است.
•    سپس در دستور (4)، مهاجم با استفاده از ابزار curl اقدام به ارسال یک درخواست با متد GET که در بدنه آن مقدار ({}) وجود دارد می‌کند.  همان طور که در تصویر زیر مشاهده می‌شود مهاجم وقتی دوباره به آدرس http://localhost:4173 می‌رود متوجه خواهد شده که سرویس از دسترس خارج شده است. 

1

•    اگر چه خطای صحیح نبودن ساختار درخواست ارسالی برای مهاجم در خط اول نمایش داده شده است، اما SvelteKit2 اقدام به پردازش درخواست کرده که منجر به از دسترس خارج شدن این سرویس می‌شود و پس از رخ دادن حمله DOS، آن سرویس باید مجدد اجرا شود.
به گفته محققان امنیتی، علاوه بر درخواست‌هایی که با متد GET و HEAD ارسال شده‌اند و دارای بدنه هستند، درخواست ارسال شده با متد TRACE نیز اگر حاوی بدنه باشد می‌تواند منجر به رخ دادن حمله DOS شود.


محصولات آسیب‌پذیر
نسخه‌های آسیب‌پذیر SvelteKit2  عبارتند از: 
•    در پکیج sveltejs/kit@ تمام نسخه‌ها: از نسخه 2.0.0 تا نسخه 2.4.2
•    در پکیج sveltejs/adapter-node@ تمام نسخه‌های زیر 
o    از نسخه 2.0.0 تا نسخه 2.1.1
o    از نسخه 3.0.0 تا نسخه 3.0.2
o    نسخه 4.0.0 
لازم به ذکر است SvelteKit1 در برابر آسیب‌پذیری CVE-2024-23641 ایمن است.

توصیه‌های امنیتی
به گفته محققان امنیتی لازم است تا کاربران نسخه مورد استفاده خود را به نسخه‌های وصله‌شده به‌روزرسانی کنند:
•    در پکیج sveltejs/kit@ تمام نسخه‌های آسیب‌پذیر باید به نسخه وصله‌شده 2.4.3 به‌روزرسانی شوند.
•    در پکیج sveltejs/adapter-node@ 
o    از نسخه 2.0.0 تا نسخه 2.1.1 باید به نسخه امن شده 2.4.3 به‌روزرسانی شوند.
o    از نسخه 3.0.0 تا نسخه 3.0.2 باید به نسخه امن شده 3.0.3 به‌روزرسانی شوند.
o    نسخه 4.0.0 باید به نسخه امن شده 4.0.1 به‌روزرسانی شود.

منابع خبر:


[1] https://www.cve.org/CVERecord?id=CVE-2024-23641
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-23641