CVE-2026-58191: Appium: Reflected XSS / arbitrary JS in @appium/base-driver /test/guinea-pig* routes
Summary
Appium's base-driver mounts the built-in /test/guinea-pig, /test/guinea-pig-scrollable and /test/guinea-pig-app-banner routes unconditionally on every server. The handler reflects the throwError query param, the comments POST field, and the User-Agent request header into the returned HTML via compileLodashTemplate, which interpolates <%= expr %> as String(expr) with no HTML/JS escaping. This yields reflected XSS, and the throwError value is reflected inside a <script> block, giving arbitrary JavaScript execution on the server's origin. No authentication, no session, no driver and no plugin are required, and the default bind address is 0.0.0.0.
Details
Affected - @appium/base-driver 10.6.0 (with Appium server 3.5.0); tested live. - Template engine helper: @appium/base-driver lib/utils.ts compileLodashTemplate.
Location (file:line) - Routes mounted unconditionally: base-driver/lib/express/server.ts:216-219 (app.all('/test/guinea-pig', guineaPig) etc.). - Tainting: base-driver/lib/express/static.ts:35-61 (guineaPigTemplate) — throwError = String(req.params.throwError ?? req.query?.throwError), params.comment = String(req.body.comments), params.userAgent = req.headers['user-agent']. - Unescaped render: base-driver/lib/utils.ts:67-83 (compileLodashTemplate) emits <%= expr %> as String(${expr}) via new Function(...), no escaping. - Sinks (shipped templates): base-driver/static/test/guinea-pig.html:11-12 (throwError inside <script>), :50 (comment), :87 (userAgent); same in guinea-pig-scrollable.html / guinea-pig-app-banner.html.
PoC
Requests: GET /test/guinea-pig?throwError=x%27%2balert(document.domain)%2b%27 POST /test/guinea-pig (body: comments=</span><img src=x onerror=alert(1)>) GET /test/guinea-pig (header: User-Agent: <script>alert(7)</script>)
<img width="973" height="276" alt="image" src="https://github.com/user-attachments/assets/f58e1dce-f3ad-43d3-b66e-1ff5efea3866" />
Impact
An attacker who can get a victim to open a crafted link (or auto-submit a form) to the Appium server executes arbitrary JavaScript on the server's origin. With default CORS + no authentication, that JS can drive the WebDriver REST API and plugin endpoints. The endpoints are debug/test fixtures that should not be reachable on a production listener at all.
Other sources
Appium is a cross-platform automation framework for all kinds of apps, built on top of the W3C WebDriver protocol. Prior to 10.7.0, Appium's base-driver unconditionally mounts the /test/guinea-pig, /test/guinea-pig-scrollable, and /test/guinea-pig-app-banner routes, and compileLodashTemplate reflects the throwError query parameter, comments POST field, and User-Agent request header into HTML without escaping, allowing reflected cross-site scripting and arbitrary JavaScript execution on the server origin. This issue is fixed in version 10.7.0.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
npm/@appium/base-driverto a version that resolves this vulnerability.Fixed in 10.7.0 - Upgrade
Upgrade
@appium/base-driverto a version that resolves this vulnerability.Fixed in 10.7.0 - Compensating control
Ensure Appium base-driver debug/test routes (/test/guinea-pig, /test/guinea-pig-scrollable, /test/guinea-pig-app-banner) are not reachable from a production listener—restrict network access to those paths (and/or firewall/ACL them) because they are mounted unconditionally on every server.
Event History
Frequently Asked Questions
What is the severity of CVE-2026-58191?
CVE-2026-58191 has a medium severity rating of 6.5.
How do I fix CVE-2026-58191?
To mitigate CVE-2026-58191, update the Appium base-driver to version 10.7.0 or later.
What is CVE-2026-58191?
CVE-2026-58191 is a reflected cross-site scripting (XSS) vulnerability in Appium's @appium/base-driver affecting certain routes.
What can happen if CVE-2026-58191 is exploited?
Exploitation of CVE-2026-58191 could allow an attacker to execute arbitrary JavaScript in the context of the user.
Which versions of Appium are affected by CVE-2026-58191?
CVE-2026-58191 affects versions of Appium prior to 10.7.0.