Perl w wersjach do 5.43.10 zawiera podatność typu heap buffer overflow podczas kompilacji wyrażeń regularnych zawierających powtarzające się stałe ciągi znaków na kompilacjach 32-bitowych. Podatność uzyskała ocenę CVSS 9.8 (CRITICAL) i może być wywołana zdalnie bez uwierzytelnienia.
▸ Pokaż oryginał (EN)
Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds. Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer. A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.
Funkcja Perl_study_chunk w pliku regcomp_study.c nieprawidłowo sprawdzała rozmiar bufora dla złączonego podciągu — operowała na liczbie znaków zamiast liczbie bajtów. Przy kwantyfikowanym stałym podciągu z dużą minimalną liczbą powtórzeń wyrażenie mincount * l mogło przepełnić typ SSize_t, powodując zbyt małą alokację przez SvGROW. Następująca po tym operacja kopiowania wychodziła poza granice przydzielonego bufora na stercie. Atakujący może wywołać ten błąd, dostarczając spreparowane wyrażenie regularne, które jest następnie kompilowane przez docelową aplikację na 32-bitowym środowisku Perl.
Atakujący może doprowadzić do zapisu danych poza granicami bufora na stercie podczas kompilacji wyrażenia regularnego, co potencjalnie umożliwia wykonanie dowolnego kodu (RCE), ujawnienie poufnych danych lub destabilizację działania aplikacji.
Należy zastosować patch dostępny w repozytorium projektu Perl (commit 5e7f119eb2bb1181be908701f22bf7068e722f1c) lub zaktualizować Perl do wersji zawierającej poprawkę zgodnie z referencjami producenta. Jako obejście można rozważyć migrację do kompilacji 64-bitowej, w której przepełnienie SSize_t nie występuje.
Perl w wersjach do 5.43.10 (włącznie), wyłącznie kompilacje 32-bitowe.
Podatność dotyczy wyłącznie kompilacji 32-bitowych Perl. Informacja o podatności została opublikowana na liście oss-security w dniu 2026-05-26.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HPerl
APPPerl≤ 5.43.10
Powiązane podatności
Podatność zlib w module Compress::Raw::Zlib w Perl (CVE-2026-4176)
In Perl 5.34.0, function S_find_uninit_var in sv.c has a stack-based crash that can lead to remote code execut...
Perl before 5.26.3 and 5.28.x before 5.28.1 has a buffer overflow via a crafted regular expression that trigge...
Perl before 5.26.3 has a buffer overflow via a crafted regular expression that triggers invalid write operatio...
Perl before 5.26.3 has a buffer over-read via a crafted regular expression that triggers disclosure of sensiti...