Continuous pentesting that proves every finding
Point it at a domain, an API, or an internal network. It works the way a pentester works: enumerate the surface, try attacks, chain the ones that land. A scanner matches signatures and hands you a queue to triage. The fox reports only what it could make happen — and it makes it happen twice, once to prove it and once after you shipped the fix.
The assessment view.
See everything one assessment produced: the summary the agent wrote, the findings it proved, and the activity behind them. Open the report from here, or download it as a PDF.
JWT tenant isolation and admin surface validation
Completed4 days ago31 minutes
Summary
The scope granted a standard workspace token for a non-privileged member of tenant 4821. The goal was to establish whether that token can reach data or operations belonging to another tenant.
It can. The token was accepted on a tenant-scoped query for account 4822 with no error and no audit entry, and the admin GraphQL catalogue enumerated persisted operations that a standard session should not see. Signup was then shown to trust a client-supplied tenant_id, which is how a caller reaches an arbitrary tenant in the first place.
What was refused
SQL injection against the catalogue filter was refused — the query is parameterised. A JWT alg:none downgrade was rejected by the verifier. Both are recorded because a run that lists only what worked is describing a demo rather than a target.
Recommended order
- Derive tenancy server-side at signup and reject client-supplied tenant ids.
- Scope the token check to the tenant on every read path, not just on writes.
- Record cross-tenant reads in the audit log so the next attempt is visible.