Unauthenticated Path Traversal Leads to Recursive Deletion of SillyTavern Extensions Directory
POST /api/extensions/delete accepts extensionName: ".", which sanitize-filename reduces to an empty string, collapsing the target path to the base directory before an unguarded recursive fs.rm
SillyTavern, a self-hosted local UI for LLM/image-gen/TTS backends, is vulnerable prior to version 1.18.0 to an unauthenticated path traversal in its extension-management API. The POST /api/extensions/delete endpoint validates extensionName before sanitizing it; submitting a single dot (".") survives validation, gets reduced to an empty string by the sanitization library, and collapses the delete target to the base extensions directory. Because SillyTavern ships with no authentication by default, any network-reachable attacker can send one request and permanently, recursively delete the entire extensions directory — with no confidentiality impact but full integrity/availability loss. Fixed in 1.18.0.
Members only
Full technical analysis, attack chain, IOCs, and the defensive checklist are available to registered members — free to join.