SillyTavern Unauthenticated Path Traversal in Extensions API
SillyTavern versions 1.17.0 and earlier contain a path traversal vulnerability, CVE-2026-44650, in the `/api/extensions/delete` endpoint (and others), allowing an unauthenticated user to delete the entire extensions directory by providing '.' as the extension name, leading to data loss and potential remote exploitation via chaining with CVE-2025-59159.
SillyTavern, a popular open-source AI storytelling application, is vulnerable to a path traversal attack (CVE-2026-44650) affecting versions 1.17.0 and earlier. The vulnerability resides in the extensions API endpoints, specifically /api/extensions/delete, /api/extensions/update, /api/extensions/version, /api/extensions/branches, and /api/extensions/switch. Due to insufficient validation and sanitization of the extensionName parameter, an unauthenticated attacker can send a crafted HTTP POST request with extensionName: "." to these endpoints, causing the application to recursively delete the entire extensions directory. This vulnerability is exploitable by anyone with network access to the SillyTavern instance in its default configuration (basicAuthMode: false). Furthermore, this can be chained with CVE-2025-59159 (DNS rebinding) to enable remote exploitation.
Attack Chain
- An unauthenticated attacker identifies a vulnerable SillyTavern instance running version 1.17.0 or earlier.
- The attacker crafts an HTTP POST request to the
/api/extensions/deleteendpoint (or/update,/version,/branches,/switch). - The attacker includes a JSON payload in the request body with the
extensionNameparameter set to.. - The application receives the request and proceeds to the
src/endpoints/extensions.jsfile. - The application’s validation logic incorrectly allows the
.value because the check!request.body.extensionNameoccurs before sanitization. - The
sanitize-filenamefunction converts the.to an empty string “”. - The
path.join(basePath, "")function concatenates the base extensions path with the empty string, resulting in thebasePathitself. - The application then executes
fs.promises.rm(extensionPath, { recursive: true }), effectively deleting the entire extensions directory (e.g.,data\default-user\extensions\).
Impact
Successful exploitation of this path traversal vulnerability (CVE-2026-44650) leads to the complete and unrecoverable removal of all installed third-party extensions from the SillyTavern instance. The default configuration of SillyTavern does not require authentication, making the vulnerability easily exploitable. If the application is configured with global: true and admin privileges, the attacker can also delete the global extensions directory, affecting all users. The vulnerability can be combined with CVE-2025-59159 (DNS rebinding) to enable unauthenticated remote exploitation from a malicious website. The CVSS score is 9.1 (Critical).
Recommendation
- Apply the suggested fix from the advisory to the
/api/extensions/delete,/api/extensions/update,/api/extensions/version,/api/extensions/branches, and/api/extensions/switchendpoints, ensuring that validation occurs after sanitization and including a path traversal guard (see “Suggested Fix” in the content). - Deploy the Sigma rule
Detect SillyTavern Path Traversal Attempt via Extension Deletionto detect attempts to exploit CVE-2026-44650 targeting the/api/extensions/deleteendpoint based on theextensionNameparameter value. - Deploy the Sigma rule
Detect SillyTavern Path Traversal Attempt via Other Endpointsto detect attempts to exploit CVE-2026-44650 on the/api/extensions/update,/api/extensions/version,/api/extensions/branches, and/api/extensions/switchendpoints. - Monitor web server logs for HTTP POST requests to the extensions API endpoints with suspicious
extensionNamevalues as an indicator of potential exploitation.
Detection coverage 2
Detect SillyTavern Path Traversal Attempt via Extension Deletion
criticalDetects CVE-2026-44650 exploitation — attempts to delete the entire extensions directory in SillyTavern by sending a POST request to /api/extensions/delete with a '.' as the extensionName parameter.
Detect SillyTavern Path Traversal Attempt via Other Endpoints
highDetects CVE-2026-44650 exploitation — attempts to exploit the path traversal vulnerability in SillyTavern on the `/api/extensions/update`, `/api/extensions/version`, `/api/extensions/branches`, and `/api/extensions/switch` endpoints using '.' as the extensionName.
Detection queries are available on the platform. Get full rules →