Er zijn correcties gepubliceerd voor de Perl-interpreter versies 5.40.2 en 5.38.4, waarin een kwetsbaarheid (CVE-2024-56406) is verholpen die kan leiden tot een buffer-overloop tijdens de transliteratie van speciaal opgemaakte niet-ASCII-tekens met behulp van de operator 'tr/.../...'. Het is mogelijk dat deze kwetsbaarheid kan worden geëxploiteerd om code in het systeem uit te voeren. Het probleem komt voor in stabiele releases van Perl sinds 2021 en betreft de versies Perl 5.34, 5.36, 5.38 en 5.40. U kunt de oplossing voor deze kwetsbaarheid in de distributies volgen op de volgende pagina's: Debian, Ubuntu, Fedora, Arch, FreeBSD. Distributies gebaseerd op RHEL 9, SUSE 15 en openSUSE Leap 15.6 zijn niet kwetsbaar, omdat ze versies van Perl 5.32 en 5.26 bevatten.
De kwetsbaarheid betreft programma's die ongecontroleerde externe data gebruiken aan de linkerkant van de operator 'tr', waar een variabele met de gegevens voor het vervangen van tekens wordt opgegeven (bijvoorbeeld '$external_string =~ tr/a/b/'). In de ondersteunende functie S_do_trans_invmap() wordt tijdens de verwerking van bepaalde niet-ASCII-bits toegang verkregen tot geheugen buiten de toegewezen buffer. De buffer-overloop ontstaat omdat sommige byte-sequenties in de oorspronkelijke dataset kunnen worden omgezet in UTF-8-sequenties waarvoor twee bytes in plaats van één vereist zijn.
Opmerkelijk is dat de kwetsbaarheid is ontstaan na een wijziging die in 2020 is toegevoegd en die de extra controle op voldoende geheugenallocatie heeft verwijderd, met het argument dat bij het berekenen van de grootte afronding naar boven voldoende zou zijn. Om te controleren of de kwetsbaarheid aanwezig is, kan de volgende code worden uitgevoerd: perl -e '$_ = "\x{FF}" x 1000000; tr/\xFF/\x{100};' Segmentation fault (core dumped)
Bron: opennet.ru
