Уразлівасць у zlib, якая праяўляецца пры сціску спецыяльна аформленых дадзеных

У бібліятэцы zlib выяўлена ўразлівасць (CVE-2018-25032), якая прыводзіць да перапаўнення буфера пры спробе сціску спецыяльна падрыхтаванай паслядоўнасці сімвалаў ва ўваходных дадзеных. У бягучым выглядзе даследнікамі прадэманстравана магчымасць выкліку аварыйнага завяршэння працэсу. Ці можа праблема мець больш сур'ёзныя наступствы яшчэ не вывучана.

Уразлівасць выяўляецца пачынальна з версіі 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 з'яўляецца стандартам дэ-факта і ўжываецца ў шматлікіх папулярных праектах, у тым ліку ядро ​​Linux, OpenSSH, OpenSSL, apache httpd, libpng, FFmpeg, rsync, dpkg, rpm, Git , PostgreSQL, MySQL і г.д.

Крыніца: opennet.ru

Дадаць каментар