netlicensing-mcp Path Traversal in product_number Bypasses Token Redaction (GHSA-hxpf-9xvq-wph8) - ATR-2026-01948 (9c679b92-4bf1-50fd-b83d-f17cd4180829)
Detects GHSA-hxpf-9xvq-wph8 (CRITICAL): NetLicensing-MCP <= 0.1.5 interpolates the netlicensing_get_product tool's product_number parameter into a REST path without validation (products.py:22 -> nl_get(f"/product/{product_number}")). Supplying ../token (or URL-encoded %2e%2e/token) produces /product/../token, which httpx normalizes to the /token endpoint. The response is wrapped as a Product instead of a token, skipping redact_token_read(), so the raw APIKEY ("number" field), "shopURL", and "console_url" plaintext secret are returned. This rule keys on the product_number = ../token traversal payload and its encoded variants reaching the netlicensing product tool/path.