Moduł Socket w wersjach przed 2.041 dla Perl zawiera błąd odczytu poza granicami bufora sterty (out-of-bounds heap read) w funkcji pack_ip_mreq_source(). Podatność umożliwia ujawnienie sąsiadującej pamięci sterty oraz potencjalnie prowadzi do awarii aplikacji.
▸ Pokaż oryginał (EN)
Socket versions before 2.041 for Perl have an out-of-bounds heap read. In Socket.xs, pack_ip_mreq_source() checks the length of its source argument before the argument is read, so the check tests the byte length carried over from the preceding multiaddr argument instead. Both addresses occupy a 4-byte field, so a valid multiaddr lets a source of any length pass the check, and the source is then copied into the 4-byte imr_sourceaddr field with a fixed-size copy. A source shorter than 4 bytes is not rejected, and the copy reads up to 3 bytes past the end of its buffer. Calling pack_ip_mreq_source() with a source value shorter than 4 bytes copies adjacent heap memory into the returned packed structure.
W pliku Socket.xs funkcja pack_ip_mreq_source() sprawdza długość argumentu source, lecz przez błąd logiczny porównuje ją z długością bajtu przechowywaną po poprzednim argumencie multiaddr, a nie z faktyczną długością source. Ponieważ oba pola adresów zajmują 4 bajty, poprawna wartość multiaddr powoduje, że każda długość source przechodzi walidację. Następnie source jest kopiowany do 4-bajtowego pola imr_sourceaddr za pomocą kopii o stałym rozmiarze. Jeżeli source ma mniej niż 4 bajty, operacja kopiowania odczytuje do 3 bajtów poza końcem dostarczonego bufora, włączając do zwróconej struktury dane z sąsiadującego obszaru pamięci sterty.
Atakujący może spowodować ujawnienie fragmentów pamięci sterty procesu (wyciek wrażliwych danych) oraz doprowadzić do awarii aplikacji przez niestabilny odczyt poza buforem.
Należy zaktualizować moduł Socket do wersji 2.041 lub nowszej, dostępnej w repozytorium CPAN (metacpan.org). Patch jest dostępny również w repozytorium perl5 na GitHub (commit de19a0b0ad1900fef976c5c1400bd8f11ec6c6cb).
Moduł Socket dla Perl w wersjach przed 2.041.
Podatność została ujawniona publicznie 15 czerwca 2026 roku, informacja opublikowana na liście oss-security (openwall.com). Poprawka wprowadzona w wersji Socket 2.041, wydanej przez PEVANS (Paul Evans).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H