بسته NPM Pac-Resolver که بیش از 3 میلیون دانلود در هفته دارد، دارای یک آسیبپذیری (CVE-2021-23406) است که به کد جاوا اسکریپت آن اجازه میدهد هنگام ارسال درخواستهای HTTP از پروژههای Node.js در متن برنامه اجرا شود. پشتیبانی از عملکرد پیکربندی خودکار سرور پروکسی
بسته pac-resolver فایلهای PAC را که شامل یک اسکریپت پیکربندی خودکار پراکسی هستند، تجزیه میکند. فایل PAC حاوی کد جاوا اسکریپت معمولی با تابع FindProxyForURL است که منطق انتخاب یک پروکسی را بسته به میزبان و URL درخواستی تعریف می کند. ماهیت آسیب پذیری این است که برای اجرای این کد جاوا اسکریپت در pac-resolver، از VM API ارائه شده در Node.js استفاده شده است که به شما امکان می دهد کد جاوا اسکریپت را در زمینه متفاوتی از موتور V8 اجرا کنید.
API مشخص شده به صراحت در اسناد علامت گذاری شده است که برای اجرای کدهای نامعتبر در نظر گرفته نشده است، زیرا جداسازی کامل کد در حال اجرا را ارائه نمی دهد و امکان دسترسی به متن اصلی را فراهم می کند. این مشکل در pac-resolver 5.0.0 حل شده است، که به استفاده از کتابخانه vm2 منتقل شده است، که سطح بالاتری از انزوا را برای اجرای کدهای نامعتبر فراهم می کند.
هنگام استفاده از نسخه آسیبپذیر pac-resolver، مهاجم از طریق ارسال یک فایل PAC طراحی شده خاص میتواند به اجرای کد جاوا اسکریپت خود در زمینه کد یک پروژه با استفاده از Node.js دست یابد، اگر این پروژه از کتابخانههایی استفاده کند که وابستگی دارند. با pac-resolver. محبوبترین کتابخانههای مشکلساز Proxy-Agent است که به عنوان وابستگی به 360 پروژه، از جمله urllib، aws-cdk، mailgun.js و firebase-tools فهرست شده است که در مجموع بیش از سه میلیون بار در هفته دانلود میشود.
اگر برنامهای که وابستگی به Pac Resolver دارد، یک فایل PAC ارائه شده توسط سیستمی را بارگیری کند که از پروتکل پیکربندی خودکار پروکسی WPAD پشتیبانی میکند، مهاجمانی که به شبکه محلی دسترسی دارند میتوانند از توزیع تنظیمات پراکسی از طریق DHCP برای درج فایلهای PAC مخرب استفاده کنند.
منبع: opennet.ru