W bibliotece zlib wykryto lukę bezpieczeństwa (CVE-2018-25032), prowadzącą do przepełnienia bufora podczas próby kompresji specjalnie przygotowanej sekwencji znaków w danych wejściowych. W obecnej formie badacze zademonstrowali możliwość wywołania awaryjnego zakończenia procesu. Czy problem może mieć poważniejsze konsekwencje, nie jest jeszcze zbadane.
Luka bezpieczeństwa występuje od wersji zlib 1.2.2.2 i dotyczy również aktualnej wersji zlib 1.2.11. Co ciekawe, łatka naprawiająca problem została zaproponowana już w 2018 roku, ale deweloperzy nie zwrócili na nią uwagi i nie wydali poprawki (biblioteka zlib była ostatnio aktualizowana w 2017 roku). Naprawa nadal nie została uwzględniona w pakietach oferowanych przez dystrybucje. Można śledzić wydanie poprawek przez dystrybucje na tych stronach: Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux, OpenBSD, FreeBSD, NetBSD. Biblioteka zlib-ng nie jest podatna na ten problem.
Luka występuje, gdy w strumieniu wejściowym pojawia się duża liczba będących pod pakowaniem dopasowań, do których stosuje się kompresję opartą na stałych kodach Huffmana. W odpowiednich okolicznościach zawartość bufora pośredniego, do którego umieszczany jest skompresowany wynik, może nałożyć się na pamięć, w której przechowywana jest tabela częstotliwości znaków. W rezultacie powstają niepoprawne skompresowane dane i awaria z powodu zapisu poza granice bufora.
Luka może być wykorzystana tylko przy zastosowaniu strategii kompresji opartej na stałych kodach Huffmana. Taka strategia jest wybierana przy wyraźnym włączeniu w kodzie opcji Z_FIXED (przykład sekwencji prowadzącej do awarii przy użyciu opcji Z_FIXED). Z kodu wynika, że strategia Z_FIXED może być również wybierana automatycznie, jeśli obliczone dla danych optymalne i statyczne drzewa mają ten sam rozmiar.
Na razie nie wiadomo, czy można dostosować warunki eksploatacji wrażliwości, stosując domyślną strategię kompresji Z_DEFAULT_STRATEGY. Jeśli nie, wrażliwość ograniczy się do konkretnych systemów, w których wyraźnie stosuje się opcję Z_FIXED. Jeśli tak, szkody spowodowane przez wrażliwość mogą być bardzo poważne, ponieważ biblioteka zlib jest de facto standardem i jest wykorzystywana w wielu popularnych projektach, w tym w jądrze Linux, OpenSSH, OpenSSL, apache httpd, libpng, FFmpeg, rsync, dpkg, rpm, Git, PostgreSQL, MySQL itp.
Źródło: opennet.ru
