[ad_1]

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

گتی ایماژ

بسته محبوب NPM “pac-resolution” نقص جدی در اجرای کد از راه دور (RCE) را برطرف کرده است.

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

پروکسی یا پروکسی نیست

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

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

function FindProxyForURL(url, host) {
// Send all *.example requests directly with no proxy:
if (dnsDomainIs(host, '.example.com')) {
return 'DIRECT';
}

// Send every other request via this proxy:
return 'PROXY proxy.example.com:8080';
}

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

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

چندین خط جاوا اسکریپت می توانند VM را دور بزنند که منجر به RCE می شود

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

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

دژنراتور بسته دیگری از همان نویسنده است که با استفاده از ماژول “VM” Node.js به یک تابع در یک سندباکس تبدیل می شود. اما ماژول VM هرگز برای استفاده به عنوان مکانیزم امنیتی طراحی نشده است ، چیزی که به صراحت در اسناد Node.js نوشته شده است. بنابراین ، خروجی دژنراتور-هنگامی که توسط یک زنجیره بسته مانند حل کننده pac ، یک Pac-Proxy-Agent و یک نماینده پروکسی استفاده می شود-یک خطر امنیتی ایجاد می کند.

با اشاره به سلب مسئولیت در اسناد Node ، گفت: “ماژول vm یک مکانیسم امنیتی نیست. پری در پست وبلاگی خود در سال 2019 با عواقب بدتر از آن از آن استفاده نکنید. “

پری همچنین توضیح داد که “این یک مشکل بزرگ ایجاد می کند. در حالی که VM تلاش می کند تا یک محیط جداگانه در یک زمینه جداگانه ایجاد کند ، لیستی طولانی از راه های آسان برای دسترسی به زمینه اصلی و خارج شدن کامل از سندباکس وجود دارد … داخل سندباکس کد کنید تا اساساً هر کاری را که دوست دارید در سیستم خود انجام دهید. “

با این کار ، پری یک کد عملیات با اثبات مفهوم را به اشتراک گذاشت و نشان داد که چگونه مهاجم می تواند از ماشین مجازی خارج شود:

او توضیح داد: “این همه چیز است – این تنها چیزی است که برای خروج از سندباکس ماژول ماشین مجازی لازم است. اگر می توانید از یک فایل PAC به عنوان پیکربندی پروکسی خود استفاده کنید ، می توانید هر کد را روی دستگاه آنها اجرا کنید.”

این آسیب پذیری به شدت بر کسانی که از نسخه های pacolution قبل از 5.0.0 استفاده می کنند ، حتی به طور گذرا در برنامه Node.js خود استفاده می کند و:

  • برای پیکربندی پروکسی به صراحت از فایل های PAC استفاده کنید یا
  • پیکربندی پروکسی سیستم عامل را در Node.js در سیستم های دارای WPAD یا
  • از پیکربندی پروکسی استفاده کنید (env vars ، فایل های پیکربندی ، نقاط پایانی پیکربندی از راه دور ، استدلال های خط فرمان) از یک منبع غیرقابل اعتماد

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

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

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

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



[ad_2]

منبع: tarjome-news.ir