Disclosure summary
Any HTTP client can bypass Anubis bot protection on the default configuration by adding a single request header. No challenge needs to be solved. Affected versions: v1.22.0 through v1.25.0 (introduced in commit d1d631a, PR #1015) The root cause is in `lib/policy/checker.go`, `PathChecker.Check()`: ```go func (pc *PathChecker) Check(r *http.Request) (bool, error) { originalUrl := r.Header.Get("X-Original-URI") if originalUrl != "" { if pc.regexp.MatchString(originalUrl) { return true, nil } } if pc.regexp.MatchString(r.URL.Path) { return true, nil } return false, nil } ``` The header value comes directly from the client request. The middleware chain never strips it. In reverse proxy mode an attacker fully controls it. The default policy imports `data/common/keep-internet-working.yaml`, which contains path-only ALLOW rules with no other conditions: ```yaml - name: well-known path_regex: ^/\.well-known/.*$ action: ALLOW ``` When `X-Original-URI` matches one of those regexes, the rule fires as ALLOW and the request is forwarded upstream without any challenge or JWT check. # Proof of concept Normal request, gets challenged: ``` curl -s https://anubis.techaro.lol/ | grep -o ".*" ``` Bypa
Source-specific records & product guidance
Sources retain their own attribution and scoring. Follow the original record to confirm affected versions, fixed releases, and configuration conditions.
GitHub Reviewed Security Advisories · GHSA-6wcg-mqvh-fcvg
Open original source · Updated Oct 02, 2026
Anubis: Policy bypass via client controlled X-Original-URI header
Source severity: MEDIUM / 0
| Ecosystem | Package | Affected range | First patched |
|---|---|---|---|
| go | github.com/TecharoHQ/anubis | >= 1.22.0, < 1.26.0 | 1.26.0 |
Original records & references
- NIST NVD record
- CVE Program record
- github.com — Reviewed advisory
PUBLISHED 2026-10-02T14:22:08-04:00
MODIFIED 2026-10-02T14:22:09-04:00
INGESTED 2026-10-06T11:45:17-04:00