@waftester/cli 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/LICENSE +80 -0
  2. package/LICENSE-COMMUNITY +28 -0
  3. package/README.md +121 -0
  4. package/bin/cli.js +152 -0
  5. package/package.json +52 -0
  6. package/payloads/community/README.md +45 -0
  7. package/payloads/community/ai/ml-poisoning.json +173 -0
  8. package/payloads/community/ai/prompt-injection.json +247 -0
  9. package/payloads/community/ai/workflow-abuse.json +222 -0
  10. package/payloads/community/auth/jwt.json +855 -0
  11. package/payloads/community/auth/login-bypass.json +623 -0
  12. package/payloads/community/auth/mfa.json +402 -0
  13. package/payloads/community/auth/oauth.json +421 -0
  14. package/payloads/community/auth/open-redirect.json +1028 -0
  15. package/payloads/community/auth/session.json +404 -0
  16. package/payloads/community/cache/deception.json +402 -0
  17. package/payloads/community/cache/poisoning.json +403 -0
  18. package/payloads/community/deserialization/gadget.json +375 -0
  19. package/payloads/community/deserialization/prototype.json +370 -0
  20. package/payloads/community/fuzz/content-type.json +397 -0
  21. package/payloads/community/fuzz/headers.json +401 -0
  22. package/payloads/community/fuzz/methods.json +397 -0
  23. package/payloads/community/fuzz/obfuscation.json +362 -0
  24. package/payloads/community/fuzz/special-chars.json +740 -0
  25. package/payloads/community/fuzz/waf-bypass.json +452 -0
  26. package/payloads/community/graphql/batching-abuse.json +271 -0
  27. package/payloads/community/graphql/depth-limit.json +271 -0
  28. package/payloads/community/graphql/introspection.json +267 -0
  29. package/payloads/community/injection/crlf.json +569 -0
  30. package/payloads/community/injection/ldap.json +357 -0
  31. package/payloads/community/injection/nosqli.json +529 -0
  32. package/payloads/community/injection/oscmd.json +662 -0
  33. package/payloads/community/injection/rce-polyglots.json +452 -0
  34. package/payloads/community/injection/sqli.json +681 -0
  35. package/payloads/community/injection/ssti.json +584 -0
  36. package/payloads/community/injection/upload-attacks.json +632 -0
  37. package/payloads/community/injection/xpath.json +357 -0
  38. package/payloads/community/injection/xxe.json +716 -0
  39. package/payloads/community/logic/forced-browsing.json +405 -0
  40. package/payloads/community/logic/idor.json +1026 -0
  41. package/payloads/community/logic/privilege.json +337 -0
  42. package/payloads/community/media/exif-injection.json +225 -0
  43. package/payloads/community/media/metadata-poison.json +239 -0
  44. package/payloads/community/protocol/http-smuggling.json +798 -0
  45. package/payloads/community/protocol/http2-attacks.json +382 -0
  46. package/payloads/community/protocol/websocket-abuse.json +375 -0
  47. package/payloads/community/rate-limit/burst-simulation.json +286 -0
  48. package/payloads/community/rate-limit/bypass-attempts.json +326 -0
  49. package/payloads/community/rate-limit/zone-tests.json +332 -0
  50. package/payloads/community/services/authentik.json +415 -0
  51. package/payloads/community/services/immich.json +423 -0
  52. package/payloads/community/services/n8n.json +366 -0
  53. package/payloads/community/sqli-basic.json +182 -0
  54. package/payloads/community/ssrf/cloud-metadata.json +999 -0
  55. package/payloads/community/ssrf/dns-rebinding.json +503 -0
  56. package/payloads/community/ssrf/internal-networks.json +627 -0
  57. package/payloads/community/ssrf/protocol-smuggling.json +350 -0
  58. package/payloads/community/ssti/multi-language-templates.json +191 -0
  59. package/payloads/community/ssti/python-templates.json +200 -0
  60. package/payloads/community/traversal/basic.json +675 -0
  61. package/payloads/community/traversal/cloud-credentials.json +107 -0
  62. package/payloads/community/traversal/config-files.json +193 -0
  63. package/payloads/community/traversal/encoding.json +558 -0
  64. package/payloads/community/traversal/null-byte.json +105 -0
  65. package/payloads/community/traversal/symlink.json +93 -0
  66. package/payloads/community/traversal/unicode.json +134 -0
  67. package/payloads/community/traversal/unix-advanced.json +195 -0
  68. package/payloads/community/traversal/windows-advanced.json +195 -0
  69. package/payloads/community/waf-bypass/cloudflare-bypass.json +102 -0
  70. package/payloads/community/waf-bypass/encoding-bypass.json +120 -0
  71. package/payloads/community/waf-bypass/evasion-techniques.json +164 -0
  72. package/payloads/community/waf-bypass/hpp-bypass.json +92 -0
  73. package/payloads/community/waf-bypass/modsecurity-crs.json +220 -0
  74. package/payloads/community/waf-bypass/protocol-attacks.json +101 -0
  75. package/payloads/community/waf-bypass/sqlmap-tamper.json +252 -0
  76. package/payloads/community/waf-bypass/unicode-charset.json +152 -0
  77. package/payloads/community/waf-bypass/vendor-bypasses.json +72 -0
  78. package/payloads/community/waf-validation/README.md +172 -0
  79. package/payloads/community/waf-validation/bypass-techniques.json +272 -0
  80. package/payloads/community/waf-validation/custom-rules.json +952 -0
  81. package/payloads/community/waf-validation/evasion-techniques.json +272 -0
  82. package/payloads/community/waf-validation/modsecurity-core.json +151 -0
  83. package/payloads/community/waf-validation/owasp-top10.json +236 -0
  84. package/payloads/community/waf-validation/regression-tests.json +227 -0
  85. package/payloads/community/xss/csp-bypass.json +431 -0
  86. package/payloads/community/xss/dom.json +389 -0
  87. package/payloads/community/xss/filter-bypass.json +1242 -0
  88. package/payloads/community/xss/mutation.json +263 -0
  89. package/payloads/community/xss/polyglots.json +371 -0
  90. package/payloads/community/xss/reflected.json +187 -0
  91. package/payloads/community/xss/stored.json +330 -0
  92. package/payloads/crlf-injection.json +182 -0
  93. package/payloads/ids-map.json +155 -0
  94. package/payloads/ldap-injection.json +182 -0
  95. package/payloads/nosql-injection.json +227 -0
  96. package/payloads/prototype-pollution.json +182 -0
  97. package/payloads/request-smuggling.json +182 -0
  98. package/payloads/version.json +28 -0
  99. package/payloads/xss-advanced.json +227 -0
  100. package/templates/README.md +221 -0
  101. package/templates/nuclei/http/waf-bypass/crlf-bypass.yaml +146 -0
  102. package/templates/nuclei/http/waf-bypass/lfi-bypass.yaml +152 -0
  103. package/templates/nuclei/http/waf-bypass/nosqli-bypass.yaml +166 -0
  104. package/templates/nuclei/http/waf-bypass/rce-bypass.yaml +171 -0
  105. package/templates/nuclei/http/waf-bypass/sqli-basic.yaml +142 -0
  106. package/templates/nuclei/http/waf-bypass/sqli-evasion.yaml +192 -0
  107. package/templates/nuclei/http/waf-bypass/ssrf-bypass.yaml +130 -0
  108. package/templates/nuclei/http/waf-bypass/ssti-bypass.yaml +147 -0
  109. package/templates/nuclei/http/waf-bypass/xss-basic.yaml +163 -0
  110. package/templates/nuclei/http/waf-bypass/xss-evasion.yaml +217 -0
  111. package/templates/nuclei/http/waf-bypass/xxe-bypass.yaml +204 -0
  112. package/templates/nuclei/http/waf-detection/akamai-detect.yaml +105 -0
  113. package/templates/nuclei/http/waf-detection/aws-waf-detect.yaml +115 -0
  114. package/templates/nuclei/http/waf-detection/azure-waf-detect.yaml +114 -0
  115. package/templates/nuclei/http/waf-detection/cloudflare-detect.yaml +121 -0
  116. package/templates/nuclei/http/waf-detection/modsecurity-detect.yaml +129 -0
  117. package/templates/nuclei/workflows/waf-assessment-workflow.yaml +71 -0
  118. package/templates/output/asff.tmpl +61 -0
  119. package/templates/output/csv.tmpl +4 -0
  120. package/templates/output/junit.tmpl +34 -0
  121. package/templates/output/markdown-report.tmpl +92 -0
  122. package/templates/output/slack-notification.tmpl +95 -0
  123. package/templates/output/text-summary.tmpl +56 -0
  124. package/templates/overrides/api-only.yaml +130 -0
  125. package/templates/overrides/crs-tuning.yaml +204 -0
  126. package/templates/overrides/false-positive-suppression.yaml +159 -0
  127. package/templates/policies/owasp-top10.yaml +152 -0
  128. package/templates/policies/pci-dss.yaml +124 -0
  129. package/templates/policies/permissive.yaml +40 -0
  130. package/templates/policies/standard.yaml +57 -0
  131. package/templates/policies/strict.yaml +72 -0
  132. package/templates/report-configs/compliance.yaml +173 -0
  133. package/templates/report-configs/dark.yaml +136 -0
  134. package/templates/report-configs/enterprise.yaml +175 -0
  135. package/templates/report-configs/minimal.yaml +84 -0
  136. package/templates/report-configs/print.yaml +139 -0
  137. package/templates/workflows/api-scan.yaml +132 -0
  138. package/templates/workflows/ci-gate.yaml +129 -0
  139. package/templates/workflows/full-scan.yaml +133 -0
  140. package/templates/workflows/quick-probe.yaml +80 -0
  141. package/templates/workflows/waf-detection.yaml +89 -0
