CVE-2026-12199 Overview
CVE-2026-12199 is a denial of service vulnerability in the Natural Language Toolkit (NLTK) nltk.app.wordnet_app module up to version 3.9.3. The local WordNet Browser HTTP server starts in its default mode listening on all interfaces. An unauthenticated GET request to /SHUTDOWN%20THE%20SERVER terminates the process immediately through os._exit(0). The flaw is classified as Missing Authentication for Critical Function [CWE-306]. Any network-reachable attacker can shut down the service without credentials or user interaction.
Critical Impact
Unauthenticated remote attackers can terminate the NLTK WordNet Browser process via a single HTTP GET request, causing immediate denial of service.
Affected Products
- NLTK nltk.app.wordnet_app module versions up to and including 3.9.3
- Python environments running the WordNet Browser HTTP server in default mode
- Hosts exposing the WordNet Browser port on network-accessible interfaces
Discovery Timeline
- 2026-06-17 - CVE-2026-12199 published to NVD
- 2026-06-17 - Last updated in NVD database
Technical Details for CVE-2026-12199
Vulnerability Analysis
The NLTK WordNet Browser ships an embedded HTTP server intended for local linguistic data browsing. When launched in default mode, the server binds to all network interfaces rather than restricting itself to localhost. The server exposes an administrative shutdown endpoint that requires no authentication, session token, or origin check.
A remote attacker who can reach the listening port issues a GET request to the path /SHUTDOWN%20THE%20SERVER. The handler responds by invoking os._exit(0), which terminates the Python interpreter without running cleanup handlers or shutdown hooks. The result is an abrupt process termination and loss of service availability.
The CWE-306 classification reflects that a critical control function — process termination — lacks any authentication barrier. The vulnerability impacts availability only, with no confidentiality or integrity consequences.
Root Cause
Two design decisions combine to create the issue. First, the server binds to 0.0.0.0 by default instead of the loopback interface, exposing it beyond the local host. Second, the shutdown handler trusts any caller capable of reaching the endpoint. The use of os._exit(0) further amplifies the impact by bypassing graceful shutdown logic.
Attack Vector
Exploitation requires only network reachability to the listening port. An attacker sends an HTTP GET request to /SHUTDOWN%20THE%20SERVER from any source address. No credentials, headers, or session state are required. The handler processes the request and immediately terminates the server process. Repeated attacks defeat any restart loop, sustaining the denial of service. Technical details are documented in the Huntr Bug Bounty Report.
Detection Methods for CVE-2026-12199
Indicators of Compromise
- HTTP access log entries containing the path /SHUTDOWN%20THE%20SERVER or the decoded form /SHUTDOWN THE SERVER
- Unexpected termination of Python processes hosting nltk.app.wordnet_app without corresponding shutdown commands from local administrators
- Inbound connections to the WordNet Browser listening port from non-loopback or untrusted source addresses
Detection Strategies
- Inspect web server and reverse proxy logs for requests targeting the shutdown URI pattern
- Monitor Python process lifecycle events for nltk workers exiting with status code 0 outside maintenance windows
- Deploy network intrusion detection signatures matching the literal string SHUTDOWN%20THE%20SERVER in HTTP request URIs
Monitoring Recommendations
- Alert on any external (non-127.0.0.1) connection to ports used by NLTK WordNet Browser instances
- Track process restart frequency for NLTK services and flag repeated short-interval restarts
- Correlate HTTP request telemetry with process termination events to identify exploitation attempts
How to Mitigate CVE-2026-12199
Immediate Actions Required
- Restrict the WordNet Browser server to the loopback interface using firewall rules or host-based access control lists
- Avoid running nltk.app.wordnet_app on multi-user or internet-exposed systems
- Block external access to the listening port at the perimeter and at the host firewall
Patch Information
No fixed version is identified in the NVD entry at the time of publication. Monitor the Huntr Bug Bounty Report and the upstream NLTK project for an official patched release. Until a patched build is available, treat the WordNet Browser as a local-only development tool.
Workarounds
- Bind the server explicitly to 127.0.0.1 by modifying the startup invocation rather than accepting the default interface
- Place the service behind an authenticating reverse proxy that drops requests to /SHUTDOWN%20THE%20SERVER
- Run the WordNet Browser in short-lived sessions only and terminate it when not in active use
- Apply network segmentation so that lab or research hosts running NLTK are isolated from broader corporate networks
# Configuration example: restrict access with iptables to loopback only
iptables -A INPUT -i lo -p tcp --dport 8000 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

