آسیبپذیری prototype pollution، کتابخانه محبوب jQuery را تحت تاثیر خود قرار دادهاست.
به گزارش افتانا (پایگاه خبری امنیت فناوری اطلاعات)، به تازگی یک وصله امنیتی برای کتابخانه جاوااسکریپت jQuery منتشر شد. ۷۴ درصد از سایتهای اینترنتی از این کتابخانه استفاده میکنند. آخرین بار که این کتابخانه یک وصله امنیتی دریافت کرد به سه سال پیش باز میگردد.
در بهروزرسانی امنیتی ارائهشده برای jQuery یک آسیبپذیری نادر با نام prototype pollution رفع شدهاست. پژوهشگران امنیتی اکنون در حال بررسی این آسیبپذیری در کتابخانههای دیگر جاوااسکریپت هستند.
آسیبپذیری prototype pollution نقصی است که به مهاجم اجازه میدهد تا ساختار و مقدار اولیه یک شیء جاوااسکریپت را تغییر دهد. اشیاء جاوااسکریپت مشابه متغیرها هستند، اما به جای ذخیره کردن یک مقدار در آنها، میتوان بسته به ساختار از پیش تعیینشده چندین مقدار در آنها ذخیره کرد. Prototypeها مقادیر و ساختار پیشفرض یک شیء در جاوااسکریپت هستند تا در صورت عدم تعریف مقادیر یک شیء، برنامهها متوقف نشوند. در صورت وجود نقص prototype pollution، یک مهاجم میتواند ساختار و مقدار اولیه یک شیء را به گونهای بدهد که نحوه پردازش داده توسط یک برنامه جاوااسکریپت تحت تاثیر قرار گیرد. درنتیجه حملاتی از قبیل انکار سرویس (DoS) یا اجرای کد دلخواه انجام دهد.
حملات prototype pollution جدید نیستند و سالهای گذشته مستندسازی شدهاند. با این حال، بهدلیل اینکه زبان جاوااسکریپت به لطف Node.js از یک زبان کنترل تعاملات رابط کاربری به یک زبان سمت سرور تبدیل شدهاست، این حملات بیش از پیش مورد توجه قرار گرفتهاند. همچنین با توجه به اینکه جاوااسکریپت در شمار زیادی از برنامههای دسکتاپ، موبایل، مرورگر و سمت سرور استفاده میشود، حملات prototype pollution میتوانند تبعات جدی به همراه داشتهباشند.
آسیبپذیری کشفشده با شناسه CVE-۲۰۱۹-۱۱۳۵۸ معرفی شدهاست که تمامی نسخههای قبل از ۳,۴.۰ کتابخانه جاوااسکریپت را تحتتاثیر قرار میدهد. همچنین پژوهشگران چندین آسیبپذیری prototype pollution را در کتابخانههای دیگر مانند Mongoose ،lodash.merge ،node.extend ،deep-extend و HAPI شناسایی کردند.
نکته مثبت درباره این آسیبپذیری این است که بهرهبرداری از آن به سادگی انجامپذیر نیست و مهاجم باید کد اکسپلویت خود را به ازای هر هدف تنظیم کند. همچنین مهاجم باید اطلاعات زیادی از نحوه عملکرد اشیاء prototype در برنامه هدف داشتهباشد.
به توسعهدهندگان وب توصیه میشود که از نسخههای اصلاحشده jQuery استفاده کنند.