Lodash

Lodash یک کتابخانه محبوب npm است که توسط بیش از ۴ میلیون پروژه در GitHub به‌تنهایی استفاده شده است، تحت تأثیر یک آسیب‌پذیری امنیتی شدید قرار گرفته است که می‌تواند به مهاجمان اجازه دهد تا امنیت سرویس‌هایی که از این کتابخانه استفاده می‌کنند و پایگاه کاربر مربوطه را در معرض خطر قرار دهد.

Lodash یک کتابخانه جاوا اسکریپت است که حاوی ابزارهایی برای ساده‌سازی برنامه‌نویسی با رشته‌ها، اعداد، آرایه‌ها، توابع و اشیاء است که به برنامه نویسان کمک می‌کند تا کد جاوا اسکریپت خود را بهتر و کارآمد نگه‌دارند [۱].

Liran Tal یک توسعه‌دهنده در پلتفرم امنیتی منبع باز Snyk، اخیراً جزئیات و بهره‌بردار اثبات ادعای یک آسیب‌پذیری امنیتی prototype pollution را منتشر کرده است که روی تمامی نسخه‌های lodash از جمله آخرین نسخه‌ی آن یعنی ۴٫۱۷٫۱۱ تأثیر می‌گذارد.

این آسیب‌پذیری با عنوان CVE-2019-10744 شناخته می‌شود[۲] و به‌طور بالقوه روی تعداد زیادی از پروژه‌های frontend تأثیر می‌گذارد، زیرا loadash دارای محبوبیت زیادی است و با سرعت بیش از ۸۰ میلیون بار در ماه دانلود می‌شود.

Prototype pollution یک آسیب‌پذیری است که مهاجمان را قادر می‌سازدPrototype  شیء جاوا اسکریپت وب اپلیکیشن را تغییر دهند که مانند متغیری است که می‌تواند برای ذخیره چندین مقدار بر اساس یک ساختار از پیش تعریف‌شده استفاده شود.

این ساختارها و مقادیر پیش‌فرض، Prototype  نامیده می‌شوند که از زمانی که هیچ مقداری تنظیم نشده است، از hashing یک برنامه جلوگیری می‌کنند.

بااین‌حال، اگر یک مهاجم موفق به تزریق خواص بهPrototype  های زبان جاوا اسکریپت موجود شود و این ویژگی‌ها را برای بازنویسی یا آلوده کردن دست‌کاری کند، می‌تواند چگونگی اینکه یک برنامه اشیاء جاوا اسکریپت را پردازش می‌کند از طریق زنجیرهPrototype  تأثیر بگذارد و منجر به مسئله‌ی denial of service یا آسیب‌پذیری اجرای کد از راه دور شود.

با توجه به Tal، تابع defaultsDeep در کتابخانه Lodash می‌تواند با استفاده از یک payload سازنده فریب داده شود تا خواص Object.prototype را اصلاح یا تغییر دهد، که می‌تواند منجر به crash کردن وب اپلیکیشن و یا تغییر رفتار آن، بسته به use-case تحت تأثیر شود.

لازم به ذکر است که بهره‌برداری از نقایص prototype pollution آسان نیست و نیاز به دانش عمیق در مورد چگونگی کار هر وب اپلیکیشن مورد هدف دارد.

این محقق مسئولانه این آسیب‌پذیری را به John Dalton، سازنده‌ی Lodash گزارش کرده است و پیشنهادی برای برطرف کردن آن داده است[۳و۴] که در نسخه بعدی این کتابخانه باید آورده شده است که انتظار می‌رود خیلی زود منتشر شود.

اگر پروژه شما نیز در Lodash استفاده می‌شود، توصیه می‌شود فوراً کتابخانه خود را به‌محض انتشار وصله‌ی رسمی آن به‌روزرسانی کنید یا به‌طور دستی وصله‌های موردنظر را اعمال کنید.

 

منابع

[۱] https://lodash.com

[۲] https://snyk.io/blog/snyk-research-team-discovers-severe-prototype-pollution-security-vulnerabilities-affecting-all-versions-of-lodash

[۳] https://github.com/lodash/lodash/pull/4336

[۴] https://github.com/lodash/lodash/pull/4337

[۵] https://thehackernews.com/2019/07/lodash-prototype-pollution.html