Attackers use the JWT none algorithm by trying to make a token appear unsigned so a weak verifier accepts attacker-controlled claims without checking a signature. Defenders should reject unsigned tokens unless explicitly required, enforce allowed algorithms server-side, and test that the application does not trust a token header alone.
How attackers turn the JWT none algorithm into unsigned-token abuse
The none algorithm attack is not about “breaking JWT”; it is about exploiting a verifier that accepts a token header saying no signature is needed. If the application trusts that header too much, an attacker can change claims such as role, user ID, or scope and then present the token as if it were legitimate.
This usually succeeds only when the server lets the token choose its own validation rules, or when developers assume a JWT is safe because it looks structured. A secure implementation must decide which algorithms are allowed before parsing the claims, and it must reject unsigned tokens unless an unsigned flow is explicitly designed and tightly constrained.
Where this issue becomes especially dangerous is in systems that use JWTs for access decisions. A forged claim can shift the outcome of authorization, session handling, or API access even if the token was never issued by the identity provider. The practical question is not whether the token looks valid, but whether the application independently verifies it with server-side policy.
Why the weakness exists in real deployments
JWT validation failures often come from implementation shortcuts. Teams may support multiple token formats, accept a token header at face value, or carry over legacy test settings into production. In some cases, developers focus on decoding the payload for convenience and miss that decoding is not the same as verifying integrity.
The attack also survives when applications do not bind the token to a trusted issuer, expected algorithm, or deployment context. A parser that is flexible enough to “help” the caller can become unsafe if it treats none as an acceptable option in environments where signed tokens are required. That is why algorithm allow-listing and strict verifier configuration matter more than the token’s appearance.
For deeper background on token handling, revocation, and validation patterns, see Token and Session Security Guide.
What defenders should verify before they trust a JWT
At minimum, the application should prove three things: the token was signed by a trusted issuer, the algorithm matches what the server expects, and the claims being used for authorization were not supplied by the client without integrity protection. If any one of those checks is missing, the token can become attacker-controlled input.
Testing should include both positive and negative cases. A valid token should pass only with the expected algorithm, while an unsigned token, a token with a modified header, or a token signed with an unexpected key should fail. If the application accepts none anywhere outside a deliberately defined exception, that is a strong indicator of misconfiguration.
It is also worth checking whether JWTs are being used as a shortcut for session management. If the same token can drive login state, API authorization, and privilege claims, a verifier mistake can have broader blast radius than a simple authentication bug.
Risk and Threat Considerations
jwt none algorithm abuse is a trust-boundary failure: the application lets a client influence how the token is validated, then uses the resulting claims to make access decisions. That can lead to privilege escalation, impersonation, or unauthorized API use even when no signing key is stolen.
Failure mechanism: The verifier accepts an unsigned or improperly validated token, or it uses the header to select an unsafe algorithm path, allowing attacker-supplied claims to be treated as authentic.
Impact: Attackers can alter identity, role, audience, or scope claims and obtain access they should not have, which can expose data, bypass authorization controls, or compromise downstream services that trust the same token.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP API Security Top 10 addresses the attack and risk surface, while OWASP ASVS, NIST SP 800-53 Rev 5 and CIS Controls v8 set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP ASVS | V10 — OAuth and OIDC | JWT validation and algorithm checks are central to token-based auth flows. |
| Recommendation — Enforce server-side token validation and reject unsafe JWT algorithm handling. | ||
| NIST SP 800-53 Rev 5 | IA-5 — Authenticator Management | JWTs function as bearer authenticators whose integrity and lifecycle must be controlled. |
| AC-6 — Least Privilege | Forged claims can expand access, so authorization should minimize blast radius. | |
| Recommendation — Require strict issuance, validation, and handling rules for token authenticators. Limit token-based permissions to the minimum required access. | ||
| OWASP API Security Top 10 | API2 — Broken Authentication | Accepting none or trusting token headers breaks authentication on APIs using JWTs. |
| Recommendation — Reject unsigned or misvalidated tokens at the API boundary. | ||
| CIS Controls v8 | CIS-6 — Access Control Management | JWT abuse can bypass access control decisions if validation is weak. |
| Recommendation — Verify token validation before allowing access decisions to proceed. | ||
Practitioner Guidance
What to verify: Confirm that every production code path enforces a fixed, server-side allow-list of acceptable algorithms and rejects unsigned tokens by default. Make sure verification happens before any claim is trusted for authorization or session state.
Common mistake: Treating a decoded JWT as proof of authenticity. Decoding only reveals contents; it does not establish that the token was issued by a trusted party or that its claims are untampered.
What good looks like: A forged token, a none header, or a token signed under an unexpected algorithm consistently fails validation, and the application logs the rejection in a way that supports detection and testing.
Practitioner takeaway: The real control is not “JWT support”, it is strict, server-enforced validation that prevents the client from choosing how trust is established.
Related resources from NHI Mgmt Group
Deepen Your Knowledge
Free weekly newsletter
Subscribe to the NHI & AI Identity Journal
The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.
Bonus 33% off our NHI Course when you subscribe.
Reviewed and updated by the NHIMG editorial team on October 19, 2026.
NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org