# Introducing the Wiz Red Agent- AI-Powered Attacker

Wiz Red Agent found a SaaS community platform auth bypass using a leaked tenant UUID as x-tn-id header, exposing thousands of member records and attachments.

- Payout: Research
- Severity: critical
- Program: SaaS community platform
- Write-up by: Wiz Research
- Disclosed: 2026-03-23
- Write-up quality: 6/10
- Original: https://www.wiz.io/blog/introducing-the-wiz-red-agent
- Library page: https://bugbountylibrary.com/r/blog%3Awiz-io-blog-introducing-the-wiz-red-agent
- Tags: area:web domain:api domain:web impact:data-leak impact:pii-leak kind:research platform:threat-intel sev:critical technique:js-analysis technique:source-review vuln:access-control vuln:auth-bypass vuln:info-disclosure

**Target:** Internal headless REST API endpoints (/api/internal/headless/*)
**Root cause:** Internal headless API endpoints trusted a custom x-tn-id tenant header as the sole authentication factor; the tenant UUID was exposed in public login page HTML and client-side JS, so supplying it bypassed the login gate.
**Steps:**
1. Crawl public login page; analyze public JavaScript to enumerate API endpoints and app context.
2. Probe internal headless API endpoints unauthenticated; observe `401 Unauthorized` indicating a Tenant ID is required.
3. Extract tenant UUID from public login page HTML and identify custom `x-tn-id` header in client-side JS.
4. Send request to `/api/internal/headless/members` with the leaked UUID in `x-tn-id` header; receive full member list.
5. Repeat against posts, comments, and file attachment endpoints to confirm bypass scope.
6. Test tenant isolation and blast radius; confirm thousands of member records with PII, internal discussions, employee identities, attachments.
**How found:** AI crawler noticed substantial client-side code in public JS, enumerated internal endpoints, got 401 hinting at Tenant ID requirement, then correlated the tenant UUID from login HTML with the custom x-tn-id header found in JS.
**Exploitation:** Unauthenticated attacker extracts tenant UUID from public HTML/JS, sets it as x-tn-id header, and queries internal headless endpoints to dump member lists, posts, comments, and file attachments from a login-gated community.
**Escalation:** Bypass extended across multiple endpoints (posts, comments, attachments); tenant isolation testing assessed whether access was universal across tenants.
**Insight:** When an API returns 401 mentioning a missing tenant/org identifier, hunt public HTML and JS for that identifier and for custom auth headers (x-tn-id style) that the frontend sends; internal 'headless' endpoints often trust these headers alone.

