EEF-CVE-2026-66296
Reflected XSS in oaskit's default HTML error handler
Quick fix
EEF-CVE-2026-66296 — oaskit: upgrade to the fixed version with the command below.
mix deps.update oaskitDetails
## Summary
Improper Neutralization of Input During Web Page Generation (XSS) vulnerability in lud oaskit allows reflected cross-site scripting via the default HTML error handler.
`Oaskit.ErrorHandler.Default.format_reason/4` and `Oaskit.ErrorHandler.Default.reason_to_html/1` in `lib/oaskit/error_handler/default.ex` render request-validation failures as an HTML page whenever the request's `Accept` header contains `html`, interpolating request-controlled strings into that page without HTML escaping. The unescaped values are object keys taken from a request body or from an object or `deepObject` query parameter, which appear in the JSON Schema error's instance path when a schema rejects them (for example under `additionalProperties: false`), and the raw `Content-Type` header, reflected in unsupported-media-type errors when it fails to parse.
Because browsers send `Accept: text/html` on ordinary top-level navigation, a crafted GET link is sufficient to trigger the error page; no form submission, custom `Content-Type`, or attacker-controlled script on the victim's side is required. A payload such as `filter[</code></h2><script>alert(document.domain)</script>]=x` terminates the enclosing markup and the injected script executes in the origin of the application using oaskit, giving it access to that origin's cookies, session, and same-origin responses.
Both HTML error rendering and the vulnerable handler are enabled by default: `Oaskit.Plugs.ValidateRequest` defaults `:html_errors` to `true` and `:error_handler` to `Oaskit.ErrorHandler.Default`, so applications following the documented usage are affected without any opt-in.
This issue affects oaskit: from 0.1.0 before 0.14.1.
## Workarounds
Disable HTML error rendering so that validation failures are returned as JSON only:
```elixir plug Oaskit.Plugs.ValidateRequest, html_errors: false ```
This prevents the vulnerable HTML page from being rendered at all, on any oaskit version. Alternatively, configure a custom `:error_handler` that does not emit HTML built from request-derived values.
Are you affected?
Enter the version of the package you're using.