Avaldati Perl 5.40.2 ja 5.38.4 tõrkeparandused, milles on kõrvaldatud haavatavus (CVE-2024-56406), mis põhjustab puhverdamise ülevoolu spetsiaalselt vormindatud mitte-ASCII märkide transkribeerimise ajal operaatori «tr/.../...». Haavatavuse kasutamine võib võimaldada süsteemis oma koodi käivitamise. Probleem ilmneb Perl'i stabiilsetes versioonides alates 2021. aastast ja puudutab haru Perl 5.34, 5.36, 5.38 ja 5.40. Haavatavuse kõrvaldamise jälgimiseks distributsioonides saab piiluda järgmistele lehtedele: Debian, Ubuntu, Fedora, Arch, FreeBSD. RHEL 9, SUSE 15 ja openSUSE Leap 15.6 põhinevad distributsioonid ei ole haavatavad, kuna nad sisaldavad Perl'i versioone 5.32 ja 5.26.
Haavatavus mõjutab programe, mis kasutavad kontrollimata väliseid andmeid operaatori «tr» vasakul küljel, kus määratakse muudetava märkide andmete muutujaks (näiteks «$external_string =~ tr/a/b/»). Operaatori tööd tagavate funktsioonide S_do_trans_invmap() kallal teostades toimub mõningate mitte-ASCII baitide töötlemisel mälust väljakutsumine. Ülevool tekib, kuna mõningaid andmekompleksi baitide järjestusi saab muuta UTF-8 järjestusteks, mis vajavad ühe asemel kahte baitide.
On märkimisväärne, et haavatavus tekkis pärast 2020. aastal lisatud muudatust, mis eemaldab lisakontrolli piisava mälu eraldamise üle, tuginedes sellele, et suuruse arvutamisel piisab suuruse ümardamisest ülespoole. Haavatavuse kontrollimiseks saab käivitada koodi: perl -e ‘$_ = «\x{FF}» x 1000000; tr/\xFF/\x{100};’ Segmenteerimisviga (tuum on salvestatud)
Allikas: opennet.ru
