CRITICAL✓ PATCH🇬🇧 English

CVE-2026-12087

Out-of-bounds heap read w module Socket dla Perl (pack_ip_mreq_source)

CVSS 9.1pub. 2026-06-15upd. 2026-06-16

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.

🤖 Analiza AI
Jak działa

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.

Skutki

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.

Mitygacja

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).

Kogo dotyczy

Moduł Socket dla Perl w wersjach przed 2.041.

Uwagi

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 Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
🟢
PATCH DOSTĘPNY
Aktualizacja od producenta gotowa. Wdrożenie w ramach standardowego cyklu.
Tagi
Memory
CWE
Referencje