Арнайы әзірленген деректерді қысу кезінде пайда болатын 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

пікір қалдыру