CVE-2026-61526 is an XSS vulnerability in AdonisJS that should concern you even if you've done nothing custom in your deployment. The flaw lives in the framework's default 404 handler — when a request hits a non-existent route, AdonisJS reflects the requested URL path into an error page's message field without escaping. An attacker simply needs to request a nonexistent path containing JavaScript, such as /<script>alert(1)</script>, and the framework echoes it unescaped into HTML. This works because the vulnerability activates under precisely the conditions that characterize many production deployments: debug mode disabled (standard hardening), no custom status page configured (the common case), and no JSON negotiation (the default for browser traffic).
The simultaneous appearance across both v8 and v9 branches is the most instructive detail. This is not a v8 regression that survived the rewrite — the same unsanitized interpolation exists in both major versions. That points to a structural assumption rather than an isolated coding mistake: the error rendering pipeline was treated as internal debug infrastructure and therefore excluded from security review during the v9 rewrite. The fix — adding HTML escaping to the error message field — confirms this. It's the right fix for this specific vector, but the simplicity of the solution raises a uncomfortable question: what other interpolation points in the error rendering pipeline were never audited?
Your defensive posture should extend beyond patching to v8.2.1 or v9.1.0. Treat the error rendering subsystem in both branches as potentially containing additional unsanitized injection points. Specifically audit: query parameters reflected into error pages, headers interpolated into stack traces, and any cookie values surfaced in debug output. If your application uses custom error handlers or middleware that renders error content, verify they perform HTML encoding on any user-controlled data. The framework's patch addresses this one field; it does not restructure the error rendering architecture that enabled the flaw.
If your deployment consumes pre-release versions via npm dist-tags (next, rc, canary), treat those as having unknown security posture — the 'next.0' notation in the affected version range indicates pre-release code was already in active use, and pre-release branches may not receive coordinated security patches.