یک آسیبپذیری (CVE-2018-25032) در کتابخانه zlib شناسایی شده است که منجر به سرریز بافر در هنگام تلاش برای فشردهسازی دنبالهای از کاراکترهای آماده شده ویژه در دادههای ورودی میشود. در شکل فعلی، محققان توانایی خاتمه غیرعادی یک فرآیند را نشان دادهاند. اینکه آیا این مشکل می تواند عواقب جدی تری داشته باشد هنوز مورد مطالعه قرار نگرفته است.
این آسیب پذیری با شروع نسخه zlib 1.2.2.2 ظاهر می شود و همچنین بر نسخه فعلی zlib 1.2.11 تأثیر می گذارد. قابل ذکر است که اصلاحیه ای برای اصلاح این آسیب پذیری در سال 2018 ارائه شد، اما توسعه دهندگان به آن توجه نکردند و نسخه اصلاحی منتشر نکردند (کتابخانه zlib آخرین بار در سال 2017 به روز شد). این اصلاح همچنین هنوز در بسته های ارائه شده توسط توزیع ها گنجانده نشده است. میتوانید انتشار اصلاحات را بر اساس توزیعها در این صفحات دنبال کنید: Debian، RHEL، Fedora، SUSE، Ubuntu، Arch Linux، OpenBSD، FreeBSD، NetBSD. کتابخانه zlib-ng تحت تأثیر این مشکل قرار نگرفته است.
این آسیبپذیری زمانی رخ میدهد که جریان ورودی دارای تعداد زیادی منطبق برای بستهبندی باشد، که بستهبندی بر اساس کدهای هافمن ثابت اعمال میشود. تحت شرایط خاص، محتویات بافر میانی که نتیجه فشرده شده در آن قرار می گیرد، ممکن است با حافظه ای که جدول فرکانس نماد در آن ذخیره شده است، همپوشانی داشته باشد. در نتیجه، داده های فشرده نادرست تولید می شوند و به دلیل نوشتن خارج از مرز بافر از کار می افتند.
این آسیب پذیری تنها با استفاده از یک استراتژی فشرده سازی مبتنی بر کدهای هافمن ثابت قابل سوء استفاده است. استراتژی مشابه زمانی انتخاب می شود که گزینه Z_FIXED به صراحت در کد فعال باشد (نمونه ای از دنباله ای که هنگام استفاده از گزینه Z_FIXED منجر به خرابی می شود). با قضاوت بر اساس کد، استراتژی Z_FIXED نیز می تواند به طور خودکار انتخاب شود اگر درختان بهینه و استاتیک محاسبه شده برای داده ها اندازه یکسانی داشته باشند.
هنوز مشخص نیست که آیا شرایط برای بهره برداری از آسیب پذیری را می توان با استفاده از استراتژی فشرده سازی پیش فرض Z_DEFAULT_STRATEGY انتخاب کرد. در غیر این صورت، آسیب پذیری به سیستم های خاصی محدود می شود که به صراحت از گزینه Z_FIXED استفاده می کنند. اگر چنین است، آسیب ناشی از این آسیبپذیری میتواند بسیار قابل توجه باشد، زیرا کتابخانه zlib یک استاندارد واقعی است و در بسیاری از پروژههای محبوب از جمله هسته لینوکس، OpenSSH، OpenSSL، apache httpd، libpng، FFmpeg، rsync، dpkg استفاده میشود. ، rpm، Git، PostgreSQL، MySQL و غیره
منبع: opennet.ru