„`html
Zusammenfassung
CVE-2026-19566 betrifft das Perl-Modul Net::CIDR::Set in Versionen vor 0.23. Die Schwachstelle ermöglicht Denial-of-Service-Attacken durch Memory Exhaustion mittels unbegrenzter IPv6-Präfixlängen. Angreifer können durch manipulation von IPv6-CIDR-Notationen massive Speicherallokationen auslösen und damit Anwendungen zum Absturz bringen.
Betroffene Systeme
Vulnerable Versionen: Net::CIDR::Set < 0.23
Betroffene Plattformen: Alle Systeme mit Perl und installierten anfälligen Modulversionen
Häufig betroffen: Server-Anwendungen, die IP-Ranges validieren oder filtern
Technische Details
Root Cause: Die _encode()-Methode akzeptiert beliebige Präfixlängen, die dem Regex-Pattern (0|[1-9][0-9]*) entsprechen, ohne obere Grenzen zu validieren. Diese Längen werden an _width2bits() weitergegeben, die einen Bitmasken-String mit '1' x ($width + 8) konstruiert.
Memory-Exhaustion-Vektor: Die _inc()-Methode entpackt diese Maske in ein Perl-Array mit einem Skalar pro Byte. Ein Input wie ::/100000000 allokiert einen 100 MB großen String und ein Array mit 12,5 Millionen Elementen.
Logische Fehler: Die contains()-Methode verarbeitet Benutzereingaben direkt, ohne vorherige Validierung. Die _guess_coder()-Funktion versucht IPv4- und IPv6-Decoder sequenziell. IPv4-only-Sets verursachen Memory-Exhaustion mit oversized IPv6-Präfixlängen, bevor die Address-Width-Prüfung Validierungen durchführt.
Zusätzliche Anomalien: Präfixlängen über 128 führen zu Ranges, die nicht der angeforderten Block entsprechen. Beispiel: 2001:db8::/129 wird unverändert serialisiert, contains() seiner eigenen Basisadresse gibt false zurück.
Empfohlene Massnahmen
- Sofort: Net::CIDR::Set auf Version 0.23 oder höher aktualisieren
- Input-Validierung: Präfixlängen auf maximal 128 für IPv6 begrenzen
- Untrusted Input: Niemals unkontrollierte Benutzereingaben direkt an
contains()oderadd()übergeben - Ressourcen-Limits: Prozess-Memory-Limits implementieren
- Monitoring: Anomale Memory-Allokationen überwachen
Bewertung
CVSS 3.1: 7.5 (High)
Angriffsvektor: