Přetečení buffru v Perlu spojené s zpracováním znaků

Byly zveřejněny opravy interpretru Perl 5.40.2 a 5.38.4, které řeší zranitelnost (CVE-2024-56406), vedoucí k přetečení bufferu při transliteraci speciálně formátovaných ne-ASCII znaků pomocí operátoru "tr/..../...". Není vyloučena možnost zneužití této zranitelnosti k provádění vlastního kódu v systému. Problém se projevuje ve stabilních vydáních Perlu od roku 2021 a zasahuje větve Perl 5.34, 5.36, 5.38 a 5.40. Chcete-li sledovat odstranění zranitelnosti v distribucích, můžete navštívit následující stránky: Debian, Ubuntu, Fedora, Arch, FreeBSD. Distribuce založené na RHEL 9, SUSE 15 a openSUSE Leap 15.6 nejsou tímto zranitelné, protože obsahují verze Perl 5.32 a 5.26.

Zranitelnost se týká programů, které využívají neověřené externí data na levé straně operátoru "tr", kde je uvedena proměnná s daty pro nahrazení znaků (například "$external_string =~ tr/a/b/"). V zajišťující funkci S_do_trans_invmap() dochází při zpracování některých ne-ASCII bajtů k přístupu do paměti mimo přidělený buffer. Přetečení nastává proto, že některé sekvence bajtů v původním souboru dat mohou být převedeny na sekvence UTF-8, které vyžadují dva bajty namísto jednoho.

Pozoruhodné je, že zranitelnost vznikla po změně přidané v roce 2020, která odstranila dodatečnou kontrolu o dostatečném přidělení paměti s odůvodněním, že při výpočtu velikosti je dostatečné zaokrouhlení velikosti směrem nahoru. Pro kontrolu přítomnosti zranitelnosti lze spustit následující kód: perl -e '$_ = "\x{FF}" x 1000000; tr/\xFF/\x{100}/;' Segmentation fault (core dumped)

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster