„`html
Zusammenfassung
Eine Sicherheitslücke in NLTK (Natural Language Toolkit) vor Version 3.9.4 ermöglicht Denial-of-Service-Angriffe durch unbegrenzte Rekursion. Die Schwachstelle befindet sich in der JSONTaggedDecoder.decode_obj()-Methode und ermöglicht es Angreifern, tief verschachtelte JSON-Strukturen zu verarbeiten, die das Python-Rekursionslimit überschreiten und zum Absturz des Prozesses führen.
Betroffene Systeme
Betroffene Versionen: NLTK vor 3.9.4
Die Schwachstelle betrifft alle Systeme mit anfälligen NLTK-Versionen, insbesondere:
- Python-Anwendungen mit NLTK-Abhängigkeit
- NLP-Verarbeitungspipelines
- Web-Services, die JSON-basierte Daten mit NLTK verarbeiten
- API-Endpoints, die JSONTaggedDecoder nutzen
Technische Details
Die Vulnerabilität liegt in der rekursiven Verarbeitung von JSON-Strukturen ohne Tiefenvalidierung. Der JSONTaggedDecoder verarbeitet verschachtelte JSON-Objekte durch rekursive Aufrufe, ohne die Verschachtelungstiefe zu begrenzen.
Ein Angreifer kann speziell konstruierte JSON-Payloads mit extremer Verschachtelungstiefe versenden:
{"a": {"b": {"c": {"d": ... }}}}
Dies führt zu einem unbehandelten RecursionError und verursacht einen Denial-of-Service durch Prozessabsturz. Die Python-Standardrekursionslimit wird überschritten, was zum sofortigen Terminieren des Prozesses führt.
Empfohlene Massnahmen
- Sofortige Maßnahme: NLTK auf Version 3.9.4 oder höher aktualisieren
- Input-Validierung implementieren: Maximale JSON-Verschachtelungstiefe vor NLTK-Verarbeitung prüfen
- RecursionError abfangen und angemessen behandeln
- Rate Limiting für JSON-Verarbeitung einführen
- Monitoring für abnormale CPU-Auslastung aktivieren
- Netzwerk-Filtering für verdächtig große JSON-Payloads konfigurieren
Bewertung
CVSS Score: 7.5 (High)
Angriffsvektor: Network
Angriffsomplexität: Low
Die Schwachstelle hat hohes Risikopotential für verfügbare Systeme. Ein Patch ist nicht verfügbar – nur das Upgrade auf sichere Versionen bietet Schutz. Die Implementierung von Input-Validierung ist zwingend erforderlich.
„`