Korrigierte Updates für die Perl-Interpreter-Versionen 5.40.2 und 5.38.4 wurden veröffentlicht, die eine Sicherheitsanfälligkeit (CVE-2024-56406) beheben. Diese Anfälligkeit kann beim Transliterieren von speziell formatierten Nicht-ASCII-Zeichen mithilfe des Operators „tr/../../“ zu einem Pufferüberlauf führen. Es besteht die Möglichkeit, die Anfälligkeit auszunutzen, um eigenen Code im System auszuführen. Das Problem tritt in stabilen Perl-Versionen seit 2021 auf und betrifft die Versionen 5.34, 5.36, 5.38 und 5.40. Informationen zur Behebung der Anfälligkeit in den Distributionen finden Sie auf den folgenden Seiten: Debian, Ubuntu, Fedora, Arch, FreeBSD. Distributionen auf Basis von RHEL 9, SUSE 15 und openSUSE Leap 15.6 sind von dieser Anfälligkeit nicht betroffen, da sie Perl-Versionen 5.32 und 5.26 enthalten.
Die Schwachstelle betrifft Programme, die ungesicherte externe Daten in der linken Seite des „tr“-Operators verwenden, wo eine Variable zur Ersetzung von Zeichen angegeben wird (z. B. „$external_string =~ tr/a/b/“). Bei der Ausführung der Funktion S_do_trans_invmap() tritt beim Verarbeiten bestimmter nicht-ASCII-Bytes ein Zugriff auf nicht zugewiesenen Speicher auf. Der Überlauf entsteht, da einige Bytefolgen im ursprünglichen Datensatz in UTF-8-Folgen umgewandelt werden, die zwei Bytes anstelle von einem benötigen.
Es ist bemerkenswert, dass die Schwachstelle nach einer Änderung im Jahr 2020 aufgetreten ist, die die zusätzliche Überprüfung der ausreichenden Speicherzuweisung entfernt hat, mit dem Argument, dass bei der Berechnung der Größe eine Aufrundung nach oben ausreichend sei. Um die Schwachstelle zu überprüfen, kann der folgende Code ausgeführt werden: perl -e '$_ = "\x{FF}" x 1000000; tr/\xFF/\x{100}/;‘ Segmentation fault (core dumped)
Quelle: opennet.ru
