Korrigerande uppdateringar har publicerats för Perl-tolkarna 5.40.2 och 5.38.4, dÀr en sÄrbarhet (CVE-2024-56406) har ÄtgÀrdats som kan leda till bufferöverflöd vid transliterering av speciellt utformade icke-ASCII-tecken med hjÀlp av operatorn "tr/..../..../". Det Àr möjligt att utnyttja sÄrbarheten för att köra egen kod pÄ systemet. Problemet förekommer i stabila versioner av Perl sedan 2021 och berör versionerna Perl 5.34, 5.36, 5.38 och 5.40. För att följa med i ÄtgÀrderna kring sÄrbarheten i distributionerna kan man besöka följande sidor: Debian, Ubuntu, Fedora, Arch, FreeBSD. Distributioner baserade pÄ RHEL 9, SUSE 15 och openSUSE Leap 15.6 Àr inte sÄrbara eftersom de inkluderar versioner av Perl 5.32 och 5.26.
SÄrbarheten berör program som anvÀnder osÀkra externa data i den vÀnstra delen av operatorn "tr", dÀr en variabel anges som har data för att ersÀtta tecken (till exempel "$external_string =~ tr/a/b/). I funktionen S_do_trans_invmap() som ansvarar för att processa operatorn, intrÀffar ett minnesanrop utanför den avsatta bufferten vid bearbetning av vissa icke-ASCII-byte. Bufferöverflödet uppstÄr eftersom vissa byte-sekvenser i den ursprungliga datamÀngden kan konverteras till UTF-8-sekvenser som krÀver tvÄ byte istÀllet för ett.
Det Àr vÀrt att notera att sÄrbarheten uppkom efter en Àndring som infördes 2020, vilket tog bort den extra kontrollen av tillrÀcklig minnesallokering under förevÀndning av att storleken kunde avrundas uppÄt vid berÀkning. För att kontrollera om sÄrbarheten finns kan följande kod köras: perl -e '$_ = "\x{FF}" x 1000000; tr/\xFF/\x{100};' Segmentation fault (core dumped)
KĂ€lla: opennet.ru
