خبر

  • تک بورد - بسته NPM با 3 میلیون بارگیری هفتگی آسیب پذیری شدیدی داشت

    بسته NPM با 3 میلیون بارگیری هفتگی آسیب پذیری شدیدی داشت
    24 روز و 14 ساعت قبل

    فایل پیکربندی غیرقابل اعتماد JavaScript می تواند کد دلخواه را اجرا کند.
    بسته محبوب NPM "pac-resolutionver" یک نقص شدید اجرای کد از راه دور (RCE) را برطرف کرده است.

    بسته pac-resolutionver بیش از 3 میلیون بارگیری هفتگی دریافت می کند و این آسیب پذیری را با وابستگی به منبع باز به برنامه های Node.js گسترش می دهد. Pac-resolution خودش را به عنوان ماژولی که فایلهای پیکربندی پروکسی جاوا اسکریپت را می پذیرد و عملکردی را برای برنامه شما ایجاد می کند که دامنه های خاصی را برای استفاده از پراکسی ترسیم کند.

    به پراکسی یا عدم پروکسی

    این هفته ، توسعه دهنده تیم پری یک نقص شدید در pac-fixer افشا کرد که می تواند بازیگران تهدید را در شبکه محلی قادر به اجرای کد دلخواه در فرآیند Node.js شما در هر زمان که بخواهد درخواست HTTP کند ، شود.

    هنگام اضافه کردن پشتیبانی از پروکسی به HTTP Toolkit خود ، پری شروع به بازرسی کد حل کننده pac کرد و با مشکل امنیتی روبرو شد. به عنوان CVE-2021-23406 پیگیری می شود ، این آسیب پذیری به نحوه پردازش پرونده های Proxy Auto-Config (PAC) توسط ماژول مربوط می شود. فایل های PAC شامل کد جاوا اسکریپت هستند که پیکربندی پروکسی را مشخص می کند - کدام درخواست های شبکه باید از پروکسی عبور کند و کدام باید مستقیماً خارج شود. به عنوان مثال ، در یک فایل PAC ، مدیران شبکه می توانند صراحتا یک پروکسی شبکه را مشخص کنند که از طریق آن تمام ترافیک باید مسیریابی شود و دامنه هایی را که از شرط مستثنی هستند نشان دهد:

    تابع FindProxyForURL (url ، host) {// ارسال همه * .example درخواستها را مستقیماً بدون پروکسی درخواست می کند: if (dnsDomainIs (host، '.example.com')) {return 'DIRECT'؛ } // هر درخواست دیگری را از طریق این پراکسی ارسال کنید: 'PROXY proxy.example.com:8080' را برگردانید ؛ }

    در مثال بالا ، درخواست های شبکه به "example.com" پروکسی را دور می زند ، در حالی که به بقیه ترافیک دستور داده می شود که از طریق یک سرور پروکسی عبور کند.

    ابتدا به عنوان بخشی از Netscape معرفی شد Navigator 2.0 در 1996 ، استاندارد PAC همچنان مرتبط است و امروزه در حال استفاده گسترده است. به عنوان مثال ، پروتکل کشف خودکار پراکسی وب (WAPD) از خدمات DNS و/یا DHCP برای قرار دادن فایل های PAC در شبکه و وارد کردن پیکربندی پروکسی به یک برنامه استفاده می کند. با این حال ، با بزرگتر شدن تنظیمات پروکسی ، کد جاوا اسکریپت در یک فایل PAC می تواند پیچیده تر شود و به طور ایده آل برای اجرا در محیط مجازی (VM) طراحی شده است. به RCE

    و مشکل از آنجا شروع می شود.

    به عنوان مثال ، یک بسته NPM مرتبط با نام Pac-Proxy-Agent ، که توسط همان نویسنده تهیه شده است و بیش از 2 میلیون در هفته بارگیری می کند ، پشتیبانی از فایل PAC را برای برنامه های Node.js فراهم می کند. Pac-Proxy-Agent این کار را با وارد کردن آدرس URL به یک فایل PAC ، بازیابی فایل و سپس به عنوان نماینده HTTP Node.js انجام می دهد و درخواست های خروجی را برای برنامه شما مدیریت می کند. اما Pac-Proxy-Agent نمی تواند به درستی سندهای PAC را سندبوک کند زیرا از ماژول آسیب پذیر pac-resolution استفاده می کند ، که بیشتر برای ایجاد عملکرد PAC به "degenerator" وابسته است.

    Degenerator بسته دیگری است نویسنده ای که به تغییر کد دلخواه با استفاده از ماژول "VM" Node.js به یک تابع سندباکس کمک می کند. اما ماژول VM هرگز برای استفاده به عنوان مکانیزم امنیتی طراحی نشده است ، چیزی که به صراحت در اسناد Node.js بیان شده است. بنابراین ، خروجی از انحطاط کننده-هنگامی که توسط زنجیره ای از بسته ها مانند pac-resolutioner ، Pac-Proxy-Agent و proxy-agent استفاده می شود-یک خطر امنیتی ایجاد می کند.

    با اشاره به سلب مسئولیت در اسناد Node ، پری در یک پست وبلاگی گفت: "ماژول vm یک مکانیسم امنیتی نیست. از آن برای اجرای کد های غیرقابل اعتماد استفاده نکنید." "این یک اشتباه آسان است - این یک متن کوچک است (صادقانه بگویم ، باید عنوان آن صفحه باشد و در کنار هر روشی) و MongoDB نیز دقیقاً همین کار را در سال 2019 انجام داد ، با عواقب بدتر. " در یک زمینه جداگانه ، یک لیست طولانی از راههای آسان برای دسترسی به بافت اصلی و خروج کامل از سندباس وجود دارد ... اجازه می دهد کد داخل "سندباکس" اساساً هر کاری را که دوست دارد در سیستم شما انجام دهد. "

    تبلیغات

    با این ، پری یک کد سوء استفاده از اثبات مفهوم را نشان داد که چگونه مهاجم می تواند از VM خارج شود:

    https://techbord.com بسته NPM با 3 میلیون بارگیری هفتگی آسیب شخصیتی شدیدی داشت بزرگنمایی

    "تمام است - این تنها چیزی است که برای خروج از سندباکس ماژول VM لازم است. اگر بتوانید از یک فایل PAC به عنوان پیکربندی خود برای یک هدف آسیب پذیر استفاده کنید ، می توانید کد دلخواه را روی دستگاه آنها اجرا کنید. " 5.0.0 ، حتی در برنامه Node.js آنها ، و: vars ، فایلهای پیکربندی ، نقاط پایانی پیکربندی از راه دور ، استدلالهای خط فرمان) از یک منبع غیرقابل اعتماد

    یک مهاجم از راه دور می تواند ، در هر یک از این سناریوها ، آدرس PAC مخرب را پیکربندی کرده و هر زمان که درخواست HTTP باشد ، کد دلخواه را در رایانه اجرا کند. با استفاده از پیکربندی پروکسی انجام شده است.

    راه حل رفع مشکل pac در نسخه 5.0.0 شامل صرفاً افزایش نسخه دژنراتور به 3.0.1 است. رفع اصلی به خود دژنراتور رفته و مکانیزم سندبکس قوی تری را پیاده سازی می کند از طریق ماژول vm2 برای "جلوگیری از امتیاز افزایش کد غیرقابل اعتماد. "

    پری از Snyk برای حمایت از توسعه دهنده در طول فرآیند هماهنگ سازی افشای آسیب پذیری تشکر کرد.

    توسعه دهندگان آسیب دیده باید به نسخه 5.0.0 یا بالاتر برای رفع مشکل ارتقاء دهند. این آسیب پذیری شدید در برنامه های آنها وجود دارد.





خبرهای دیگر از فناوری اطلاعات