Luka w zlib występująca podczas kompresji specjalnie zaprojektowanych danych

W bibliotece zlib zidentyfikowano lukę (CVE-2018-25032), która powoduje przepełnienie bufora przy próbie skompresowania specjalnie przygotowanej sekwencji znaków w przychodzących danych. W obecnej formie badacze wykazali zdolność do powodowania nieprawidłowego zakończenia procesu. Nie zbadano jeszcze, czy problem może mieć poważniejsze konsekwencje.

Luka pojawia się począwszy od wersji zlib 1.2.2.2 i dotyczy także aktualnej wersji zlib 1.2.11. Warto zauważyć, że łatka naprawiająca lukę została zaproponowana już w 2018 roku, jednak twórcy nie zwrócili na to uwagi i nie wypuścili wersji korygującej (ostatnia aktualizacja biblioteki zlib miała miejsce w 2017 roku). Poprawka nie jest jeszcze zawarta w pakietach oferowanych przez dystrybucje. Możesz śledzić publikację poprawek według dystrybucji na tych stronach: Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux, OpenBSD, FreeBSD, NetBSD. Problem nie dotyczy biblioteki zlib-ng.

Luka występuje, jeśli strumień wejściowy zawiera dużą liczbę dopasowań do spakowania, do których stosowane jest pakowanie w oparciu o stałe kody Huffmana. W pewnych okolicznościach zawartość bufora pośredniego, w którym umieszczany jest skompresowany wynik, może nakładać się na pamięć, w której przechowywana jest tablica częstotliwości symboli. W rezultacie generowane są niepoprawnie skompresowane dane i następuje awaria z powodu zapisu poza granicami bufora.

Lukę można wykorzystać wyłącznie przy użyciu strategii kompresji opartej na ustalonych kodach Huffmana. Podobną strategię wybiera się, gdy w kodzie jest jawnie włączona opcja Z_FIXED (przykład sekwencji prowadzącej do awarii przy użyciu opcji Z_FIXED). Sądząc po kodzie, strategię Z_FIXED można wybrać także automatycznie, jeżeli obliczone dla danych drzewa optymalne i statyczne mają ten sam rozmiar.

Nie jest jeszcze jasne, czy warunki wykorzystania luki można wybrać przy użyciu domyślnej strategii kompresji Z_DEFAULT_STRATEGY. Jeśli nie, luka będzie ograniczona do niektórych konkretnych systemów, które jawnie korzystają z opcji Z_FIXED. Jeśli tak, szkody spowodowane tą luką mogą być bardzo znaczące, ponieważ biblioteka zlib jest de facto standardem i jest używana w wielu popularnych projektach, w tym w jądrze Linuksa, OpenSSH, OpenSSL, Apache httpd, libpng, FFmpeg, rsync, dpkg , obr/min, Git, PostgreSQL, MySQL itp.

Źródło: opennet.ru

Dodaj komentarz