Skip to content

JWT Algorithm Confusion (RS256 → HS256 / none)

jwt-alg-confusion is a critical severity check in the web category, written in python. Its source is templates/web/jwt/jwt-alg-confusion.py in cert-x-gen-templates.

Tests for JWT algorithm confusion attacks — forging tokens by switching RS256 to HS256 (using the public key as HMAC secret) and the none-algorithm bypass. Requires a valid bearer token from pipeline context.

Field Value
Id jwt-alg-confusion
Severity critical
Language python
Category web
Author BugB Security Team
Template version 1.0.0
Confidence 85
CVSS 9.1
Weakness CWE-327
Tags jwt, algorithm-confusion, authentication, owasp-a02, token-forgery, none-alg
Target kind not recorded
Oracle not recorded

The file declares @auto_probe, @batch_group, @context_vars, @hypothesis_tags, @vuln_class as well. Those are not tabled above; read the source for what they carry.

Declared in the header. cxg parses @references and then discards it, and nothing at scan time reads it, so this is the only place the links a template cites are surfaced.

To see what the copy on your machine says about itself, and to confirm it is installed at all:

Terminal window
cxg template info jwt-alg-confusion

The id it prints is the one to pass anywhere a template is selected. See cxg template for the rest of the subcommand, Scan a target for running a scan, and A match is not a finding for how to read what comes back.