یک آسیبپذیری امنیتی از نوع Stack-based Buffer Overflow در نرمافزار Espruino نسخه 2v29 (commit bffc6d0) شناسایی شده است که در مسیر مدیریت Stack-trace خطاهای JavaScript در بیلدهای ۶۴ بیتی رخ میدهد.
جزئیات فنی آسیبپذیری
این نقص امنیتی زمانی فعال میشود که یک مهاجم از راه دور (Remote Attacker)، ورودیهای JavaScript خاصی را ارسال کند که منجر به ایجاد یک Exception شود. در این حالت، برنامه به تابع jslPrintTokenLineMarker() هدایت میشود.
- مکان خطا: در این مرحله، آدرس یک متغیر 4-byte int (مربوط به ستون) به عنوان یک اشارهگر
size_tبه تابعjsvGetLineAndCol()پاس داده میشود. - نتیجه: به دلیل عدم تطابق اندازه اشارهگر (Mismatched Pointer)، تابع
jsvGetLineAndCol()یک عملیات Write به اندازه ۸ بایت را انجام میدهد که منجر به بازنویسی (Overwrite) حافظه مجاور در Stack میگردد.
این مسئله میتواند منجر به اختلال در پایداری سیستم یا در شرایط خاص، اجرای کد دلخواه (RCE) شود.