Every CVE Search/ Get API key

CVE-2026-62314

Anubis: Policy bypass via client controlled X-Original-URI header

5.8 MediumFix available

Anubis is a Web AI Firewall Utility that challenges users' connections in order to protect upstream resources from scraper bots. From 1.22.0 until 1.26.0-pre1, lib/policy/checker.go PathChecker.Check() trusted the client-controlled X-Original-URI header before matching r.URL.Path, allowing an HTTP client to match default data/common/keep-internet-working.yaml ALLOW rules such as ^/.well-known/.*$ and bypass the Anubis challenge. This issue is fixed in version 1.26.0-pre1.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
Low
Integrity
None
Availability
None

Exploit likelihood

0.34%Up 0.1 points since Jul 16, 2026
90%50%10%1%

What each source reports

CVE List Score used 5.8

Anubis: Policy bypass via client controlled X-Original-URI header

Anubis is a Web AI Firewall Utility that challenges users' connections in order to protect upstream resources from scraper bots. From 1.22.0 until 1.26.0-pre1, lib/policy/checker.go PathChecker.Check() trusted the client-controlled X-Original-URI header before matching r.URL.Path, allowing an HTTP client to match default data/common/keep-internet-working.yaml ALLOW rules such as ^/.well-known/.*$ and bypass the Anubis challenge. This issue is fixed in version 1.26.0-pre1.

Record
CVE-2026-62314
CVSS 3.1
5.8 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N
Weakness
CWE-284
Updated
2026-11-02
EUVDEUVD-2026-44819 5.8

Anubis is a Web AI Firewall Utility that challenges users' connections in order to protect upstream resources from scraper bots. From 1.22.0 until 1.26.0-pre1, lib/policy/checker.go PathChecker.Check() trusted the client-controlled X-Original-URI header before matching r.URL.Path, allowing an HTTP client to match default data/common/keep-internet-working.yaml ALLOW rules such as ^/.well-known/.*$ and bypass the Anubis challenge. This issue is fixed in version 1.26.0-pre1.

Record
EUVD-2026-44819
CVSS 3.1
5.8 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-6wcg-mqvh-fcvg 5.8

Anubis: Policy bypass via client controlled X-Original-URI header

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():

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:

- 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 "<title>.*</title>"

Bypass, gets upstream content:

curl -s -H "X-Original-URI: /.well-known/x" https://anubis.techaro.lol/ | grep -o "<title>.*</title>"

The first command returns the Anubis challenge page title. The second returns the real site title directly, with no cookie set and no challenge issued. Verified live against anubis.techaro.lol.

Suggested fix

The fix should probably be to strip the header from incoming client requests in the middleware chain before policy evaluation. In auth_request mode the header is set by the proxy after Anubis processes the middleware, so stripping it at ingress does not break that deployment mode.

Record
GHSA-6wcg-mqvh-fcvg
CVSS 3.1
5.8 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N
Weakness
CWE-284
Updated
2026-11-02
NVD 5.8

Anubis is a Web AI Firewall Utility that challenges users' connections in order to protect upstream resources from scraper bots. From 1.22.0 until 1.26.0-pre1, lib/policy/checker.go PathChecker.Check() trusted the client-controlled X-Original-URI header before matching r.URL.Path, allowing an HTTP client to match default data/common/keep-internet-working.yaml ALLOW rules such as ^/.well-known/.*$ and bypass the Anubis challenge. This issue is fixed in version 1.26.0-pre1.

Record
CVE-2026-62314
CVSS 3.1
5.8 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N
Weakness
CWE-284
Updated
2026-11-02
OSV 5.8

Anubis: Policy bypass via client controlled X-Original-URI header

Anubis is a Web AI Firewall Utility that challenges users' connections in order to protect upstream resources from scraper bots. From 1.22.0 until 1.26.0-pre1, lib/policy/checker.go PathChecker.Check() trusted the client-controlled X-Original-URI header before matching r.URL.Path, allowing an HTTP client to match default data/common/keep-internet-working.yaml ALLOW rules such as ^/.well-known/.*$ and bypass the Anubis challenge. This issue is fixed in version 1.26.0-pre1.

Record
CVE-2026-62314
CVSS 3.1
5.8 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N
Weakness
CWE-284
Updated
2026-11-02
OSVGHSA-6wcg-mqvh-fcvg 5.8

Anubis: Policy bypass via client controlled X-Original-URI header

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():

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:

- 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 "<title>.*</title>"

Bypass, gets upstream content:

curl -s -H "X-Original-URI: /.well-known/x" https://anubis.techaro.lol/ | grep -o "<title>.*</title>"

The first command returns the Anubis challenge page title. The second returns the real site title directly, with no cookie set and no challenge issued. Verified live against anubis.techaro.lol.

Suggested fix

The fix should probably be to strip the header from incoming client requests in the middleware chain before policy evaluation. In auth_request mode the header is set by the proxy after Anubis processes the middleware, so stripping it at ingress does not break that deployment mode.

Record
GHSA-6wcg-mqvh-fcvg
CVSS 3.1
5.8 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N
Weakness
CWE-284
Updated
2026-11-02
OSVGO-2026-6639 No score

Anubis: Policy bypass via client controlled X-Original-URI header in github.com/TecharoHQ/anubis

Anubis: Policy bypass via client controlled X-Original-URI header in github.com/TecharoHQ/anubis

Record
GO-2026-6639
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
github.com/TecharoHQ/anubis
Go
1.22.0 up to 1.26.0
1.26.0

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-62314 is a medium vulnerability (CVSS 5.8) in Axiomthemes Anubis, published July 15, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.34%, the 27th percentile. Fixed in github.com/TecharoHQ/anubis 1.26.0.

References

MoveEnter Open