@@ -0,0 +1,855 @@
1
+ [
2
+ {
3
+ "id": "AUTH-JWT-001",
4
+ "payload": "eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.",
5
+ "tags": [
6
+ "algorithm-confusion",
7
+ "none-attack",
8
+ "quick",
9
+ "critical"
10
+ ],
11
+ "expected_block": true,
12
+ "severity_hint": "Critical",
13
+ "notes": "JWT with 'none' algorithm - signature validation bypass",
14
+ "category": "Auth"
15
+ },
16
+ {
17
+ "id": "AUTH-JWT-002",
18
+ "payload": "eyJhbGciOiJOT05FIiwidHlwIjoiSldUIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.",
19
+ "tags": [
20
+ "algorithm-confusion",
21
+ "none-attack",
22
+ "quick",
23
+ "critical"
24
+ ],
25
+ "expected_block": true,
26
+ "severity_hint": "Critical",
27
+ "notes": "JWT with 'NONE' (uppercase) algorithm variation",
28
+ "category": "Auth"
29
+ },
30
+ {
31
+ "id": "AUTH-JWT-003",
32
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImFkbWluIjp0cnVlLCJpYXQiOjE2MDk0NTkyMDB9.YWJjMTIzNDU2",
33
+ "tags": [
34
+ "weak-secret",
35
+ "brute-force",
36
+ "quick",
37
+ "high"
38
+ ],
39
+ "expected_block": false,
40
+ "severity_hint": "High",
41
+ "notes": "JWT with predictable weak secret 'secret' - HS256 signed with common password",
42
+ "category": "Auth"
43
+ },
44
+ {
45
+ "id": "AUTH-JWT-004",
46
+ "payload": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.fake-signature-here",
47
+ "tags": [
48
+ "algorithm-confusion",
49
+ "rs256-hs256",
50
+ "quick",
51
+ "critical"
52
+ ],
53
+ "expected_block": true,
54
+ "severity_hint": "Critical",
55
+ "notes": "Algorithm confusion - RS256 signed with HS256 secret (public key as HMAC)",
56
+ "category": "Auth"
57
+ },
58
+ {
59
+ "id": "AUTH-JWT-005",
60
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6OTk5OTk5OTk5OSwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
61
+ "tags": [
62
+ "expiry-manipulation",
63
+ "quick",
64
+ "high"
65
+ ],
66
+ "expected_block": false,
67
+ "severity_hint": "High",
68
+ "notes": "JWT with far-future expiry (year 2286) - bypasses time-based validation",
69
+ "category": "Auth"
70
+ },
71
+ {
72
+ "id": "AUTH-JWT-006",
73
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyIiwiYWRtaW4iOnRydWUsImlhdCI6MTYwOTQ1OTIwMH0.signature",
74
+ "tags": [
75
+ "claim-injection",
76
+ "privilege-escalation",
77
+ "quick",
78
+ "critical"
79
+ ],
80
+ "expected_block": false,
81
+ "severity_hint": "Critical",
82
+ "notes": "JWT with injected 'admin: true' claim - privilege escalation attempt",
83
+ "category": "Auth"
84
+ },
85
+ {
86
+ "id": "AUTH-JWT-007",
87
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIuLi8uLi9ldGMvcGFzc3dkIiwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
88
+ "tags": [
89
+ "claim-injection",
90
+ "path-traversal",
91
+ "quick",
92
+ "high"
93
+ ],
94
+ "expected_block": true,
95
+ "severity_hint": "High",
96
+ "notes": "JWT with path traversal in 'sub' claim",
97
+ "category": "Auth"
98
+ },
99
+ {
100
+ "id": "AUTH-JWT-008",
101
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyIiwicm9sZSI6WyJ1c2VyIiwiYWRtaW4iXSwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
102
+ "tags": [
103
+ "claim-injection",
104
+ "role-escalation",
105
+ "quick",
106
+ "critical"
107
+ ],
108
+ "expected_block": false,
109
+ "severity_hint": "Critical",
110
+ "notes": "JWT with array-based role injection - adding 'admin' to roles",
111
+ "category": "Auth"
112
+ },
113
+ {
114
+ "id": "AUTH-JWT-009",
115
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ii4uLy4uL2V0Yy9wYXNzd2QifQ.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
116
+ "tags": [
117
+ "kid-manipulation",
118
+ "path-traversal",
119
+ "quick",
120
+ "critical"
121
+ ],
122
+ "expected_block": true,
123
+ "severity_hint": "Critical",
124
+ "notes": "JWT with path traversal in 'kid' (Key ID) header - file read attempt",
125
+ "category": "Auth"
126
+ },
127
+ {
128
+ "id": "AUTH-JWT-010",
129
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imh0dHA6Ly9hdHRhY2tlci5jb20va2V5Lmpzb24ifQ.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
130
+ "tags": [
131
+ "kid-manipulation",
132
+ "ssrf",
133
+ "quick",
134
+ "critical"
135
+ ],
136
+ "expected_block": true,
137
+ "severity_hint": "Critical",
138
+ "notes": "JWT with remote URL in 'kid' header - SSRF via key fetching",
139
+ "category": "Auth"
140
+ },
141
+ {
142
+ "id": "AUTH-JWT-011",
143
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6LTEsImV4cCI6OTk5OTk5OTk5OX0.signature",
144
+ "tags": [
145
+ "expiry-manipulation",
146
+ "negative-iat",
147
+ "high"
148
+ ],
149
+ "expected_block": false,
150
+ "severity_hint": "High",
151
+ "notes": "JWT with negative 'iat' (issued at) - timestamp manipulation",
152
+ "category": "Auth"
153
+ },
154
+ {
155
+ "id": "AUTH-JWT-012",
156
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsIm5iZiI6OTk5OTk5OTk5OSwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
157
+ "tags": [
158
+ "expiry-manipulation",
159
+ "nbf-future",
160
+ "medium"
161
+ ],
162
+ "expected_block": false,
163
+ "severity_hint": "Medium",
164
+ "notes": "JWT with far-future 'nbf' (not before) - token not yet valid but may be accepted",
165
+ "category": "Auth"
166
+ },
167
+ {
168
+ "id": "AUTH-JWT-013",
169
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbicsJ2FkbWluJy0tIiwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
170
+ "tags": [
171
+ "claim-injection",
172
+ "sqli",
173
+ "quick",
174
+ "critical"
175
+ ],
176
+ "expected_block": true,
177
+ "severity_hint": "Critical",
178
+ "notes": "JWT with SQL injection in 'sub' claim - targeting claim-based queries",
179
+ "category": "Auth"
180
+ },
181
+ {
182
+ "id": "AUTH-JWT-014",
183
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ7eyc3KjcnfX0iLCJpYXQiOjE2MDk0NTkyMDB9.signature",
184
+ "tags": [
185
+ "claim-injection",
186
+ "ssti",
187
+ "quick",
188
+ "high"
189
+ ],
190
+ "expected_block": true,
191
+ "severity_hint": "High",
192
+ "notes": "JWT with SSTI payload in 'sub' claim - targeting template rendering",
193
+ "category": "Auth"
194
+ },
195
+ {
196
+ "id": "AUTH-JWT-015",
197
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyIiwianRpIjoiMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTExIiwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
198
+ "tags": [
199
+ "jti-prediction",
200
+ "token-reuse",
201
+ "medium"
202
+ ],
203
+ "expected_block": false,
204
+ "severity_hint": "Medium",
205
+ "notes": "JWT with predictable 'jti' (JWT ID) - sequential/guessable token ID",
206
+ "category": "Auth"
207
+ },
208
+ {
209
+ "id": "AUTH-JWT-016",
210
+ "payload": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
211
+ "tags": [
212
+ "header-manipulation",
213
+ "type-field",
214
+ "low"
215
+ ],
216
+ "expected_block": false,
217
+ "severity_hint": "Low",
218
+ "notes": "JWT with swapped header fields (typ before alg) - parser confusion",
219
+ "category": "Auth"
220
+ },
221
+ {
222
+ "id": "AUTH-JWT-017",
223
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6IkpXVCJ9.eyJhbGciOiJub25lIn0.eyJzdWIiOiJhZG1pbiJ9.",
224
+ "tags": [
225
+ "nested-jwt",
226
+ "algorithm-confusion",
227
+ "critical"
228
+ ],
229
+ "expected_block": true,
230
+ "severity_hint": "Critical",
231
+ "notes": "Nested JWT with 'none' algorithm in inner token - double-decode bypass",
232
+ "category": "Auth"
233
+ },
234
+ {
235
+ "id": "AUTH-JWT-018",
236
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsInNjb3BlIjoiKiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
237
+ "tags": [
238
+ "scope-injection",
239
+ "wildcard",
240
+ "high"
241
+ ],
242
+ "expected_block": false,
243
+ "severity_hint": "High",
244
+ "notes": "JWT with wildcard '*' scope - attempting full access permission",
245
+ "category": "Auth"
246
+ },
247
+ {
248
+ "id": "AUTH-JWT-019",
249
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6WyJhcGkxIiwiYXBpMiIsImFsbCJdLCJpYXQiOjE2MDk0NTkyMDB9.signature",
250
+ "tags": [
251
+ "audience-manipulation",
252
+ "scope-escalation",
253
+ "high"
254
+ ],
255
+ "expected_block": false,
256
+ "severity_hint": "High",
257
+ "notes": "JWT with multiple audiences including generic 'all' - audience validation bypass",
258
+ "category": "Auth"
259
+ },
260
+ {
261
+ "id": "AUTH-JWT-020",
262
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlzcyI6Imh0dHBzOi8vdHJ1c3RlZC5jb20iLCJpYXQiOjE2MDk0NTkyMDB9.signature",
263
+ "tags": [
264
+ "issuer-spoofing",
265
+ "trusted-issuer",
266
+ "critical"
267
+ ],
268
+ "expected_block": false,
269
+ "severity_hint": "Critical",
270
+ "notes": "JWT with spoofed trusted issuer - bypassing issuer validation",
271
+ "category": "Auth"
272
+ },
273
+ {
274
+ "id": "AUTH-JWT-021",
275
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..signature",
276
+ "tags": [
277
+ "malformed",
278
+ "empty-payload",
279
+ "quick",
280
+ "high"
281
+ ],
282
+ "expected_block": true,
283
+ "severity_hint": "High",
284
+ "notes": "JWT with empty payload section - parser error exploitation",
285
+ "category": "Auth"
286
+ },
287
+ {
288
+ "id": "AUTH-JWT-022",
289
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0",
290
+ "tags": [
291
+ "malformed",
292
+ "missing-signature",
293
+ "quick",
294
+ "critical"
295
+ ],
296
+ "expected_block": true,
297
+ "severity_hint": "Critical",
298
+ "notes": "JWT missing signature section - signature validation bypass",
299
+ "category": "Auth"
300
+ },
301
+ {
302
+ "id": "AUTH-JWT-023",
303
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ew0KICAic3ViIjogImFkbWluIiwNCiAgImFkbWluIjogdHJ1ZSwNCiAgImlhdCI6IDE2MDk0NTkyMDANCn0.signature",
304
+ "tags": [
305
+ "encoding-tricks",
306
+ "newlines",
307
+ "medium"
308
+ ],
309
+ "expected_block": false,
310
+ "severity_hint": "Medium",
311
+ "notes": "JWT with newlines in payload JSON - encoding normalization bypass",
312
+ "category": "Auth"
313
+ },
314
+ {
315
+ "id": "AUTH-JWT-024",
316
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMCwiZXhwIjoxNjA5NDU5MjAwfQ.signature",
317
+ "tags": [
318
+ "expiry-manipulation",
319
+ "expired-token",
320
+ "high"
321
+ ],
322
+ "expected_block": false,
323
+ "severity_hint": "High",
324
+ "notes": "JWT with exp = iat (already expired) - testing expiry enforcement",
325
+ "category": "Auth"
326
+ },
327
+ {
328
+ "id": "AUTH-JWT-025",
329
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMCwiYXV0aF90aW1lIjoxNjA5NDU5MTAwfQ.signature",
330
+ "tags": [
331
+ "auth-time-manipulation",
332
+ "session-extension",
333
+ "medium"
334
+ ],
335
+ "expected_block": false,
336
+ "severity_hint": "Medium",
337
+ "notes": "JWT with auth_time before iat - backdating authentication time",
338
+ "category": "Auth"
339
+ },
340
+ {
341
+ "id": "AUTH-JWT-026",
342
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsIng1dSI6Imh0dHA6Ly9hdHRhY2tlci5jb20vZXZpbC5jZXIifQ.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
343
+ "tags": [
344
+ "x5u-injection",
345
+ "ssrf",
346
+ "critical"
347
+ ],
348
+ "expected_block": true,
349
+ "severity_hint": "Critical",
350
+ "notes": "JWT with malicious 'x5u' (X.509 URL) header - SSRF via certificate fetching",
351
+ "category": "Auth"
352
+ },
353
+ {
354
+ "id": "AUTH-JWT-027",
355
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImp3ayI6eyJrdHkiOiJvY3QiLCJrIjoiWVdKak1USXpORFUyIn19.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
356
+ "tags": [
357
+ "jwk-injection",
358
+ "self-signed",
359
+ "critical"
360
+ ],
361
+ "expected_block": true,
362
+ "severity_hint": "Critical",
363
+ "notes": "JWT with embedded 'jwk' (JSON Web Key) - self-signing attack",
364
+ "category": "Auth"
365
+ },
366
+ {
367
+ "id": "AUTH-JWT-028",
368
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pblx1MDAwMCIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
369
+ "tags": [
370
+ "null-byte-injection",
371
+ "encoding-tricks",
372
+ "high"
373
+ ],
374
+ "expected_block": true,
375
+ "severity_hint": "High",
376
+ "notes": "JWT with null byte (\\u0000) in 'sub' claim - string truncation attack",
377
+ "category": "Auth"
378
+ },
379
+ {
380
+ "id": "AUTH-JWT-029",
381
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsInBlcm1pc3Npb25zIjp7Il9fcHJvdG9fXyI6eyJpc0FkbWluIjp0cnVlfX0sImlhdCI6MTYwOTQ1OTIwMH0.signature",
382
+ "tags": [
383
+ "prototype-pollution",
384
+ "object-injection",
385
+ "critical"
386
+ ],
387
+ "expected_block": false,
388
+ "severity_hint": "Critical",
389
+ "notes": "JWT with __proto__ pollution in nested object - prototype pollution via claims",
390
+ "category": "Auth"
391
+ },
392
+ {
393
+ "id": "AUTH-JWT-030",
394
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsInJvbGUiOiJ1c2VyXHUwMDdmYWRtaW4iLCJpYXQiOjE2MDk0NTkyMDB9.signature",
395
+ "tags": [
396
+ "unicode-tricks",
397
+ "encoding-tricks",
398
+ "medium"
399
+ ],
400
+ "expected_block": false,
401
+ "severity_hint": "Medium",
402
+ "notes": "JWT with Unicode control character (\\u007f DELETE) - normalization bypass",
403
+ "category": "Auth"
404
+ },
405
+ {
406
+ "id": "AUTH-JWT-031",
407
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ii4uLy4uLy4uL2V0Yy9wYXNzd2QifQ.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
408
+ "tags": ["kid-injection", "path-traversal", "lfi", "critical"],
409
+ "expected_block": true,
410
+ "severity_hint": "Critical",
411
+ "notes": "JWT with 'kid' path traversal to /etc/passwd",
412
+ "category": "Auth"
413
+ },
414
+ {
415
+ "id": "AUTH-JWT-032",
416
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ii9kZXYvbnVsbCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
417
+ "tags": ["kid-injection", "dev-null", "bypass", "critical"],
418
+ "expected_block": true,
419
+ "severity_hint": "Critical",
420
+ "notes": "JWT with 'kid' pointing to /dev/null (empty secret)",
421
+ "category": "Auth"
422
+ },
423
+ {
424
+ "id": "AUTH-JWT-033",
425
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InwgY2F0IC9ldGMvcGFzc3dkIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
426
+ "tags": ["kid-injection", "command-injection", "rce", "critical"],
427
+ "expected_block": true,
428
+ "severity_hint": "Critical",
429
+ "notes": "JWT with 'kid' command injection via pipe",
430
+ "category": "Auth"
431
+ },
432
+ {
433
+ "id": "AUTH-JWT-034",
434
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjsgY2F0IC9ldGMvcGFzc3dkIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
435
+ "tags": ["kid-injection", "command-injection", "rce", "critical"],
436
+ "expected_block": true,
437
+ "severity_hint": "Critical",
438
+ "notes": "JWT with 'kid' command injection via semicolon",
439
+ "category": "Auth"
440
+ },
441
+ {
442
+ "id": "AUTH-JWT-035",
443
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IicgT1IgJzEnPScxIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
444
+ "tags": ["kid-injection", "sql-injection", "critical"],
445
+ "expected_block": true,
446
+ "severity_hint": "Critical",
447
+ "notes": "JWT with 'kid' SQL injection",
448
+ "category": "Auth"
449
+ },
450
+ {
451
+ "id": "AUTH-JWT-036",
452
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imh0dHA6Ly9ldmlsLmNvbS9rZXkifQ.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
453
+ "tags": ["kid-injection", "ssrf", "remote-key", "critical"],
454
+ "expected_block": true,
455
+ "severity_hint": "Critical",
456
+ "notes": "JWT with 'kid' SSRF to attacker-controlled key",
457
+ "category": "Auth"
458
+ },
459
+ {
460
+ "id": "AUTH-JWT-037",
461
+ "payload": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImprdSI6Imh0dHA6Ly9ldmlsLmNvbS9qd2tzLmpzb24ifQ.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
462
+ "tags": ["jku-injection", "ssrf", "key-injection", "critical"],
463
+ "expected_block": true,
464
+ "severity_hint": "Critical",
465
+ "notes": "JWT with 'jku' (JWK Set URL) pointing to attacker server",
466
+ "category": "Auth"
467
+ },
468
+ {
469
+ "id": "AUTH-JWT-038",
470
+ "payload": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImprdSI6Imh0dHBzOi8vbGVnaXRpbWF0ZS5jb21AZXZpbC5jb20vandrcy5qc29uIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
471
+ "tags": ["jku-injection", "at-bypass", "ssrf", "critical"],
472
+ "expected_block": true,
473
+ "severity_hint": "Critical",
474
+ "notes": "JWT with 'jku' URL @ bypass",
475
+ "category": "Auth"
476
+ },
477
+ {
478
+ "id": "AUTH-JWT-039",
479
+ "payload": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImprdSI6Imh0dHBzOi8vbGVnaXRpbWF0ZS5jb20uZXZpbC5jb20vandrcy5qc29uIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
480
+ "tags": ["jku-injection", "subdomain-bypass", "ssrf", "critical"],
481
+ "expected_block": true,
482
+ "severity_hint": "Critical",
483
+ "notes": "JWT with 'jku' subdomain confusion bypass",
484
+ "category": "Auth"
485
+ },
486
+ {
487
+ "id": "AUTH-JWT-040",
488
+ "payload": "eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.bm90aGluZw",
489
+ "tags": ["none-attack", "garbage-signature", "bypass", "critical"],
490
+ "expected_block": true,
491
+ "severity_hint": "Critical",
492
+ "notes": "JWT with 'none' algorithm but garbage in signature",
493
+ "category": "Auth"
494
+ },
495
+ {
496
+ "id": "AUTH-JWT-041",
497
+ "payload": "eyJhbGciOiJuT25FIiwidHlwIjoiSldUIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.",
498
+ "tags": ["none-attack", "mixed-case", "bypass", "critical"],
499
+ "expected_block": true,
500
+ "severity_hint": "Critical",
501
+ "notes": "JWT with mixed case 'nOnE' algorithm",
502
+ "category": "Auth"
503
+ },
504
+ {
505
+ "id": "AUTH-JWT-042",
506
+ "payload": "eyJhbGciOiJOb25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.",
507
+ "tags": ["none-attack", "pascal-case", "bypass", "critical"],
508
+ "expected_block": true,
509
+ "severity_hint": "Critical",
510
+ "notes": "JWT with Pascal case 'None' algorithm",
511
+ "category": "Auth"
512
+ },
513
+ {
514
+ "id": "AUTH-JWT-043",
515
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6LTEsImV4cCI6OTk5OTk5OTk5OX0.signature",
516
+ "tags": ["time-attack", "negative-iat", "high"],
517
+ "expected_block": true,
518
+ "severity_hint": "High",
519
+ "notes": "JWT with negative 'iat' (issued at) time",
520
+ "category": "Auth"
521
+ },
522
+ {
523
+ "id": "AUTH-JWT-044",
524
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsIm5iZiI6MCwiZXhwIjo5OTk5OTk5OTk5fQ.signature",
525
+ "tags": ["time-attack", "zero-nbf", "high"],
526
+ "expected_block": true,
527
+ "severity_hint": "High",
528
+ "notes": "JWT with zero 'nbf' (not before) - always valid",
529
+ "category": "Auth"
530
+ },
531
+ {
532
+ "id": "AUTH-JWT-045",
533
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6IjIyODYtMTEtMjBUMTc6NDY6NDBaIiwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
534
+ "tags": ["time-attack", "string-exp", "type-confusion", "high"],
535
+ "expected_block": true,
536
+ "severity_hint": "High",
537
+ "notes": "JWT with string 'exp' instead of number - type confusion",
538
+ "category": "Auth"
539
+ },
540
+ {
541
+ "id": "AUTH-JWT-046",
542
+ "payload": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
543
+ "tags": ["algorithm-confusion", "hs512", "downgrade", "high"],
544
+ "expected_block": false,
545
+ "severity_hint": "High",
546
+ "notes": "JWT with HS512 - testing server accepts different algorithm",
547
+ "category": "Auth"
548
+ },
549
+ {
550
+ "id": "AUTH-JWT-047",
551
+ "payload": "eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
552
+ "tags": ["algorithm-confusion", "hs384", "downgrade", "high"],
553
+ "expected_block": false,
554
+ "severity_hint": "High",
555
+ "notes": "JWT with HS384 - testing server accepts different algorithm",
556
+ "category": "Auth"
557
+ },
558
+ {
559
+ "id": "AUTH-JWT-048",
560
+ "payload": "eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
561
+ "tags": ["algorithm-confusion", "ps256", "downgrade", "high"],
562
+ "expected_block": false,
563
+ "severity_hint": "High",
564
+ "notes": "JWT with PS256 (RSASSA-PSS) algorithm",
565
+ "category": "Auth"
566
+ },
567
+ {
568
+ "id": "AUTH-JWT-049",
569
+ "payload": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
570
+ "tags": ["algorithm-confusion", "es256", "ecdsa", "high"],
571
+ "expected_block": false,
572
+ "severity_hint": "High",
573
+ "notes": "JWT with ES256 (ECDSA) algorithm",
574
+ "category": "Auth"
575
+ },
576
+ {
577
+ "id": "AUTH-JWT-050",
578
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6ImV2aWwuY29tIiwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
579
+ "tags": ["audience-manipulation", "aud-claim", "critical"],
580
+ "expected_block": false,
581
+ "severity_hint": "Critical",
582
+ "notes": "JWT with manipulated 'aud' (audience) claim",
583
+ "category": "Auth"
584
+ },
585
+ {
586
+ "id": "AUTH-JWT-051",
587
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlzcyI6ImV2aWwuY29tIiwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
588
+ "tags": ["issuer-manipulation", "iss-claim", "critical"],
589
+ "expected_block": false,
590
+ "severity_hint": "Critical",
591
+ "notes": "JWT with manipulated 'iss' (issuer) claim",
592
+ "category": "Auth"
593
+ },
594
+ {
595
+ "id": "AUTH-JWT-052",
596
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImp0aSI6IjEiLCJpYXQiOjE2MDk0NTkyMDB9.signature",
597
+ "tags": ["jti-manipulation", "predictable-id", "replay", "high"],
598
+ "expected_block": false,
599
+ "severity_hint": "High",
600
+ "notes": "JWT with predictable 'jti' (JWT ID) for replay",
601
+ "category": "Auth"
602
+ },
603
+ {
604
+ "id": "AUTH-JWT-053",
605
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsInNjb3BlIjoiYWRtaW46KiByZWFkOiogd3JpdGU6KiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
606
+ "tags": ["scope-injection", "privilege-escalation", "critical"],
607
+ "expected_block": false,
608
+ "severity_hint": "Critical",
609
+ "notes": "JWT with injected admin scopes",
610
+ "category": "Auth"
611
+ },
612
+ {
613
+ "id": "AUTH-JWT-054",
614
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsInJvbGVzIjpbImFkbWluIiwic3VwZXJ1c2VyIiwicm9vdCJdLCJpYXQiOjE2MDk0NTkyMDB9.signature",
615
+ "tags": ["role-injection", "array-roles", "critical"],
616
+ "expected_block": false,
617
+ "severity_hint": "Critical",
618
+ "notes": "JWT with multiple admin roles in array",
619
+ "category": "Auth"
620
+ },
621
+ {
622
+ "id": "AUTH-JWT-055",
623
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsInVzZXJfdHlwZSI6ImludGVybmFsIiwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
624
+ "tags": ["user-type-injection", "internal-user", "critical"],
625
+ "expected_block": false,
626
+ "severity_hint": "Critical",
627
+ "notes": "JWT with 'internal' user type claim",
628
+ "category": "Auth"
629
+ },
630
+ {
631
+ "id": "AUTH-JWT-056",
632
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudF9pZCI6Im90aGVyLXRlbmFudCIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
633
+ "tags": ["tenant-manipulation", "cross-tenant", "critical"],
634
+ "expected_block": false,
635
+ "severity_hint": "Critical",
636
+ "notes": "JWT with different tenant_id claim",
637
+ "category": "Auth"
638
+ },
639
+ {
640
+ "id": "AUTH-JWT-057",
641
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsIm9yZ19pZCI6MSwiZW52IjoicHJvZHVjdGlvbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
642
+ "tags": ["env-claim", "production-access", "critical"],
643
+ "expected_block": false,
644
+ "severity_hint": "Critical",
645
+ "notes": "JWT with production environment claim",
646
+ "category": "Auth"
647
+ },
648
+ {
649
+ "id": "AUTH-JWT-058",
650
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ7eyBjb25maWcuc2VjcmV0IH19IiwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
651
+ "tags": ["ssti", "template-injection", "claim", "critical"],
652
+ "expected_block": true,
653
+ "severity_hint": "Critical",
654
+ "notes": "JWT with SSTI payload in sub claim",
655
+ "category": "Auth"
656
+ },
657
+ {
658
+ "id": "AUTH-JWT-059",
659
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI8c2NyaXB0PmFsZXJ0KDEpPC9zY3JpcHQ-IiwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
660
+ "tags": ["xss", "claim-injection", "high"],
661
+ "expected_block": true,
662
+ "severity_hint": "High",
663
+ "notes": "JWT with XSS payload in sub claim",
664
+ "category": "Auth"
665
+ },
666
+ {
667
+ "id": "AUTH-JWT-060",
668
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsIm5hbWUiOiJSb2JlcnQnKTsgRFJPUCBUQUJMRSB1c2VyczsgLS0iLCJpYXQiOjE2MDk0NTkyMDB9.signature",
669
+ "tags": ["sqli", "claim-injection", "critical"],
670
+ "expected_block": true,
671
+ "severity_hint": "Critical",
672
+ "notes": "JWT with SQLi payload in name claim",
673
+ "category": "Auth"
674
+ },
675
+ {
676
+ "id": "AUTH-JWT-061",
677
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6InRleHQvaHRtbCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
678
+ "tags": ["cty-manipulation", "content-type", "high"],
679
+ "expected_block": true,
680
+ "severity_hint": "High",
681
+ "notes": "JWT with manipulated 'cty' (content type) header",
682
+ "category": "Auth"
683
+ },
684
+ {
685
+ "id": "AUTH-JWT-062",
686
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsInppcCI6IkRFRiJ9.eNpLzi9SKUYBAAA//wMfAYI=.signature",
687
+ "tags": ["zip-bomb", "compressed", "dos", "high"],
688
+ "expected_block": true,
689
+ "severity_hint": "High",
690
+ "notes": "JWT with DEFLATE compression (zip header)",
691
+ "category": "Auth"
692
+ },
693
+ {
694
+ "id": "AUTH-JWT-063",
695
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImRhdGEiOnsiYSI6eyJiIjp7ImMiOnsiZCI6eyJlIjp7ImYiOnsiZyI6eyJoIjp7ImkiOnsiaiI6eyJrIjp7ImwiOnsibSI6eyJuIjp7Im8iOiJuZXN0ZWQifX19fX19fX19fX19fX19fX0sImlhdCI6MTYwOTQ1OTIwMH0.signature",
696
+ "tags": ["deep-nesting", "dos", "parser-abuse", "high"],
697
+ "expected_block": true,
698
+ "severity_hint": "High",
699
+ "notes": "JWT with deeply nested JSON (parser DoS)",
700
+ "category": "Auth"
701
+ },
702
+ {
703
+ "id": "AUTH-JWT-064",
704
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.AAAA...AAAA.signature",
705
+ "tags": ["large-payload", "dos", "memory", "high"],
706
+ "expected_block": true,
707
+ "severity_hint": "High",
708
+ "notes": "JWT with oversized payload (memory exhaustion)",
709
+ "category": "Auth"
710
+ },
711
+ {
712
+ "id": "AUTH-JWT-065",
713
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature.extra.parts",
714
+ "tags": ["malformed", "extra-parts", "parser-confusion", "high"],
715
+ "expected_block": true,
716
+ "severity_hint": "High",
717
+ "notes": "JWT with extra dot-separated parts",
718
+ "category": "Auth"
719
+ },
720
+ {
721
+ "id": "AUTH-JWT-066",
722
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0",
723
+ "tags": ["malformed", "missing-signature", "bypass", "critical"],
724
+ "expected_block": true,
725
+ "severity_hint": "Critical",
726
+ "notes": "JWT with missing signature part entirely",
727
+ "category": "Auth"
728
+ },
729
+ {
730
+ "id": "AUTH-JWT-067",
731
+ "payload": "..eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.",
732
+ "tags": ["malformed", "empty-header", "bypass", "critical"],
733
+ "expected_block": true,
734
+ "severity_hint": "Critical",
735
+ "notes": "JWT with empty header (leading dots)",
736
+ "category": "Auth"
737
+ },
738
+ {
739
+ "id": "AUTH-JWT-068",
740
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..signature",
741
+ "tags": ["malformed", "empty-payload", "bypass", "critical"],
742
+ "expected_block": true,
743
+ "severity_hint": "Critical",
744
+ "notes": "JWT with empty payload",
745
+ "category": "Auth"
746
+ },
747
+ {
748
+ "id": "AUTH-JWT-069",
749
+ "payload": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
750
+ "tags": ["bearer-prefix", "header-format", "high"],
751
+ "expected_block": false,
752
+ "severity_hint": "High",
753
+ "notes": "JWT with Bearer prefix included in token",
754
+ "category": "Auth"
755
+ },
756
+ {
757
+ "id": "AUTH-JWT-070",
758
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImFjdCI6eyJzdWIiOiJ2aWN0aW0ifSwiaWF0IjoxNjA5NDU5MjAwfQ.signature",
759
+ "tags": ["act-claim", "token-exchange", "impersonation", "critical"],
760
+ "expected_block": false,
761
+ "severity_hint": "Critical",
762
+ "notes": "JWT with 'act' (actor) claim for delegation abuse",
763
+ "category": "Auth"
764
+ },
765
+ {
766
+ "id": "AUTH-JWT-071",
767
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsIm1heV9hY3RfYXMiOlsiYWRtaW4iLCJyb290Il0sImlhdCI6MTYwOTQ1OTIwMH0.signature",
768
+ "tags": ["may-act-as", "delegation", "privilege-escalation", "critical"],
769
+ "expected_block": false,
770
+ "severity_hint": "Critical",
771
+ "notes": "JWT with 'may_act_as' delegation claim",
772
+ "category": "Auth"
773
+ },
774
+ {
775
+ "id": "AUTH-JWT-072",
776
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImNuZiI6eyJqa3QiOiJfIH0sImlhdCI6MTYwOTQ1OTIwMH0.signature",
777
+ "tags": ["cnf-claim", "proof-of-possession", "bypass", "high"],
778
+ "expected_block": false,
779
+ "severity_hint": "High",
780
+ "notes": "JWT with weak 'cnf' (confirmation) claim",
781
+ "category": "Auth"
782
+ },
783
+ {
784
+ "id": "AUTH-JWT-073",
785
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlCLi4uIl19.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
786
+ "tags": ["x5c-injection", "certificate-chain", "critical"],
787
+ "expected_block": true,
788
+ "severity_hint": "Critical",
789
+ "notes": "JWT with 'x5c' (X.509 certificate chain) injection",
790
+ "category": "Auth"
791
+ },
792
+ {
793
+ "id": "AUTH-JWT-074",
794
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsIng1dCI6InNlbGYtc2lnbmVkIn0.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
795
+ "tags": ["x5t-manipulation", "thumbprint", "high"],
796
+ "expected_block": true,
797
+ "severity_hint": "High",
798
+ "notes": "JWT with manipulated 'x5t' (X.509 thumbprint)",
799
+ "category": "Auth"
800
+ },
801
+ {
802
+ "id": "AUTH-JWT-075",
803
+ "payload": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
804
+ "tags": ["eddsa", "ed25519", "algorithm", "high"],
805
+ "expected_block": false,
806
+ "severity_hint": "High",
807
+ "notes": "JWT with EdDSA algorithm (Ed25519)",
808
+ "category": "Auth"
809
+ },
810
+ {
811
+ "id": "AUTH-JWT-076",
812
+ "payload": "eyJhbGciOiJBMTI4S1ciLCJ0eXAiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.encrypted.iv.ciphertext.tag",
813
+ "tags": ["jwe", "encrypted-jwt", "a128kw", "high"],
814
+ "expected_block": false,
815
+ "severity_hint": "High",
816
+ "notes": "JWE with A128KW key wrapping algorithm",
817
+ "category": "Auth"
818
+ },
819
+ {
820
+ "id": "AUTH-JWT-077",
821
+ "payload": "eyJhbGciOiJkaXIiLCJ0eXAiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..iv.ciphertext.tag",
822
+ "tags": ["jwe", "direct-encryption", "dir", "high"],
823
+ "expected_block": false,
824
+ "severity_hint": "High",
825
+ "notes": "JWE with direct encryption (no key wrapping)",
826
+ "category": "Auth"
827
+ },
828
+ {
829
+ "id": "AUTH-JWT-078",
830
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImF0K2p3dCJ9.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
831
+ "tags": ["access-token-jwt", "at+jwt", "type-confusion", "high"],
832
+ "expected_block": false,
833
+ "severity_hint": "High",
834
+ "notes": "JWT with 'at+jwt' type (access token)",
835
+ "category": "Auth"
836
+ },
837
+ {
838
+ "id": "AUTH-JWT-079",
839
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImNyaXQiOlsiYWxnIl19.eyJzdWIiOiJhZG1pbiIsImlhdCI6MTYwOTQ1OTIwMH0.signature",
840
+ "tags": ["crit-header", "critical-claims", "bypass", "high"],
841
+ "expected_block": false,
842
+ "severity_hint": "High",
843
+ "notes": "JWT with 'crit' header (critical claims list)",
844
+ "category": "Auth"
845
+ },
846
+ {
847
+ "id": "AUTH-JWT-080",
848
+ "payload": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImI2NCI6ZmFsc2V9.not-base64-payload.signature",
849
+ "tags": ["b64-false", "unencoded-payload", "rfc7797", "high"],
850
+ "expected_block": true,
851
+ "severity_hint": "High",
852
+ "notes": "JWT with b64:false header (unencoded payload)",
853
+ "category": "Auth"
854
+ }
855
+ ]