Ranljivost v zlibu, ki se pojavi pri stiskanju posebej zasnovanih podatkov

V knjižnici zlib je bila ugotovljena ranljivost (CVE-2018-25032), ki vodi do prekoračitve medpomnilnika pri poskusu stiskanja posebej pripravljenega zaporedja znakov v dohodnih podatkih. V sedanji obliki so raziskovalci dokazali, da lahko povzroči nenormalno prekinitev procesa. Ali bi lahko imela težava resnejše posledice, še niso raziskali.

Ranljivost se pojavi od različice zlib 1.2.2.2 in vpliva tudi na trenutno izdajo zlib 1.2.11. Omeniti velja, da je bil popravek za odpravo ranljivosti predlagan že leta 2018, vendar razvijalci niso bili pozorni na to in niso izdali popravne izdaje (knjižnica zlib je bila nazadnje posodobljena leta 2017). Popravek tudi še ni vključen v pakete, ki jih ponujajo distribucije. Objavi popravkov po distribucijah lahko sledite na teh straneh: Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux, OpenBSD, FreeBSD, NetBSD. Težava ne vpliva na knjižnico zlib-ng.

Ranljivost se pojavi, če vhodni tok vsebuje veliko število ujemanj, ki jih je treba pakirati, za katere se pakiranje uporabi na podlagi fiksnih Huffmanovih kod. V določenih okoliščinah lahko vsebina vmesnega medpomnilnika, v katerega je postavljen stisnjen rezultat, prekriva pomnilnik, v katerem je shranjena frekvenčna tabela simbolov. Posledično se ustvarijo nepravilni stisnjeni podatki in se zrušijo zaradi pisanja zunaj meje medpomnilnika.

Ranljivost je mogoče izkoristiti samo s strategijo stiskanja, ki temelji na fiksnih Huffmanovih kodah. Podobna strategija je izbrana, ko je možnost Z_FIXED izrecno omogočena v kodi (primer zaporedja, ki vodi do zrušitve pri uporabi možnosti Z_FIXED). Sodeč po kodi se lahko strategija Z_FIXED izbere tudi samodejno, če imata optimalno in statično drevo, izračunano za podatke, enako velikost.

Ni še jasno, ali je mogoče pogoje za izkoriščanje ranljivosti izbrati s privzeto strategijo stiskanja Z_DEFAULT_STRATEGY. Če ne, bo ranljivost omejena na določene posebne sisteme, ki izrecno uporabljajo možnost Z_FIXED. Če je tako, potem je lahko škoda zaradi ranljivosti zelo velika, saj je knjižnica zlib de facto standard in se uporablja v številnih priljubljenih projektih, vključno z jedrom Linux, OpenSSH, OpenSSL, apache httpd, libpng, FFmpeg, rsync, dpkg , rpm, Git , PostgreSQL, MySQL itd.

Vir: opennet.ru

Dodaj komentar