highCVSS 8.1Vulnerability

CVE-2026-77560

# tinyauth: forward-auth per-app ACL is matched case-sensitively against the (case-insensitive) hostname, letting an authenticated user reach apps they are not on the allowlist for ## GitHub Advisory Details (form fields — paste-ready) **Affected products** | Field | Value | |-------|-------| | Ecosystem | `Other (self-hosted)` / Go | | Package name | `github.com/steveiliop56/tinyauth` (forward-auth middleware) | | Affected versions | `< 5.1.2` | | Patched versions | `5.1.2` | **Advisory details** | Field | Value | |-------|-------| | Title | tinyauth forward-auth authorization bypass: per-app ACL host matching is case-sensitive while hostnames are case-insensitive, so a mixed-case host defeats `users`/`groups`/`ip` allowlists and fails open | - **Status:** Runtime-confirmed (local lab, 127.0.0.1 only) - **Target:** steveiliop56/tinyauth `v5.0.7` (commit `479f1657812b7bf01438607464dedaa148155301`); root cause also present on `main` HEAD - **Component:** `internal/service/access_controls_service.go` (`lookupStaticACLs` / `GetAccessControls`), `internal/service/docker_service.go` (`GetLabels`), `internal/controller/proxy_controller.go` (`proxyHandler`) - **Class:** Broken access control / authorization bypass across the per-app trust boundary ## Summary tinyauth is a forward-auth service: a reverse proxy (Traefik/Caddy/nginx/Envoy) calls `GET /api/auth/<proxy>` on every request and only forwards the request upstream if tinyauth returns `200`. tinyauth decides *which* per-app access rules apply by looking up the forwarded hostname (the app) in its ACL set — the static `apps:` config and/or Docker labels. Each app can restrict access with `users.allow` / `users.block`, `oauth.whitelist`, `oauth.groups` / `ldap.groups`, and `ip.allow`. These allowlists are the entire authorization model that separates one protected app from another for a shared pool of authenticated users. The hostname → ACL lookup is performed with **case-sensitive** Go string comparisons (`con

Properties

ghsa_id
GHSA-328g-jx67-v94g
summary
Tinyauth: forward-auth per-app ACL is matched case-sensitively against the (case-insensitive) hostname, letting an authenticated user reach apps they are not on the allowlist for
severity
high
cvss_score
8.1
cve_id
CVE-2026-77560
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
signal_observed_at
2026-09-23T04:35:57+00:00
is_ghsa_only
false
ghsa_published
2026-09-22T20:37:08Z
source_url
https://github.com/advisories/GHSA-328g-jx67-v94g
ghsa_updated
2026-09-22T20:37:12Z

Related Entities (6)

HAS_WEAKNESS (3)

[Weakness]Not Failing Securely ('Failing Open')
[Weakness]Incorrect Authorization
[Weakness]Improper Handling of Case Sensitivity

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]go/github.com/tinyauthapp/tinyauth

AFFECTS (1)

[Software]go/github.com/tinyauthapp/tinyauth

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-77560 (CVSS 8.1) — Ninja Signal Threat Intelligence | Ninja Signal