Avaldatud on parandustooted Perl 5.40.2 ja 5.38.4 tõlgendajale, mis likvideerivad haavatavuse (CVE-2024-56406), mis toob kaasa puhversalvude ületäitmise spetsiaalselt vormindatud mitte-ASCII sümbolite translitereerimisel „tr/..//..” operaatori abil. On võimalik, et haavatavust saab kasutada oma koodi käivitamiseks süsteemis. Probleem ilmneb Perl'i stabiilsetes väljaannetes alates 2021. aastast ja mõjutab Perl 5.34, 5.36, 5.38 ja 5.40 versioone. Haavatavuse kõrvaldamist distributsioonides saab jälgida järgmistes lehtedes: Debian, Ubuntu, Fedora, Arch, FreeBSD. RHEL 9, SUSE 15 ja openSUSE Leap 15.6 põhinevad distributsioonid ei ole haavatavad, kuna need sisaldavad Perl 5.32 ja 5.26 versioone.
Haavatavus mõjutab programme, mis kasutavad kontrollimata väliseid andmeid operaatori „tr” vasakus osas, kus määratakse sümbolite asendamiseks andmemuutuja (näiteks „$external_string =~ tr/a/b/”). Operaatori töö tagamise funktsioon S_do_trans_invmap() kutsub eriliste mitte-ASCII-baitide töötlemisel esile mälule ligipääsu väljaspool eraldatud puhvrit. Ületäitumine toimub, kuna mõned andmeallika baitide järjestused võivad olla muudetud UTF-8 järjestusteks, mille jaoks on vajalik kaks baiti ühe binaari asemel.
Tähtis on märkida, et haavatavus ilmus pärast 2020. aastal tehtud muudatust, mis eemaldas täiendava kontrolli mälu piisavuse üle, väites, et mõõtmisel on piisav ümarus ülespoole. Haavatavuse kontrollimiseks võib käivitada järgmise koodi: perl -e '$_ = "\x{FF}" x 1000000; tr/\xFF/\x{100}/;’ Segmentation fault (core dumped)
Allikas: opennet.ru
