چکیده: در پیادهسازی ASN.1 در OpenSSL در نسخههای قدیمی آسیبپذیری وجود دارد که به حملهکننده اجازه میدهد کدهای دلخواه خود را اجرا کند و از طریق Buffer Overflow، باعث حمله منع دسترسی شود.
در ادامه این آسیبپذیری بیشتر توضیح داده میشود. در OpenSSL از ASN.1 (Abstract Syntax Notation.One) استفاده شده است. ASN.1 یک زبان توصیف واسط (IDL: Interface Description Language) برای توصیف ساختارهای داده است که امکان Serialization میان پلتفرمهای مختلف را برقرار میکند.
چکیده: در پیادهسازی ASN.1 در OpenSSL در نسخههای قدیمی آسیبپذیری وجود دارد که به حملهکننده اجازه میدهد کدهای دلخواه خود را اجرا کند و از طریق Buffer Overflow، باعث حمله منع دسترسی شود.
در ادامه این آسیبپذیری بیشتر توضیح داده میشود. در OpenSSL از ASN.1 (Abstract Syntax Notation.One) استفاده شده است. ASN.1 یک زبان توصیف واسط (IDL: Interface Description Language) برای توصیف ساختارهای داده است که امکان Serialization میان پلتفرمهای مختلف را برقرار میکند. Serialization به فرآیند تبدیل ساختارهای داده یا Object ها به فرمت قابل ذخیره یا انتقال در فایل، بافر حافظه و یا لینک شبکه گفته میشود و معکوس این فرآیند deserialization نام دارد.
مقدارهای بزرگ universal tag جزء ساختارهای تعریف شده و معمول ASN.1 نیستند اما پارسر ASN.1 این ساختارها را به شکل باز میپذیرد و آنها را معادل صفر منفی در نظر میگیرد. در این حالت (صفر منفی) داده از حد ابتدایی و یا انتهایی بافر تخصیص داده شده، گذر میکند (این امر اصطلاحا out-of-bounds write نامیده میشود) و اصطلاحا بافر، underflow میشود. Buffer underflow یا underrun در ارتباط میان دو فرآیند یا ابزار زمانی رخ میدهد که سرعت خالی شدن بافر از سرعت پر شدن آن بیشتر شود. Underflow شدن بافر موجب خرابی حافظه (memory corruption) میشود که خود منجر به حمله منع دسترسی و یا اجرای کدهای دلخواه میشود.
برای حل این مشکل باید نسخه OpenSSL 1.0.2 به ۱.۰.۲c و OpenSSL 1.0.1 به ۱.۰.۱o به روز رسانی شود.