compliance-owasp 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/compliance/OWASP-ASVS-5.0-L1.json +609 -1
- data/compliance/OWASP-ASVS-5.0-L2.json +1141 -1
- data/compliance/OWASP-ASVS-5.0-L3.json +1253 -1
- data/lib/compliance/owasp/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +1 -1
- metadata.gz.sig +1 -5
@@ -2,1255 +2,2507 @@
|
|
2
2
|
"requirements": [
|
3
3
|
{
|
4
4
|
"id": "OWASP-ASVS-V1.1.4",
|
5
|
+
"scope": [
|
6
|
+
"Architecture, Design and Threat Modeling",
|
7
|
+
"Secure Software Development Lifecycle"
|
8
|
+
],
|
5
9
|
"description": "Verify documentation and justification of all the application's trust boundaries, components, and significant data flows."
|
6
10
|
},
|
7
11
|
{
|
8
12
|
"id": "OWASP-ASVS-V1.1.5",
|
13
|
+
"scope": [
|
14
|
+
"Architecture, Design and Threat Modeling",
|
15
|
+
"Secure Software Development Lifecycle"
|
16
|
+
],
|
9
17
|
"description": "Verify definition and security analysis of the application's high-level architecture and all connected remote services."
|
10
18
|
},
|
11
19
|
{
|
12
20
|
"id": "OWASP-ASVS-V1.1.6",
|
21
|
+
"scope": [
|
22
|
+
"Architecture, Design and Threat Modeling",
|
23
|
+
"Secure Software Development Lifecycle"
|
24
|
+
],
|
13
25
|
"description": "Verify implementation of centralized, simple (economy of design), vetted, secure, and reusable security controls to avoid duplicate, missing, ineffective, or insecure controls."
|
14
26
|
},
|
15
27
|
{
|
16
28
|
"id": "OWASP-ASVS-V1.2.2",
|
29
|
+
"scope": [
|
30
|
+
"Architecture, Design and Threat Modeling",
|
31
|
+
"Authentication Architecture"
|
32
|
+
],
|
17
33
|
"description": "Verify that communications between back-end application components, including APIs, middleware and data layers, are authenticated and use individual user accounts."
|
18
34
|
},
|
19
35
|
{
|
20
36
|
"id": "OWASP-ASVS-V1.2.3",
|
37
|
+
"scope": [
|
38
|
+
"Architecture, Design and Threat Modeling",
|
39
|
+
"Authentication Architecture"
|
40
|
+
],
|
21
41
|
"description": "Verify that the application uses a single vetted user authentication mechanism that is known to be secure, can be extended to include strong authentication, and has sufficient logging and monitoring to detect account abuse or breaches."
|
22
42
|
},
|
23
43
|
{
|
24
44
|
"id": "OWASP-ASVS-V1.2.4",
|
45
|
+
"scope": [
|
46
|
+
"Architecture, Design and Threat Modeling",
|
47
|
+
"Authentication Architecture"
|
48
|
+
],
|
25
49
|
"description": "Verify that, if the application includes multiple authentication pathways, these are all documented together with the security controls and authentication strength which should be consistently enforced across them."
|
26
50
|
},
|
27
51
|
{
|
28
52
|
"id": "OWASP-ASVS-V1.2.5",
|
53
|
+
"scope": [
|
54
|
+
"Architecture, Design and Threat Modeling",
|
55
|
+
"Authentication Architecture"
|
56
|
+
],
|
29
57
|
"description": "Verify that a list of context specific words are documented in order to prevent their use in passwords."
|
30
58
|
},
|
31
59
|
{
|
32
60
|
"id": "OWASP-ASVS-V1.4.4",
|
61
|
+
"scope": [
|
62
|
+
"Architecture, Design and Threat Modeling",
|
63
|
+
"Access Control Architecture"
|
64
|
+
],
|
33
65
|
"description": "Verify the application uses a single and well-vetted access control mechanism for accessing protected data and resources. All requests must pass through this single mechanism to avoid copy and paste or insecure alternative paths."
|
34
66
|
},
|
35
67
|
{
|
36
68
|
"id": "OWASP-ASVS-V1.4.5",
|
69
|
+
"scope": [
|
70
|
+
"Architecture, Design and Threat Modeling",
|
71
|
+
"Access Control Architecture"
|
72
|
+
],
|
37
73
|
"description": "Verify that attribute or feature-based access control is used whereby the code checks the user's authorization for a feature or data item rather than just their role. Permissions should still be allocated using roles."
|
38
74
|
},
|
39
75
|
{
|
40
76
|
"id": "OWASP-ASVS-V1.4.6",
|
77
|
+
"scope": [
|
78
|
+
"Architecture, Design and Threat Modeling",
|
79
|
+
"Access Control Architecture"
|
80
|
+
],
|
41
81
|
"description": "Verify that communications between back-end application components, including APIs, middleware and data layers, are performed with the least necessary privileges."
|
42
82
|
},
|
43
83
|
{
|
44
84
|
"id": "OWASP-ASVS-V1.5.1",
|
85
|
+
"scope": [
|
86
|
+
"Architecture, Design and Threat Modeling",
|
87
|
+
"Input and Output Architecture"
|
88
|
+
],
|
45
89
|
"description": "Verify that input and output requirements clearly define how to handle and process data based on type and content."
|
46
90
|
},
|
47
91
|
{
|
48
92
|
"id": "OWASP-ASVS-V1.6.1",
|
93
|
+
"scope": [
|
94
|
+
"Architecture, Design and Threat Modeling",
|
95
|
+
"Cryptographic Architecture"
|
96
|
+
],
|
49
97
|
"description": "Verify that there is an explicit policy for management of cryptographic keys and that a cryptographic key lifecycle follows a key management standard such as NIST SP 800-57."
|
50
98
|
},
|
51
99
|
{
|
52
100
|
"id": "OWASP-ASVS-V1.6.2",
|
101
|
+
"scope": [
|
102
|
+
"Architecture, Design and Threat Modeling",
|
103
|
+
"Cryptographic Architecture"
|
104
|
+
],
|
53
105
|
"description": "Verify that consumers of cryptographic services protect key material and other secrets by using key vaults or API based alternatives."
|
54
106
|
},
|
55
107
|
{
|
56
108
|
"id": "OWASP-ASVS-V1.6.3",
|
109
|
+
"scope": [
|
110
|
+
"Architecture, Design and Threat Modeling",
|
111
|
+
"Cryptographic Architecture"
|
112
|
+
],
|
57
113
|
"description": "Verify that all keys and passwords are replaceable and are part of a well-defined process to re-encrypt sensitive data."
|
58
114
|
},
|
59
115
|
{
|
60
116
|
"id": "OWASP-ASVS-V1.6.4",
|
117
|
+
"scope": [
|
118
|
+
"Architecture, Design and Threat Modeling",
|
119
|
+
"Cryptographic Architecture"
|
120
|
+
],
|
61
121
|
"description": "Verify that the architecture treats client-side secrets (such as symmetric keys, passwords, or API tokens) as insecure and never uses them to protect or access sensitive data."
|
62
122
|
},
|
63
123
|
{
|
64
124
|
"id": "OWASP-ASVS-V1.7.3",
|
125
|
+
"scope": [
|
126
|
+
"Architecture, Design and Threat Modeling",
|
127
|
+
"Errors, Logging and Auditing Architecture"
|
128
|
+
],
|
65
129
|
"description": "Verify that an inventory exists documenting the logging performed at each layer of the application's technology stack, what events are being logged, log formats, where that logging is stored, how it is used, how access to it is controlled and how long logs are kept for."
|
66
130
|
},
|
67
131
|
{
|
68
132
|
"id": "OWASP-ASVS-V1.8.1",
|
133
|
+
"scope": [
|
134
|
+
"Architecture, Design and Threat Modeling",
|
135
|
+
"Data Protection and Privacy Architecture"
|
136
|
+
],
|
69
137
|
"description": "Verify that all sensitive data created and processed by the application has been identified and classified into protection levels, and ensure that a policy is in place on how to deal with sensitive data."
|
70
138
|
},
|
71
139
|
{
|
72
140
|
"id": "OWASP-ASVS-V1.8.2",
|
141
|
+
"scope": [
|
142
|
+
"Architecture, Design and Threat Modeling",
|
143
|
+
"Data Protection and Privacy Architecture"
|
144
|
+
],
|
73
145
|
"description": "Verify that all protection levels have an associated set of protection requirements and that these are applied in the architecture. This should include (but not be limited to) requirements related to encryption, integrity verification, retention, privacy and privacy-enhancing technologies to be used, and other confidentiality requirements."
|
74
146
|
},
|
75
147
|
{
|
76
148
|
"id": "OWASP-ASVS-V1.11.1",
|
149
|
+
"scope": [
|
150
|
+
"Architecture, Design and Threat Modeling",
|
151
|
+
"Business Logic Architecture"
|
152
|
+
],
|
77
153
|
"description": "Verify the definition and documentation of all application components in terms of the business or security functions they provide."
|
78
154
|
},
|
79
155
|
{
|
80
156
|
"id": "OWASP-ASVS-V1.11.2",
|
157
|
+
"scope": [
|
158
|
+
"Architecture, Design and Threat Modeling",
|
159
|
+
"Business Logic Architecture"
|
160
|
+
],
|
81
161
|
"description": "Verify that all application flows including authentication, session management and access control, maintain a consistent application and user state to prevent race conditions and business logic flaws."
|
82
162
|
},
|
83
163
|
{
|
84
164
|
"id": "OWASP-ASVS-V1.11.3",
|
165
|
+
"scope": [
|
166
|
+
"Architecture, Design and Threat Modeling",
|
167
|
+
"Business Logic Architecture"
|
168
|
+
],
|
85
169
|
"description": "Verify that all high-value business logic flows, including authentication, session management and access control are thread safe and resistant to time-of-check and time-of-use race conditions."
|
86
170
|
},
|
87
171
|
{
|
88
172
|
"id": "OWASP-ASVS-V1.14.1",
|
173
|
+
"scope": [
|
174
|
+
"Architecture, Design and Threat Modeling",
|
175
|
+
"Configuration Architecture"
|
176
|
+
],
|
89
177
|
"description": "Verify the segregation of back-end components of differing trust levels through well-defined security controls, firewall rules, API gateways, reverse proxies, cloud-based security groups, or similar mechanisms."
|
90
178
|
},
|
91
179
|
{
|
92
180
|
"id": "OWASP-ASVS-V1.14.5",
|
181
|
+
"scope": [
|
182
|
+
"Architecture, Design and Threat Modeling",
|
183
|
+
"Configuration Architecture"
|
184
|
+
],
|
93
185
|
"description": "Verify that application deployments adequately sandbox or isolate at the network level to delay and deter attackers from attacking other applications, especially when they are performing sensitive or dangerous actions such as deserialization."
|
94
186
|
},
|
95
187
|
{
|
96
188
|
"id": "OWASP-ASVS-V1.14.7",
|
189
|
+
"scope": [
|
190
|
+
"Architecture, Design and Threat Modeling",
|
191
|
+
"Configuration Architecture"
|
192
|
+
],
|
97
193
|
"description": "Verify the use of unique or special low-privilege operating system accounts for all back-end application components, services, and servers."
|
98
194
|
},
|
99
195
|
{
|
100
196
|
"id": "OWASP-ASVS-V1.14.8",
|
197
|
+
"scope": [
|
198
|
+
"Architecture, Design and Threat Modeling",
|
199
|
+
"Configuration Architecture"
|
200
|
+
],
|
101
201
|
"description": "Verify that the application is able to discern and utilizes the user's true IP address to provide for sensitive functions, including rate limiting and logging."
|
102
202
|
},
|
103
203
|
{
|
104
204
|
"id": "OWASP-ASVS-V2.1.1",
|
205
|
+
"scope": [
|
206
|
+
"Authentication",
|
207
|
+
"Password Security"
|
208
|
+
],
|
105
209
|
"description": "Verify that user set passwords are at least 8 characters in length."
|
106
210
|
},
|
107
211
|
{
|
108
212
|
"id": "OWASP-ASVS-V2.1.2",
|
213
|
+
"scope": [
|
214
|
+
"Authentication",
|
215
|
+
"Password Security"
|
216
|
+
],
|
109
217
|
"description": "Verify that passwords of at least 64 characters are permitted, and that passwords of more than 128 characters are denied."
|
110
218
|
},
|
111
219
|
{
|
112
220
|
"id": "OWASP-ASVS-V2.1.3",
|
221
|
+
"scope": [
|
222
|
+
"Authentication",
|
223
|
+
"Password Security"
|
224
|
+
],
|
113
225
|
"description": "Verify that the application verifies the user's password exactly as received from the user, without any modifications such as truncation or case transformation."
|
114
226
|
},
|
115
227
|
{
|
116
228
|
"id": "OWASP-ASVS-V2.1.4",
|
229
|
+
"scope": [
|
230
|
+
"Authentication",
|
231
|
+
"Password Security"
|
232
|
+
],
|
117
233
|
"description": "Verify that any printable Unicode character, including language neutral characters such as spaces and Emojis are permitted in passwords."
|
118
234
|
},
|
119
235
|
{
|
120
236
|
"id": "OWASP-ASVS-V2.1.5",
|
237
|
+
"scope": [
|
238
|
+
"Authentication",
|
239
|
+
"Password Security"
|
240
|
+
],
|
121
241
|
"description": "Verify users can change their password."
|
122
242
|
},
|
123
243
|
{
|
124
244
|
"id": "OWASP-ASVS-V2.1.6",
|
245
|
+
"scope": [
|
246
|
+
"Authentication",
|
247
|
+
"Password Security"
|
248
|
+
],
|
125
249
|
"description": "Verify that password change functionality requires the user's current and new password."
|
126
250
|
},
|
127
251
|
{
|
128
252
|
"id": "OWASP-ASVS-V2.1.7",
|
253
|
+
"scope": [
|
254
|
+
"Authentication",
|
255
|
+
"Password Security"
|
256
|
+
],
|
129
257
|
"description": "Verify that passwords submitted during account registration or password change are checked against an available set of, at least, the top 3000 passwords."
|
130
258
|
},
|
131
259
|
{
|
132
260
|
"id": "OWASP-ASVS-V2.1.9",
|
261
|
+
"scope": [
|
262
|
+
"Authentication",
|
263
|
+
"Password Security"
|
264
|
+
],
|
133
265
|
"description": "Verify that there are no password composition rules limiting the type of characters permitted. There should be no requirement for upper or lower case or numbers or special characters."
|
134
266
|
},
|
135
267
|
{
|
136
268
|
"id": "OWASP-ASVS-V2.1.10",
|
269
|
+
"scope": [
|
270
|
+
"Authentication",
|
271
|
+
"Password Security"
|
272
|
+
],
|
137
273
|
"description": "Verify that the application does not require periodic credential rotation."
|
138
274
|
},
|
139
275
|
{
|
140
276
|
"id": "OWASP-ASVS-V2.1.11",
|
277
|
+
"scope": [
|
278
|
+
"Authentication",
|
279
|
+
"Password Security"
|
280
|
+
],
|
141
281
|
"description": "Verify that \"paste\" functionality, browser password helpers, and external password managers are permitted."
|
142
282
|
},
|
143
283
|
{
|
144
284
|
"id": "OWASP-ASVS-V2.1.12",
|
285
|
+
"scope": [
|
286
|
+
"Authentication",
|
287
|
+
"Password Security"
|
288
|
+
],
|
145
289
|
"description": "Verify that password input fields use type=password to mask the entry. Applications may allow the user to temporarily view the entire masked password, or the last typed character of the password."
|
146
290
|
},
|
147
291
|
{
|
148
292
|
"id": "OWASP-ASVS-V2.1.13",
|
293
|
+
"scope": [
|
294
|
+
"Authentication",
|
295
|
+
"Password Security"
|
296
|
+
],
|
149
297
|
"description": "Verify that the application does not keep a password history."
|
150
298
|
},
|
151
299
|
{
|
152
300
|
"id": "OWASP-ASVS-V2.1.14",
|
301
|
+
"scope": [
|
302
|
+
"Authentication",
|
303
|
+
"Password Security"
|
304
|
+
],
|
153
305
|
"description": "Verify that passwords submitted during account registration or password changes are checked against a set of breached username and password pairs."
|
154
306
|
},
|
155
307
|
{
|
156
308
|
"id": "OWASP-ASVS-V2.1.15",
|
309
|
+
"scope": [
|
310
|
+
"Authentication",
|
311
|
+
"Password Security"
|
312
|
+
],
|
157
313
|
"description": "Verify that the documented list of context specific words is used to prevent easy to guess passwords being created."
|
158
314
|
},
|
159
315
|
{
|
160
316
|
"id": "OWASP-ASVS-V2.2.1",
|
317
|
+
"scope": [
|
318
|
+
"Authentication",
|
319
|
+
"General Authenticator Security"
|
320
|
+
],
|
161
321
|
"description": "Verify that anti-automation controls are effective at mitigating breached credential testing, brute force, and account lockout attacks. Such controls include blocking the most common breached passwords, soft lockouts, rate limiting, CAPTCHA, ever increasing delays between attempts, IP address restrictions, or risk-based restrictions such as location, first login on a device, recent attempts to unlock the account, or similar. More than 5 failed authentication attempts per hour for a single account should trigger some sort of reaction or alert."
|
162
322
|
},
|
163
323
|
{
|
164
324
|
"id": "OWASP-ASVS-V2.2.2",
|
325
|
+
"scope": [
|
326
|
+
"Authentication",
|
327
|
+
"General Authenticator Security"
|
328
|
+
],
|
165
329
|
"description": "Verify that restricted authenticators (those using PSTN to deliver OTPs via phone or SMS) are offered only when alternate stronger methods are also offered and when the service provides information on their security risks to users."
|
166
330
|
},
|
167
331
|
{
|
168
332
|
"id": "OWASP-ASVS-V2.2.3",
|
333
|
+
"scope": [
|
334
|
+
"Authentication",
|
335
|
+
"General Authenticator Security"
|
336
|
+
],
|
169
337
|
"description": "Verify that users are notified after updates to authentication details, such as credential resets or modification of the username or email address."
|
170
338
|
},
|
171
339
|
{
|
172
340
|
"id": "OWASP-ASVS-V2.2.4",
|
341
|
+
"scope": [
|
342
|
+
"Authentication",
|
343
|
+
"General Authenticator Security"
|
344
|
+
],
|
173
345
|
"description": "Verify that a hardware-based authenticator and an authenticator that provides verifier impersonation resistance against phishing attacks (such as WebAuthn) are used."
|
174
346
|
},
|
175
347
|
{
|
176
348
|
"id": "OWASP-ASVS-V2.2.5",
|
349
|
+
"scope": [
|
350
|
+
"Authentication",
|
351
|
+
"General Authenticator Security"
|
352
|
+
],
|
177
353
|
"description": "Verify that where a Credential Service Provider (CSP) and the application verifying authentication are separated, mutually authenticated TLS is in place between the two endpoints."
|
178
354
|
},
|
179
355
|
{
|
180
356
|
"id": "OWASP-ASVS-V2.2.6",
|
357
|
+
"scope": [
|
358
|
+
"Authentication",
|
359
|
+
"General Authenticator Security"
|
360
|
+
],
|
181
361
|
"description": "Verify replay resistance through the mandated use of One-time Passwords (OTP) devices, cryptographic authenticators, or lookup codes."
|
182
362
|
},
|
183
363
|
{
|
184
364
|
"id": "OWASP-ASVS-V2.2.7",
|
365
|
+
"scope": [
|
366
|
+
"Authentication",
|
367
|
+
"General Authenticator Security"
|
368
|
+
],
|
185
369
|
"description": "Verify intent to authenticate by requiring the entry of an OTP token or user-initiated action such as a button press on a FIDO hardware key."
|
186
370
|
},
|
187
371
|
{
|
188
372
|
"id": "OWASP-ASVS-V2.2.8",
|
373
|
+
"scope": [
|
374
|
+
"Authentication",
|
375
|
+
"General Authenticator Security"
|
376
|
+
],
|
189
377
|
"description": "Verify that valid users cannot be deduced from failed authentication challenges, such as based on error messages, HTTP response codes, or different response times. Registration and forgot password functionality should also have this protection."
|
190
378
|
},
|
191
379
|
{
|
192
380
|
"id": "OWASP-ASVS-V2.2.9",
|
381
|
+
"scope": [
|
382
|
+
"Authentication",
|
383
|
+
"General Authenticator Security"
|
384
|
+
],
|
193
385
|
"description": "Verify that multi-factor authentication is required, that is, the application uses either a multi-factor authenticator or a combination of single-factor authenticators."
|
194
386
|
},
|
195
387
|
{
|
196
388
|
"id": "OWASP-ASVS-V2.2.10",
|
389
|
+
"scope": [
|
390
|
+
"Authentication",
|
391
|
+
"General Authenticator Security"
|
392
|
+
],
|
197
393
|
"description": "Verify that users are notified of suspicious authentication attempts. Suspicious authentication attempts may include successful or unsuccessful authentication from an unusual location or client, partially successful authentication with only one of multiple factors, successful or unsuccessful authentication after a long period of inactivity or successful authentication after several unsuccessful attempts."
|
198
394
|
},
|
199
395
|
{
|
200
396
|
"id": "OWASP-ASVS-V2.2.11",
|
397
|
+
"scope": [
|
398
|
+
"Authentication",
|
399
|
+
"General Authenticator Security"
|
400
|
+
],
|
201
401
|
"description": "Verify that, if the application includes multiple authentication pathways, there are no undocumented pathways and that security controls and authentication strength are enforced consistently."
|
202
402
|
},
|
203
403
|
{
|
204
404
|
"id": "OWASP-ASVS-V2.2.12",
|
405
|
+
"scope": [
|
406
|
+
"Authentication",
|
407
|
+
"General Authenticator Security"
|
408
|
+
],
|
205
409
|
"description": "Verify that email is not used as either a single-factor or multi-factor authentication mechanism."
|
206
410
|
},
|
207
411
|
{
|
208
412
|
"id": "OWASP-ASVS-V2.3.1",
|
413
|
+
"scope": [
|
414
|
+
"Authentication",
|
415
|
+
"Authenticator Lifecycle"
|
416
|
+
],
|
209
417
|
"description": "Verify system generated initial passwords or activation codes are securely randomly generated, at least 6 characters long, may contain letters and numbers, expire after a short period of time, and are single-use. These initial secrets must not be permitted to become the long term password."
|
210
418
|
},
|
211
419
|
{
|
212
420
|
"id": "OWASP-ASVS-V2.3.2",
|
421
|
+
"scope": [
|
422
|
+
"Authentication",
|
423
|
+
"Authenticator Lifecycle"
|
424
|
+
],
|
213
425
|
"description": "Verify that enrollment and use of user-provided authentication devices are supported, such as a U2F or FIDO tokens."
|
214
426
|
},
|
215
427
|
{
|
216
428
|
"id": "OWASP-ASVS-V2.3.3",
|
429
|
+
"scope": [
|
430
|
+
"Authentication",
|
431
|
+
"Authenticator Lifecycle"
|
432
|
+
],
|
217
433
|
"description": "Verify that automated reminders are configured and acted on to ensure that renewal instructions for time-bound authenticators are sent with enough time to be carried out before the old authenticator expires."
|
218
434
|
},
|
219
435
|
{
|
220
436
|
"id": "OWASP-ASVS-V2.3.4",
|
437
|
+
"scope": [
|
438
|
+
"Authentication",
|
439
|
+
"Authenticator Lifecycle"
|
440
|
+
],
|
221
441
|
"description": "System administrators should not be able to change or choose any user's password, but rather only be able to initiate the password reset process for the user."
|
222
442
|
},
|
223
443
|
{
|
224
444
|
"id": "OWASP-ASVS-V2.4.1",
|
445
|
+
"scope": [
|
446
|
+
"Authentication",
|
447
|
+
"Credential Storage"
|
448
|
+
],
|
225
449
|
"description": "Verify that one of the following password hashing functions is used when storing the user's password for the application: argon2id, scrypt, bcrypt or PBKDF2."
|
226
450
|
},
|
227
451
|
{
|
228
452
|
"id": "OWASP-ASVS-V2.4.3",
|
453
|
+
"scope": [
|
454
|
+
"Authentication",
|
455
|
+
"Credential Storage"
|
456
|
+
],
|
229
457
|
"description": "Verify that if PBKDF2 is used, the iteration count should be a minimum of 1,300,000 iterations with PBKDF2-HMAC-SHA1, a minimum of 600,000 iterations using PBKDF2-HMAC-SHA256, or with a minimum of 210,000 iterations with PBKDF2-HMAC-SHA512."
|
230
458
|
},
|
231
459
|
{
|
232
460
|
"id": "OWASP-ASVS-V2.4.4",
|
461
|
+
"scope": [
|
462
|
+
"Authentication",
|
463
|
+
"Credential Storage"
|
464
|
+
],
|
233
465
|
"description": "Verify that if bcrypt is used, the work factor is a minimum of 10 and password size is limited to 72-bytes due to bcrypt's input limit."
|
234
466
|
},
|
235
467
|
{
|
236
468
|
"id": "OWASP-ASVS-V2.4.6",
|
469
|
+
"scope": [
|
470
|
+
"Authentication",
|
471
|
+
"Credential Storage"
|
472
|
+
],
|
237
473
|
"description": "Verify that if argon2id is used, there should be a minimum configuration of 19 MiB of memory, an iteration count of 2, and 1 degree of parallelism."
|
238
474
|
},
|
239
475
|
{
|
240
476
|
"id": "OWASP-ASVS-V2.4.7",
|
477
|
+
"scope": [
|
478
|
+
"Authentication",
|
479
|
+
"Credential Storage"
|
480
|
+
],
|
241
481
|
"description": "Verify that if scrypt is used, the configuration should be a minimum work factor of (2^17), a minimum block size of 8 (1024 bytes), and a parallelization parameter of 1."
|
242
482
|
},
|
243
483
|
{
|
244
484
|
"id": "OWASP-ASVS-V2.5.2",
|
485
|
+
"scope": [
|
486
|
+
"Authentication",
|
487
|
+
"Credential Recovery"
|
488
|
+
],
|
245
489
|
"description": "Verify password hints or knowledge-based authentication (so-called \"secret questions\") are not present."
|
246
490
|
},
|
247
491
|
{
|
248
492
|
"id": "OWASP-ASVS-V2.5.4",
|
493
|
+
"scope": [
|
494
|
+
"Authentication",
|
495
|
+
"Credential Recovery"
|
496
|
+
],
|
249
497
|
"description": "Verify that default user accounts (e.g. \"root\", \"admin\", or \"sa\") are not present in the application or are disabled."
|
250
498
|
},
|
251
499
|
{
|
252
500
|
"id": "OWASP-ASVS-V2.5.6",
|
501
|
+
"scope": [
|
502
|
+
"Authentication",
|
503
|
+
"Credential Recovery"
|
504
|
+
],
|
253
505
|
"description": "Verify forgotten password, and other recovery paths use a secure recovery mechanism, such as time-based OTP (TOTP) or other soft token, mobile push, or another offline recovery mechanism."
|
254
506
|
},
|
255
507
|
{
|
256
508
|
"id": "OWASP-ASVS-V2.5.7",
|
509
|
+
"scope": [
|
510
|
+
"Authentication",
|
511
|
+
"Credential Recovery"
|
512
|
+
],
|
257
513
|
"description": "Verify that if OTP or multi-factor authentication factors are lost, that evidence of identity proofing is performed at the same level as during enrollment."
|
258
514
|
},
|
259
515
|
{
|
260
516
|
"id": "OWASP-ASVS-V2.6.1",
|
517
|
+
"scope": [
|
518
|
+
"Authentication",
|
519
|
+
"Lookup Secret Verifier"
|
520
|
+
],
|
261
521
|
"description": "Verify that lookup secrets can be used only once."
|
262
522
|
},
|
263
523
|
{
|
264
524
|
"id": "OWASP-ASVS-V2.6.2",
|
525
|
+
"scope": [
|
526
|
+
"Authentication",
|
527
|
+
"Lookup Secret Verifier"
|
528
|
+
],
|
265
529
|
"description": "Verify that lookup secrets stored at the back-end with less than 112 bits of entropy (19 random alphanumeric characters or 34 random digits) are hashed with an approved password storage hashing algorithm that incorporates a 32-bit random salt. A standard hash function can be used if the secret has 112 bits of entropy or more."
|
266
530
|
},
|
267
531
|
{
|
268
532
|
"id": "OWASP-ASVS-V2.6.3",
|
533
|
+
"scope": [
|
534
|
+
"Authentication",
|
535
|
+
"Lookup Secret Verifier"
|
536
|
+
],
|
269
537
|
"description": "Verify that lookup secrets are generated using a Cryptographically Secure Pseudorandom Number Generator (CSPRNG) to avoid predictable values."
|
270
538
|
},
|
271
539
|
{
|
272
540
|
"id": "OWASP-ASVS-V2.6.4",
|
541
|
+
"scope": [
|
542
|
+
"Authentication",
|
543
|
+
"Lookup Secret Verifier"
|
544
|
+
],
|
273
545
|
"description": "Verify that lookup secrets have a minimum of 20 bits of entropy (typically 4 random alphanumeric characters or 6 random digits is sufficient)."
|
274
546
|
},
|
275
547
|
{
|
276
548
|
"id": "OWASP-ASVS-V2.7.1",
|
549
|
+
"scope": [
|
550
|
+
"Authentication",
|
551
|
+
"Out-of-Band Verifier"
|
552
|
+
],
|
277
553
|
"description": "Verify that cleartext out-of-band (NIST \"restricted\") authenticators, such as SMS or PSTN, are not offered by default, and stronger alternatives such as push notifications are offered first."
|
278
554
|
},
|
279
555
|
{
|
280
556
|
"id": "OWASP-ASVS-V2.7.2",
|
557
|
+
"scope": [
|
558
|
+
"Authentication",
|
559
|
+
"Out-of-Band Verifier"
|
560
|
+
],
|
281
561
|
"description": "Verify that the out-of-band verifier expires out-of-band authentication requests, codes, or tokens within 10 minutes."
|
282
562
|
},
|
283
563
|
{
|
284
564
|
"id": "OWASP-ASVS-V2.7.3",
|
565
|
+
"scope": [
|
566
|
+
"Authentication",
|
567
|
+
"Out-of-Band Verifier"
|
568
|
+
],
|
285
569
|
"description": "Verify that the out-of-band verifier authentication requests, codes, or tokens are only usable once, and only for the original authentication request."
|
286
570
|
},
|
287
571
|
{
|
288
572
|
"id": "OWASP-ASVS-V2.7.4",
|
573
|
+
"scope": [
|
574
|
+
"Authentication",
|
575
|
+
"Out-of-Band Verifier"
|
576
|
+
],
|
289
577
|
"description": "Verify that the out-of-band authenticator and verifier communicates over a secure independent channel."
|
290
578
|
},
|
291
579
|
{
|
292
580
|
"id": "OWASP-ASVS-V2.7.5",
|
581
|
+
"scope": [
|
582
|
+
"Authentication",
|
583
|
+
"Out-of-Band Verifier"
|
584
|
+
],
|
293
585
|
"description": "Verify that the out-of-band verifier retains only a hashed version of the authentication code."
|
294
586
|
},
|
295
587
|
{
|
296
588
|
"id": "OWASP-ASVS-V2.7.6",
|
589
|
+
"scope": [
|
590
|
+
"Authentication",
|
591
|
+
"Out-of-Band Verifier"
|
592
|
+
],
|
297
593
|
"description": "Verify that the initial authentication code is generated by a secure random number generator, containing at least 20 bits of entropy (typically 4 random alphanumeric characters or 6 random digits is sufficient)."
|
298
594
|
},
|
299
595
|
{
|
300
596
|
"id": "OWASP-ASVS-V2.7.7",
|
597
|
+
"scope": [
|
598
|
+
"Authentication",
|
599
|
+
"Out-of-Band Verifier"
|
600
|
+
],
|
301
601
|
"description": "Verify that the initial authentication code is protected against brute force attacks by using either rate limiting or a code with at least 64 bits of entropy."
|
302
602
|
},
|
303
603
|
{
|
304
604
|
"id": "OWASP-ASVS-V2.8.1",
|
605
|
+
"scope": [
|
606
|
+
"Authentication",
|
607
|
+
"One-Time Verifier"
|
608
|
+
],
|
305
609
|
"description": "Verify that time-based OTPs have a defined lifetime before expiring."
|
306
610
|
},
|
307
611
|
{
|
308
612
|
"id": "OWASP-ASVS-V2.8.2",
|
613
|
+
"scope": [
|
614
|
+
"Authentication",
|
615
|
+
"One-Time Verifier"
|
616
|
+
],
|
309
617
|
"description": "Verify that symmetric keys used to verify submitted OTPs are highly protected, such as by using a hardware security module or secure operating system based key storage."
|
310
618
|
},
|
311
619
|
{
|
312
620
|
"id": "OWASP-ASVS-V2.8.3",
|
621
|
+
"scope": [
|
622
|
+
"Authentication",
|
623
|
+
"One-Time Verifier"
|
624
|
+
],
|
313
625
|
"description": "Verify that approved cryptographic algorithms are used in the generation, seeding, and verification of OTPs."
|
314
626
|
},
|
315
627
|
{
|
316
628
|
"id": "OWASP-ASVS-V2.8.4",
|
629
|
+
"scope": [
|
630
|
+
"Authentication",
|
631
|
+
"One-Time Verifier"
|
632
|
+
],
|
317
633
|
"description": "Verify that time-based OTP can be used only once within the validity period."
|
318
634
|
},
|
319
635
|
{
|
320
636
|
"id": "OWASP-ASVS-V2.8.5",
|
637
|
+
"scope": [
|
638
|
+
"Authentication",
|
639
|
+
"One-Time Verifier"
|
640
|
+
],
|
321
641
|
"description": "Verify that if a time-based multi-factor OTP token is re-used during the validity period, it is logged and rejected with secure notifications being sent to the holder of the device."
|
322
642
|
},
|
323
643
|
{
|
324
644
|
"id": "OWASP-ASVS-V2.8.6",
|
645
|
+
"scope": [
|
646
|
+
"Authentication",
|
647
|
+
"One-Time Verifier"
|
648
|
+
],
|
325
649
|
"description": "Verify physical single-factor OTP generator can be revoked in case of theft or other loss. Ensure that revocation is immediately effective across logged in sessions, regardless of location."
|
326
650
|
},
|
327
651
|
{
|
328
652
|
"id": "OWASP-ASVS-V2.8.7",
|
653
|
+
"scope": [
|
654
|
+
"Authentication",
|
655
|
+
"One-Time Verifier"
|
656
|
+
],
|
329
657
|
"description": "Verify that biometric authenticators are only used as secondary factors together with either something you have or something you know."
|
330
658
|
},
|
331
659
|
{
|
332
660
|
"id": "OWASP-ASVS-V2.8.8",
|
661
|
+
"scope": [
|
662
|
+
"Authentication",
|
663
|
+
"One-Time Verifier"
|
664
|
+
],
|
333
665
|
"description": "Ensure that generation of the time-based multi-factor OTP token is based on the server's system time and not the client's machine."
|
334
666
|
},
|
335
667
|
{
|
336
668
|
"id": "OWASP-ASVS-V2.9.1",
|
669
|
+
"scope": [
|
670
|
+
"Authentication",
|
671
|
+
"Cryptographic Verifier"
|
672
|
+
],
|
337
673
|
"description": "Verify that cryptographic keys used in verification are stored securely and protected against disclosure, such as using a Trusted Platform Module (TPM) or Hardware Security Module (HSM), or an OS service that can use this secure storage."
|
338
674
|
},
|
339
675
|
{
|
340
676
|
"id": "OWASP-ASVS-V2.9.2",
|
677
|
+
"scope": [
|
678
|
+
"Authentication",
|
679
|
+
"Cryptographic Verifier"
|
680
|
+
],
|
341
681
|
"description": "Verify that the challenge nonce is at least 64 bits in length, and statistically unique or unique over the lifetime of the cryptographic device."
|
342
682
|
},
|
343
683
|
{
|
344
684
|
"id": "OWASP-ASVS-V2.9.3",
|
685
|
+
"scope": [
|
686
|
+
"Authentication",
|
687
|
+
"Cryptographic Verifier"
|
688
|
+
],
|
345
689
|
"description": "Verify that approved cryptographic algorithms are used in the generation, seeding, and verification of the cryptographic keys."
|
346
690
|
},
|
347
691
|
{
|
348
692
|
"id": "OWASP-ASVS-V2.10.1",
|
693
|
+
"scope": [
|
694
|
+
"Authentication",
|
695
|
+
"Service Authentication"
|
696
|
+
],
|
349
697
|
"description": "Verify that intra-service secrets do not rely on unchanging credentials such as passwords, API keys or shared accounts with privileged access."
|
350
698
|
},
|
351
699
|
{
|
352
700
|
"id": "OWASP-ASVS-V2.10.2",
|
701
|
+
"scope": [
|
702
|
+
"Authentication",
|
703
|
+
"Service Authentication"
|
704
|
+
],
|
353
705
|
"description": "Verify that if a credential has to be used for service authentication, the credential being used by the consumer is not a default credential (e.g. root/root or admin/admin are default in some services during installation)."
|
354
706
|
},
|
355
707
|
{
|
356
708
|
"id": "OWASP-ASVS-V2.10.4",
|
709
|
+
"scope": [
|
710
|
+
"Authentication",
|
711
|
+
"Service Authentication"
|
712
|
+
],
|
357
713
|
"description": "Verify passwords, integrations with databases and third-party systems, seeds and internal secrets, and API keys are managed securely and not included in the source code or stored within source code repositories. Such storage should resist offline attacks. The use of a secure software key store (L1), hardware TPM, or an HSM (L3) is recommended for password storage."
|
358
714
|
},
|
359
715
|
{
|
360
716
|
"id": "OWASP-ASVS-V3.1.2",
|
717
|
+
"scope": [
|
718
|
+
"Session Management",
|
719
|
+
"Fundamental Session Management Security"
|
720
|
+
],
|
361
721
|
"description": "Verify that the application performs all session token verification using a trusted, back-end service."
|
362
722
|
},
|
363
723
|
{
|
364
724
|
"id": "OWASP-ASVS-V3.1.3",
|
725
|
+
"scope": [
|
726
|
+
"Session Management",
|
727
|
+
"Fundamental Session Management Security"
|
728
|
+
],
|
365
729
|
"description": "Verify that the application uses either cryptographically signed or opaque tokens for session management. Static API secrets and keys should be avoided."
|
366
730
|
},
|
367
731
|
{
|
368
732
|
"id": "OWASP-ASVS-V3.2.1",
|
733
|
+
"scope": [
|
734
|
+
"Session Management",
|
735
|
+
"Session Binding"
|
736
|
+
],
|
369
737
|
"description": "Verify the application generates a new session token on user authentication, including re-authentication, and terminates the current session token."
|
370
738
|
},
|
371
739
|
{
|
372
740
|
"id": "OWASP-ASVS-V3.2.2",
|
741
|
+
"scope": [
|
742
|
+
"Session Management",
|
743
|
+
"Session Binding"
|
744
|
+
],
|
373
745
|
"description": "Verify that opaque session tokens possess at least 128 bits of entropy."
|
374
746
|
},
|
375
747
|
{
|
376
748
|
"id": "OWASP-ASVS-V3.2.4",
|
749
|
+
"scope": [
|
750
|
+
"Session Management",
|
751
|
+
"Session Binding"
|
752
|
+
],
|
377
753
|
"description": "Verify that opaque session tokens are generated using a secure random function."
|
378
754
|
},
|
379
755
|
{
|
380
756
|
"id": "OWASP-ASVS-V3.2.5",
|
757
|
+
"scope": [
|
758
|
+
"Session Management",
|
759
|
+
"Session Binding"
|
760
|
+
],
|
381
761
|
"description": "Verify that creating a session for the application requires the user's consent and that the application is protected against a CSRF-style attack where a new application session for the user is created via SSO without user interaction."
|
382
762
|
},
|
383
763
|
{
|
384
764
|
"id": "OWASP-ASVS-V3.3.2",
|
765
|
+
"scope": [
|
766
|
+
"Session Management",
|
767
|
+
"Session Timeout"
|
768
|
+
],
|
385
769
|
"description": "Verify that there is an absolute maximum session lifetime such that re-authentication is required at least every 30 days for L1 applications or every 12 hours for L2 and L3 applications."
|
386
770
|
},
|
387
771
|
{
|
388
772
|
"id": "OWASP-ASVS-V3.3.5",
|
773
|
+
"scope": [
|
774
|
+
"Session Management",
|
775
|
+
"Session Timeout"
|
776
|
+
],
|
389
777
|
"description": "Verify that re-authentication is required after 30 minutes of inactivity for L2 applications or after 15 minutes of inactivity for L3 applications."
|
390
778
|
},
|
391
779
|
{
|
392
780
|
"id": "OWASP-ASVS-V3.4.1",
|
781
|
+
"scope": [
|
782
|
+
"Session Management",
|
783
|
+
"Cookie-based Session Management"
|
784
|
+
],
|
393
785
|
"description": "Verify that cookie-based session tokens have the 'Secure' attribute set."
|
394
786
|
},
|
395
787
|
{
|
396
788
|
"id": "OWASP-ASVS-V3.4.2",
|
789
|
+
"scope": [
|
790
|
+
"Session Management",
|
791
|
+
"Cookie-based Session Management"
|
792
|
+
],
|
397
793
|
"description": "Verify that cookie-based session tokens are not readable by client-side scripts. The session token cookie should have the 'HttpOnly' attribute set and the session token value should only be transferred to the client via the Set-Cookie header."
|
398
794
|
},
|
399
795
|
{
|
400
796
|
"id": "OWASP-ASVS-V3.4.3",
|
797
|
+
"scope": [
|
798
|
+
"Session Management",
|
799
|
+
"Cookie-based Session Management"
|
800
|
+
],
|
401
801
|
"description": "Verify that cookie-based session tokens utilize the 'SameSite' attribute to limit exposure to cross-site request forgery attacks."
|
402
802
|
},
|
403
803
|
{
|
404
804
|
"id": "OWASP-ASVS-V3.4.4",
|
805
|
+
"scope": [
|
806
|
+
"Session Management",
|
807
|
+
"Cookie-based Session Management"
|
808
|
+
],
|
405
809
|
"description": "Verify that cookie-based session tokens use the \"__Host-\" prefix so cookies are only sent to the host that initially set the cookie."
|
406
810
|
},
|
407
811
|
{
|
408
812
|
"id": "OWASP-ASVS-V3.5.1",
|
813
|
+
"scope": [
|
814
|
+
"Session Management",
|
815
|
+
"Token-based Session Management"
|
816
|
+
],
|
409
817
|
"description": "Verify that the application allows users to revoke OAuth tokens that form trust relationships with linked applications."
|
410
818
|
},
|
411
819
|
{
|
412
820
|
"id": "OWASP-ASVS-V3.5.3",
|
821
|
+
"scope": [
|
822
|
+
"Session Management",
|
823
|
+
"Token-based Session Management"
|
824
|
+
],
|
413
825
|
"description": "Verify that stateless session tokens make use of a digital signature to protect against tampering and this is checked before processing it further."
|
414
826
|
},
|
415
827
|
{
|
416
828
|
"id": "OWASP-ASVS-V3.5.4",
|
829
|
+
"scope": [
|
830
|
+
"Session Management",
|
831
|
+
"Token-based Session Management"
|
832
|
+
],
|
417
833
|
"description": "Verify that stateless tokens are checked for expiration before processing them further."
|
418
834
|
},
|
419
835
|
{
|
420
836
|
"id": "OWASP-ASVS-V3.5.5",
|
837
|
+
"scope": [
|
838
|
+
"Session Management",
|
839
|
+
"Token-based Session Management"
|
840
|
+
],
|
421
841
|
"description": "Verify that only allow-listed signing algorithms are allowed for a stateless token."
|
422
842
|
},
|
423
843
|
{
|
424
844
|
"id": "OWASP-ASVS-V3.5.6",
|
845
|
+
"scope": [
|
846
|
+
"Session Management",
|
847
|
+
"Token-based Session Management"
|
848
|
+
],
|
425
849
|
"description": "Verify that other, security-sensitive attributes of a stateless token are being verified. For example, in a JWT this may include issuer, subject, and audience."
|
426
850
|
},
|
427
851
|
{
|
428
852
|
"id": "OWASP-ASVS-V3.5.7",
|
853
|
+
"scope": [
|
854
|
+
"Session Management",
|
855
|
+
"Token-based Session Management"
|
856
|
+
],
|
429
857
|
"description": "Verify that all active stateless tokens, which are being relied upon for access control decisions, are revoked when admins change the entitlements or roles of the user."
|
430
858
|
},
|
431
859
|
{
|
432
860
|
"id": "OWASP-ASVS-V3.6.1",
|
861
|
+
"scope": [
|
862
|
+
"Session Management",
|
863
|
+
"Federated Re-authentication"
|
864
|
+
],
|
433
865
|
"description": "Verify that Relying Parties (RPs) specify the maximum authentication time to Credential Service Providers (CSPs) and that CSPs re-authenticate the user if they haven't used a session within that period."
|
434
866
|
},
|
435
867
|
{
|
436
868
|
"id": "OWASP-ASVS-V3.6.2",
|
869
|
+
"scope": [
|
870
|
+
"Session Management",
|
871
|
+
"Federated Re-authentication"
|
872
|
+
],
|
437
873
|
"description": "Verify that Credential Service Providers (CSPs) inform Relying Parties (RPs) of the last authentication event, to allow RPs to determine if they need to re-authenticate the user."
|
438
874
|
},
|
439
875
|
{
|
440
876
|
"id": "OWASP-ASVS-V3.7.1",
|
877
|
+
"scope": [
|
878
|
+
"Session Management",
|
879
|
+
"Defenses Against Session Management Exploits"
|
880
|
+
],
|
441
881
|
"description": "Verify that the application requires re-authentication or secondary verification before allowing highly sensitive transactions or modifications to account profile or authentication settings."
|
442
882
|
},
|
443
883
|
{
|
444
884
|
"id": "OWASP-ASVS-V3.8.1",
|
885
|
+
"scope": [
|
886
|
+
"Session Management",
|
887
|
+
"Session Termination"
|
888
|
+
],
|
445
889
|
"description": "Verify that logout and expiration terminate the user's session, such that the back button or a downstream relying party cannot resume an authenticated session."
|
446
890
|
},
|
447
891
|
{
|
448
892
|
"id": "OWASP-ASVS-V3.8.2",
|
893
|
+
"scope": [
|
894
|
+
"Session Management",
|
895
|
+
"Session Termination"
|
896
|
+
],
|
449
897
|
"description": "Verify that the application gives the option to terminate all other active sessions after a successful change or removal of any authentication factor (including password change via reset or recovery and, if present, an MFA settings update)."
|
450
898
|
},
|
451
899
|
{
|
452
900
|
"id": "OWASP-ASVS-V3.8.3",
|
901
|
+
"scope": [
|
902
|
+
"Session Management",
|
903
|
+
"Session Termination"
|
904
|
+
],
|
453
905
|
"description": "Verify that users are able to view and (having re-entered login credentials) terminate any or all currently active sessions."
|
454
906
|
},
|
455
907
|
{
|
456
908
|
"id": "OWASP-ASVS-V3.8.4",
|
909
|
+
"scope": [
|
910
|
+
"Session Management",
|
911
|
+
"Session Termination"
|
912
|
+
],
|
457
913
|
"description": "Verify that all pages that require authentication have easy and visible access to logout functionality."
|
458
914
|
},
|
459
915
|
{
|
460
916
|
"id": "OWASP-ASVS-V3.8.5",
|
917
|
+
"scope": [
|
918
|
+
"Session Management",
|
919
|
+
"Session Termination"
|
920
|
+
],
|
461
921
|
"description": "Verify that the application terminates all active sessions when a user account is disabled or deleted (such as an employee leaving the company)."
|
462
922
|
},
|
463
923
|
{
|
464
924
|
"id": "OWASP-ASVS-V3.8.6",
|
925
|
+
"scope": [
|
926
|
+
"Session Management",
|
927
|
+
"Session Termination"
|
928
|
+
],
|
465
929
|
"description": "Verify that application administrators are able to terminate active sessions for an individual user or for all users."
|
466
930
|
},
|
467
931
|
{
|
468
932
|
"id": "OWASP-ASVS-V4.1.1",
|
933
|
+
"scope": [
|
934
|
+
"Access Control",
|
935
|
+
"General Access Control Design"
|
936
|
+
],
|
469
937
|
"description": "Verify that the application enforces access control rules at a trusted service layer and doesn't rely on controls which an untrusted user could manipulate such as client-side JavaScript."
|
470
938
|
},
|
471
939
|
{
|
472
940
|
"id": "OWASP-ASVS-V4.1.2",
|
941
|
+
"scope": [
|
942
|
+
"Access Control",
|
943
|
+
"General Access Control Design"
|
944
|
+
],
|
473
945
|
"description": "Verify that specific controls exist to prevent end users from making changes to access control policy information, such as user roles, permissions, and feature access levels, unless they are explicitly authorized to do so."
|
474
946
|
},
|
475
947
|
{
|
476
948
|
"id": "OWASP-ASVS-V4.1.3",
|
949
|
+
"scope": [
|
950
|
+
"Access Control",
|
951
|
+
"General Access Control Design"
|
952
|
+
],
|
477
953
|
"description": "Verify that the principle of least privilege exists - users should only be able to access functions, data files, URLs, controllers, services, and other resources, for which they possess specific authorization. This implies protection against spoofing and elevation of privilege."
|
478
954
|
},
|
479
955
|
{
|
480
956
|
"id": "OWASP-ASVS-V4.1.5",
|
957
|
+
"scope": [
|
958
|
+
"Access Control",
|
959
|
+
"General Access Control Design"
|
960
|
+
],
|
481
961
|
"description": "Verify that access controls fail securely by denying access, including when an exception occurs."
|
482
962
|
},
|
483
963
|
{
|
484
964
|
"id": "OWASP-ASVS-V4.2.1",
|
965
|
+
"scope": [
|
966
|
+
"Access Control",
|
967
|
+
"Operation Level Access Control"
|
968
|
+
],
|
485
969
|
"description": "Verify that sensitive data and APIs are protected against Insecure Direct Object Reference (IDOR) attacks targeting creation, reading, updating and deletion of records, such as creating or updating someone else's record, viewing everyone's records, or deleting all records."
|
486
970
|
},
|
487
971
|
{
|
488
972
|
"id": "OWASP-ASVS-V4.3.1",
|
973
|
+
"scope": [
|
974
|
+
"Access Control",
|
975
|
+
"Other Access Control Considerations"
|
976
|
+
],
|
489
977
|
"description": "Verify administrative interfaces can only be logically accessed from trusted endpoints or locations. For example, restricting access to bastion or jump hosts, trusted admin workstations or endpoints (e.g., device authentication), administrative LANs, etc."
|
490
978
|
},
|
491
979
|
{
|
492
980
|
"id": "OWASP-ASVS-V4.3.3",
|
981
|
+
"scope": [
|
982
|
+
"Access Control",
|
983
|
+
"Other Access Control Considerations"
|
984
|
+
],
|
493
985
|
"description": "Verify that, if the application allows changing highly sensitive configurations around passwords or connection parameters for integrations with databases and third-party systems, they are protected by extra controls such as re-authentication or multi-user approval."
|
494
986
|
},
|
495
987
|
{
|
496
988
|
"id": "OWASP-ASVS-V5.1.1",
|
989
|
+
"scope": [
|
990
|
+
"Validation, Sanitization and Encoding",
|
991
|
+
"Input Validation"
|
992
|
+
],
|
497
993
|
"description": "Verify that the application has defenses against HTTP parameter pollution attacks, particularly if the application framework makes no distinction about the source of request parameters (query string, body parameters, cookies, or headers)."
|
498
994
|
},
|
499
995
|
{
|
500
996
|
"id": "OWASP-ASVS-V5.1.2",
|
997
|
+
"scope": [
|
998
|
+
"Validation, Sanitization and Encoding",
|
999
|
+
"Input Validation"
|
1000
|
+
],
|
501
1001
|
"description": "Verify that frameworks protect against mass parameter assignment attacks, or that the application has countermeasures to protect against unsafe parameter assignment, such as marking fields private or similar."
|
502
1002
|
},
|
503
1003
|
{
|
504
1004
|
"id": "OWASP-ASVS-V5.1.3",
|
1005
|
+
"scope": [
|
1006
|
+
"Validation, Sanitization and Encoding",
|
1007
|
+
"Input Validation"
|
1008
|
+
],
|
505
1009
|
"description": "Verify that all input is validated using positive validation, using an allowed list of values or patterns."
|
506
1010
|
},
|
507
1011
|
{
|
508
1012
|
"id": "OWASP-ASVS-V5.1.4",
|
1013
|
+
"scope": [
|
1014
|
+
"Validation, Sanitization and Encoding",
|
1015
|
+
"Input Validation"
|
1016
|
+
],
|
509
1017
|
"description": "Verify that structured data is strongly typed and validated against a defined schema including allowed characters, length and pattern (e.g. credit card numbers, e-mail addresses, telephone numbers, or validating that two related fields are reasonable, such as checking that suburb and zipcode match)."
|
510
1018
|
},
|
511
1019
|
{
|
512
1020
|
"id": "OWASP-ASVS-V5.1.5",
|
1021
|
+
"scope": [
|
1022
|
+
"Validation, Sanitization and Encoding",
|
1023
|
+
"Input Validation"
|
1024
|
+
],
|
513
1025
|
"description": "Verify that the application will only automatically redirect the user to a different URL directly from an application URL where the destination appears on an allow list."
|
514
1026
|
},
|
515
1027
|
{
|
516
1028
|
"id": "OWASP-ASVS-V5.1.6",
|
1029
|
+
"scope": [
|
1030
|
+
"Validation, Sanitization and Encoding",
|
1031
|
+
"Input Validation"
|
1032
|
+
],
|
517
1033
|
"description": "Verify that untrusted input is validated for length before being included in a cookie (including as part of a JWT) and that the cookie name and value length combined are not over 4096 bytes."
|
518
1034
|
},
|
519
1035
|
{
|
520
1036
|
"id": "OWASP-ASVS-V5.2.1",
|
1037
|
+
"scope": [
|
1038
|
+
"Validation, Sanitization and Encoding",
|
1039
|
+
"Sanitization and Sandboxing"
|
1040
|
+
],
|
521
1041
|
"description": "Verify that all untrusted HTML input from WYSIWYG editors or similar is properly sanitized using a well-known and secure HTML sanitization library or framework feature."
|
522
1042
|
},
|
523
1043
|
{
|
524
1044
|
"id": "OWASP-ASVS-V5.2.2",
|
1045
|
+
"scope": [
|
1046
|
+
"Validation, Sanitization and Encoding",
|
1047
|
+
"Sanitization and Sandboxing"
|
1048
|
+
],
|
525
1049
|
"description": "Verify that unstructured data is sanitized to enforce safety measures such as allowed characters and length."
|
526
1050
|
},
|
527
1051
|
{
|
528
1052
|
"id": "OWASP-ASVS-V5.2.3",
|
1053
|
+
"scope": [
|
1054
|
+
"Validation, Sanitization and Encoding",
|
1055
|
+
"Sanitization and Sandboxing"
|
1056
|
+
],
|
529
1057
|
"description": "Verify that the application sanitizes user input before passing to mail systems to protect against SMTP or IMAP injection."
|
530
1058
|
},
|
531
1059
|
{
|
532
1060
|
"id": "OWASP-ASVS-V5.2.4",
|
1061
|
+
"scope": [
|
1062
|
+
"Validation, Sanitization and Encoding",
|
1063
|
+
"Sanitization and Sandboxing"
|
1064
|
+
],
|
533
1065
|
"description": "Verify that the application avoids the use of eval() or other dynamic code execution features. Where there is no alternative, any user input being included must be sanitized or sandboxed before being executed."
|
534
1066
|
},
|
535
1067
|
{
|
536
1068
|
"id": "OWASP-ASVS-V5.2.5",
|
1069
|
+
"scope": [
|
1070
|
+
"Validation, Sanitization and Encoding",
|
1071
|
+
"Sanitization and Sandboxing"
|
1072
|
+
],
|
537
1073
|
"description": "Verify that the application protects against template injection attacks by not allowing templates to be built based on untrusted input. Where there is no alternative, any untrusted input being included dynamically during template creation must be sanitized or strictly validated."
|
538
1074
|
},
|
539
1075
|
{
|
540
1076
|
"id": "OWASP-ASVS-V5.2.6",
|
1077
|
+
"scope": [
|
1078
|
+
"Validation, Sanitization and Encoding",
|
1079
|
+
"Sanitization and Sandboxing"
|
1080
|
+
],
|
541
1081
|
"description": "Verify that the application protects against SSRF attacks, by validating or sanitizing untrusted data or HTTP file metadata, such as filenames and URL input fields, and uses allow lists of protocols, domains, paths and ports."
|
542
1082
|
},
|
543
1083
|
{
|
544
1084
|
"id": "OWASP-ASVS-V5.2.7",
|
1085
|
+
"scope": [
|
1086
|
+
"Validation, Sanitization and Encoding",
|
1087
|
+
"Sanitization and Sandboxing"
|
1088
|
+
],
|
545
1089
|
"description": "Verify that the application sanitizes, disables, or sandboxes user-supplied Scalable Vector Graphics (SVG) scriptable content, especially as they relate to XSS resulting from inline scripts, and foreignObject."
|
546
1090
|
},
|
547
1091
|
{
|
548
1092
|
"id": "OWASP-ASVS-V5.2.8",
|
1093
|
+
"scope": [
|
1094
|
+
"Validation, Sanitization and Encoding",
|
1095
|
+
"Sanitization and Sandboxing"
|
1096
|
+
],
|
549
1097
|
"description": "Verify that the application sanitizes, disables, or sandboxes user-supplied scriptable or expression template language content, such as Markdown, CSS or XSL stylesheets, BBCode, or similar."
|
550
1098
|
},
|
551
1099
|
{
|
552
1100
|
"id": "OWASP-ASVS-V5.2.9",
|
1101
|
+
"scope": [
|
1102
|
+
"Validation, Sanitization and Encoding",
|
1103
|
+
"Sanitization and Sandboxing"
|
1104
|
+
],
|
553
1105
|
"description": "Verify that the application uses slashes to correctly escape special characters being used in regular expressions to ensure they are not misinterpreted as control characters."
|
554
1106
|
},
|
555
1107
|
{
|
556
1108
|
"id": "OWASP-ASVS-V5.2.10",
|
1109
|
+
"scope": [
|
1110
|
+
"Validation, Sanitization and Encoding",
|
1111
|
+
"Sanitization and Sandboxing"
|
1112
|
+
],
|
557
1113
|
"description": "Verify that regular expressions are free from elements causing exponential backtracking, and ensure untrusted input is sanitized to mitigate ReDoS or Runaway Regex attacks."
|
558
1114
|
},
|
559
1115
|
{
|
560
1116
|
"id": "OWASP-ASVS-V5.2.11",
|
1117
|
+
"scope": [
|
1118
|
+
"Validation, Sanitization and Encoding",
|
1119
|
+
"Sanitization and Sandboxing"
|
1120
|
+
],
|
561
1121
|
"description": "Verify that the application appropriately sanitizes untrusted input before use in Java Naming and Directory Interface (JNDI) queries and that JNDI is configured as securely as possible to prevent JNDI injection attacks."
|
562
1122
|
},
|
563
1123
|
{
|
564
1124
|
"id": "OWASP-ASVS-V5.2.12",
|
1125
|
+
"scope": [
|
1126
|
+
"Validation, Sanitization and Encoding",
|
1127
|
+
"Sanitization and Sandboxing"
|
1128
|
+
],
|
565
1129
|
"description": "Verify that the application sanitizes content before it is sent to memcache to prevent injection attacks."
|
566
1130
|
},
|
567
1131
|
{
|
568
1132
|
"id": "OWASP-ASVS-V5.3.1",
|
1133
|
+
"scope": [
|
1134
|
+
"Validation, Sanitization and Encoding",
|
1135
|
+
"Output Encoding and Injection Prevention"
|
1136
|
+
],
|
569
1137
|
"description": "Verify that output encoding is relevant for the interpreter and context required. For example, use encoders specifically for HTML values, HTML attributes, JavaScript, CSS, URL parameters, HTTP headers, SMTP, and others as the context requires, especially from untrusted inputs (e.g. names with Unicode or apostrophes, such as ねこ or O'Hara)."
|
570
1138
|
},
|
571
1139
|
{
|
572
1140
|
"id": "OWASP-ASVS-V5.3.3",
|
1141
|
+
"scope": [
|
1142
|
+
"Validation, Sanitization and Encoding",
|
1143
|
+
"Output Encoding and Injection Prevention"
|
1144
|
+
],
|
573
1145
|
"description": "Verify that context-aware, preferably automated - or at worst, manual - output escaping protects against reflected, stored, and DOM based XSS."
|
574
1146
|
},
|
575
1147
|
{
|
576
1148
|
"id": "OWASP-ASVS-V5.3.4",
|
1149
|
+
"scope": [
|
1150
|
+
"Validation, Sanitization and Encoding",
|
1151
|
+
"Output Encoding and Injection Prevention"
|
1152
|
+
],
|
577
1153
|
"description": "Verify that data selection or database queries (e.g. SQL, HQL, NoSQL, Cypher) use parameterized queries, ORMs, entity frameworks, or are otherwise protected from database injection attacks."
|
578
1154
|
},
|
579
1155
|
{
|
580
1156
|
"id": "OWASP-ASVS-V5.3.6",
|
1157
|
+
"scope": [
|
1158
|
+
"Validation, Sanitization and Encoding",
|
1159
|
+
"Output Encoding and Injection Prevention"
|
1160
|
+
],
|
581
1161
|
"description": "Verify that the application protects against JSON injection attacks."
|
582
1162
|
},
|
583
1163
|
{
|
584
1164
|
"id": "OWASP-ASVS-V5.3.7",
|
1165
|
+
"scope": [
|
1166
|
+
"Validation, Sanitization and Encoding",
|
1167
|
+
"Output Encoding and Injection Prevention"
|
1168
|
+
],
|
585
1169
|
"description": "Verify that the application protects against LDAP injection vulnerabilities, or that specific security controls to prevent LDAP injection have been implemented."
|
586
1170
|
},
|
587
1171
|
{
|
588
1172
|
"id": "OWASP-ASVS-V5.3.8",
|
1173
|
+
"scope": [
|
1174
|
+
"Validation, Sanitization and Encoding",
|
1175
|
+
"Output Encoding and Injection Prevention"
|
1176
|
+
],
|
589
1177
|
"description": "Verify that the application protects against OS command injection and that operating system calls use parameterized OS queries or use contextual command line output encoding."
|
590
1178
|
},
|
591
1179
|
{
|
592
1180
|
"id": "OWASP-ASVS-V5.3.10",
|
1181
|
+
"scope": [
|
1182
|
+
"Validation, Sanitization and Encoding",
|
1183
|
+
"Output Encoding and Injection Prevention"
|
1184
|
+
],
|
593
1185
|
"description": "Verify that the application protects against XPath injection or XML injection attacks."
|
594
1186
|
},
|
595
1187
|
{
|
596
1188
|
"id": "OWASP-ASVS-V5.3.11",
|
1189
|
+
"scope": [
|
1190
|
+
"Validation, Sanitization and Encoding",
|
1191
|
+
"Output Encoding and Injection Prevention"
|
1192
|
+
],
|
597
1193
|
"description": "Verify that the application is protected against CSV and Formula Injection. The application should follow the escaping rules defined in RFC4180 2.6 and 2.7 when exporting CSV files. The application should escape special characters including '=', '+', '-', '@' '\\t' (tab) and '\\00' (null character) using a single quote, if they are the first character in a field, when exporting CSV files and other spreadsheet formats such as xls, xlsx, odf."
|
598
1194
|
},
|
599
1195
|
{
|
600
1196
|
"id": "OWASP-ASVS-V5.3.12",
|
1197
|
+
"scope": [
|
1198
|
+
"Validation, Sanitization and Encoding",
|
1199
|
+
"Output Encoding and Injection Prevention"
|
1200
|
+
],
|
601
1201
|
"description": "Verify that LaTeX processors are configured securely (such as not using the \"--shell-escape\" flag) and command allow-listing is used to prevent LaTeX injection attacks."
|
602
1202
|
},
|
603
1203
|
{
|
604
1204
|
"id": "OWASP-ASVS-V5.4.1",
|
1205
|
+
"scope": [
|
1206
|
+
"Validation, Sanitization and Encoding",
|
1207
|
+
"Memory, String, and Unmanaged Code"
|
1208
|
+
],
|
605
1209
|
"description": "Verify that the application uses memory-safe string, safer memory copy and pointer arithmetic to detect or prevent stack, buffer, or heap overflows."
|
606
1210
|
},
|
607
1211
|
{
|
608
1212
|
"id": "OWASP-ASVS-V5.4.2",
|
1213
|
+
"scope": [
|
1214
|
+
"Validation, Sanitization and Encoding",
|
1215
|
+
"Memory, String, and Unmanaged Code"
|
1216
|
+
],
|
609
1217
|
"description": "Verify that format strings do not take potentially hostile input, and are constant."
|
610
1218
|
},
|
611
1219
|
{
|
612
1220
|
"id": "OWASP-ASVS-V5.4.3",
|
1221
|
+
"scope": [
|
1222
|
+
"Validation, Sanitization and Encoding",
|
1223
|
+
"Memory, String, and Unmanaged Code"
|
1224
|
+
],
|
613
1225
|
"description": "Verify that sign, range, and input validation techniques are used to prevent integer overflows."
|
614
1226
|
},
|
615
1227
|
{
|
616
1228
|
"id": "OWASP-ASVS-V5.5.2",
|
1229
|
+
"scope": [
|
1230
|
+
"Validation, Sanitization and Encoding",
|
1231
|
+
"Deserialization Prevention"
|
1232
|
+
],
|
617
1233
|
"description": "Verify that the application correctly restricts XML parsers to only use the most restrictive configuration possible and to ensure that unsafe features such as resolving external entities are disabled to prevent XML eXternal Entity (XXE) attacks."
|
618
1234
|
},
|
619
1235
|
{
|
620
1236
|
"id": "OWASP-ASVS-V5.5.3",
|
1237
|
+
"scope": [
|
1238
|
+
"Validation, Sanitization and Encoding",
|
1239
|
+
"Deserialization Prevention"
|
1240
|
+
],
|
621
1241
|
"description": "Verify that deserialization is not used when communicating with untrusted clients. If this is not possible, ensure that deserialization is performed safely, for example, by only allowing a allow-list of object types or not allowing the client to define the object type to deserialize to, in order to prevent deserialization attacks."
|
622
1242
|
},
|
623
1243
|
{
|
624
1244
|
"id": "OWASP-ASVS-V5.5.4",
|
1245
|
+
"scope": [
|
1246
|
+
"Validation, Sanitization and Encoding",
|
1247
|
+
"Deserialization Prevention"
|
1248
|
+
],
|
625
1249
|
"description": "Verify that when parsing JSON in browsers or JavaScript-based backends, JSON.parse is used to parse the JSON document. Do not use eval() to parse JSON."
|
626
1250
|
},
|
627
1251
|
{
|
628
1252
|
"id": "OWASP-ASVS-V5.5.5",
|
1253
|
+
"scope": [
|
1254
|
+
"Validation, Sanitization and Encoding",
|
1255
|
+
"Deserialization Prevention"
|
1256
|
+
],
|
629
1257
|
"description": "Verify that different parsers used in the application for the same data type (e.g. JSON parsers, XML parsers, URL parsers), perform parsing in a consistent way and use the same character encoding mechanism to avoid issues such as JSON Interoperability vulnerabilities or different URI or file parsing behavior being exploited in Remote File Inclusion (RFI) or Server-side Request Forgery (SSRF) attacks."
|
630
1258
|
},
|
631
1259
|
{
|
632
1260
|
"id": "OWASP-ASVS-V5.6.1",
|
1261
|
+
"scope": [
|
1262
|
+
"Validation, Sanitization and Encoding",
|
1263
|
+
"Validation and Sanitization Architecture"
|
1264
|
+
],
|
633
1265
|
"description": "Verify that input is decoded or unescaped into a canonical form only once and that this is done before processing the input further, for example it is not performed after input validation or sanitization."
|
634
1266
|
},
|
635
1267
|
{
|
636
1268
|
"id": "OWASP-ASVS-V5.6.2",
|
1269
|
+
"scope": [
|
1270
|
+
"Validation, Sanitization and Encoding",
|
1271
|
+
"Validation and Sanitization Architecture"
|
1272
|
+
],
|
637
1273
|
"description": "Verify that the application is designed to enforce input validation at a trusted service layer. While client-side validation improves usability, security must not rely on it."
|
638
1274
|
},
|
639
1275
|
{
|
640
1276
|
"id": "OWASP-ASVS-V5.6.3",
|
1277
|
+
"scope": [
|
1278
|
+
"Validation, Sanitization and Encoding",
|
1279
|
+
"Validation and Sanitization Architecture"
|
1280
|
+
],
|
641
1281
|
"description": "Verify that the application performs output encoding and escaping either as a final step before being used by the interpreter for which it is intended or by the interpreter itself."
|
642
1282
|
},
|
643
1283
|
{
|
644
1284
|
"id": "OWASP-ASVS-V6.1.1",
|
1285
|
+
"scope": [
|
1286
|
+
"Stored Cryptography",
|
1287
|
+
"Data Classification"
|
1288
|
+
],
|
645
1289
|
"description": "Verify that regulated private data is stored encrypted while at rest, such as Personally Identifiable Information (PII), sensitive personal information, or data assessed likely to be subject to EU's GDPR."
|
646
1290
|
},
|
647
1291
|
{
|
648
1292
|
"id": "OWASP-ASVS-V6.1.2",
|
1293
|
+
"scope": [
|
1294
|
+
"Stored Cryptography",
|
1295
|
+
"Data Classification"
|
1296
|
+
],
|
649
1297
|
"description": "Verify that regulated health data is stored encrypted while at rest, such as medical records, medical device details, or de-anonymized research records."
|
650
1298
|
},
|
651
1299
|
{
|
652
1300
|
"id": "OWASP-ASVS-V6.1.3",
|
1301
|
+
"scope": [
|
1302
|
+
"Stored Cryptography",
|
1303
|
+
"Data Classification"
|
1304
|
+
],
|
653
1305
|
"description": "Verify that regulated financial data is stored encrypted while at rest, such as financial accounts, defaults or credit history, tax records, pay history, beneficiaries, or de-anonymized market or research records."
|
654
1306
|
},
|
655
1307
|
{
|
656
1308
|
"id": "OWASP-ASVS-V6.2.1",
|
1309
|
+
"scope": [
|
1310
|
+
"Stored Cryptography",
|
1311
|
+
"Algorithms"
|
1312
|
+
],
|
657
1313
|
"description": "Verify that all cryptographic modules fail securely, and errors are handled in a way that does not enable Padding Oracle attacks."
|
658
1314
|
},
|
659
1315
|
{
|
660
1316
|
"id": "OWASP-ASVS-V6.2.2",
|
1317
|
+
"scope": [
|
1318
|
+
"Stored Cryptography",
|
1319
|
+
"Algorithms"
|
1320
|
+
],
|
661
1321
|
"description": "Verify that industry proven or government approved cryptographic algorithms, modes, and libraries are used, instead of custom coded cryptography."
|
662
1322
|
},
|
663
1323
|
{
|
664
1324
|
"id": "OWASP-ASVS-V6.2.4",
|
1325
|
+
"scope": [
|
1326
|
+
"Stored Cryptography",
|
1327
|
+
"Algorithms"
|
1328
|
+
],
|
665
1329
|
"description": "Verify that random number, encryption or hashing algorithms, key lengths, rounds, ciphers or modes, can be reconfigured, upgraded, or swapped at any time, to protect against cryptographic breaks."
|
666
1330
|
},
|
667
1331
|
{
|
668
1332
|
"id": "OWASP-ASVS-V6.2.5",
|
1333
|
+
"scope": [
|
1334
|
+
"Stored Cryptography",
|
1335
|
+
"Algorithms"
|
1336
|
+
],
|
669
1337
|
"description": "Verify that known insecure block modes (i.e. ECB, etc.), padding modes (i.e. PKCS#1 v1.5, etc.), ciphers with small block sizes (i.e. Triple-DES, Blowfish, etc.), and weak hashing algorithms (i.e. MD5, SHA1, etc.) are not used."
|
670
1338
|
},
|
671
1339
|
{
|
672
1340
|
"id": "OWASP-ASVS-V6.2.6",
|
1341
|
+
"scope": [
|
1342
|
+
"Stored Cryptography",
|
1343
|
+
"Algorithms"
|
1344
|
+
],
|
673
1345
|
"description": "Verify that nonces, initialization vectors, and other single-use numbers are not used for more than one encryption key/data-element pair. The method of generation must be appropriate for the algorithm being used."
|
674
1346
|
},
|
675
1347
|
{
|
676
1348
|
"id": "OWASP-ASVS-V6.2.7",
|
1349
|
+
"scope": [
|
1350
|
+
"Stored Cryptography",
|
1351
|
+
"Algorithms"
|
1352
|
+
],
|
677
1353
|
"description": "Verify that encrypted data is authenticated via signatures, authenticated cipher modes, or HMAC to ensure that ciphertext is not altered by an unauthorized party."
|
678
1354
|
},
|
679
1355
|
{
|
680
1356
|
"id": "OWASP-ASVS-V6.2.8",
|
1357
|
+
"scope": [
|
1358
|
+
"Stored Cryptography",
|
1359
|
+
"Algorithms"
|
1360
|
+
],
|
681
1361
|
"description": "Verify that all cryptographic operations are constant-time, with no 'short-circuit' operations in comparisons, calculations, or returns, to avoid leaking information."
|
682
1362
|
},
|
683
1363
|
{
|
684
1364
|
"id": "OWASP-ASVS-V6.3.1",
|
1365
|
+
"scope": [
|
1366
|
+
"Stored Cryptography",
|
1367
|
+
"Random Values"
|
1368
|
+
],
|
685
1369
|
"description": "Verify that all random numbers, random file names, and random strings are generated using a cryptographically-secure pseudo-random number generator (CSPRNG) when these random values are intended to be not guessable by an attacker."
|
686
1370
|
},
|
687
1371
|
{
|
688
1372
|
"id": "OWASP-ASVS-V6.3.2",
|
1373
|
+
"scope": [
|
1374
|
+
"Stored Cryptography",
|
1375
|
+
"Random Values"
|
1376
|
+
],
|
689
1377
|
"description": "Verify that GUIDs are created with an implementation of the GUID v4 algorithm which utilizes a cryptographically-secure pseudo-random number generator (CSPRNG). GUIDs created using other algorithm versions or using insufficiently secure pseudo-random number generators may be predictable."
|
690
1378
|
},
|
691
1379
|
{
|
692
1380
|
"id": "OWASP-ASVS-V6.3.3",
|
1381
|
+
"scope": [
|
1382
|
+
"Stored Cryptography",
|
1383
|
+
"Random Values"
|
1384
|
+
],
|
693
1385
|
"description": "Verify that random numbers are created with proper entropy even when the application is under heavy load, or that the application degrades gracefully in such circumstances."
|
694
1386
|
},
|
695
1387
|
{
|
696
1388
|
"id": "OWASP-ASVS-V6.4.1",
|
1389
|
+
"scope": [
|
1390
|
+
"Stored Cryptography",
|
1391
|
+
"Secret Management"
|
1392
|
+
],
|
697
1393
|
"description": "Verify that a secrets management solution such as a key vault is used to securely create, store, control access to and destroy back-end secrets such as service account or 3rd party application credentials."
|
698
1394
|
},
|
699
1395
|
{
|
700
1396
|
"id": "OWASP-ASVS-V6.4.2",
|
1397
|
+
"scope": [
|
1398
|
+
"Stored Cryptography",
|
1399
|
+
"Secret Management"
|
1400
|
+
],
|
701
1401
|
"description": "Verify that key material is not exposed to the application (neither the front-end nor the back-end) but instead uses an isolated security module like a vault for cryptographic operations."
|
702
1402
|
},
|
703
1403
|
{
|
704
1404
|
"id": "OWASP-ASVS-V7.1.1",
|
1405
|
+
"scope": [
|
1406
|
+
"Error Handling and Logging",
|
1407
|
+
"General Logging"
|
1408
|
+
],
|
705
1409
|
"description": "Verify that the application does not log credentials or payment details. Session tokens should only be stored in logs in an irreversible, hashed form."
|
706
1410
|
},
|
707
1411
|
{
|
708
1412
|
"id": "OWASP-ASVS-V7.1.2",
|
1413
|
+
"scope": [
|
1414
|
+
"Error Handling and Logging",
|
1415
|
+
"General Logging"
|
1416
|
+
],
|
709
1417
|
"description": "Verify that the application does not log other sensitive data as defined under local privacy laws or relevant security policy."
|
710
1418
|
},
|
711
1419
|
{
|
712
1420
|
"id": "OWASP-ASVS-V7.1.4",
|
1421
|
+
"scope": [
|
1422
|
+
"Error Handling and Logging",
|
1423
|
+
"General Logging"
|
1424
|
+
],
|
713
1425
|
"description": "Verify that each log entry includes necessary metadata that would allow for a detailed investigation of the timeline when an event happens."
|
714
1426
|
},
|
715
1427
|
{
|
716
1428
|
"id": "OWASP-ASVS-V7.1.5",
|
1429
|
+
"scope": [
|
1430
|
+
"Error Handling and Logging",
|
1431
|
+
"General Logging"
|
1432
|
+
],
|
717
1433
|
"description": "Verify that time sources are synchronized to the correct time and time zone. Strongly consider logging only in UTC if systems are global to assist with post-incident forensic analysis."
|
718
1434
|
},
|
719
1435
|
{
|
720
1436
|
"id": "OWASP-ASVS-V7.1.6",
|
1437
|
+
"scope": [
|
1438
|
+
"Error Handling and Logging",
|
1439
|
+
"General Logging"
|
1440
|
+
],
|
721
1441
|
"description": "Verify that the application only stores or broadcasts logs to the files and services that are documented in the log inventory."
|
722
1442
|
},
|
723
1443
|
{
|
724
1444
|
"id": "OWASP-ASVS-V7.1.7",
|
1445
|
+
"scope": [
|
1446
|
+
"Error Handling and Logging",
|
1447
|
+
"General Logging"
|
1448
|
+
],
|
725
1449
|
"description": "Verify that logs are readable and correlatable for the used log reader, preferably by using a common logging format."
|
726
1450
|
},
|
727
1451
|
{
|
728
1452
|
"id": "OWASP-ASVS-V7.2.1",
|
1453
|
+
"scope": [
|
1454
|
+
"Error Handling and Logging",
|
1455
|
+
"Security Events"
|
1456
|
+
],
|
729
1457
|
"description": "Verify that all authentication decisions are logged."
|
730
1458
|
},
|
731
1459
|
{
|
732
1460
|
"id": "OWASP-ASVS-V7.2.2",
|
1461
|
+
"scope": [
|
1462
|
+
"Error Handling and Logging",
|
1463
|
+
"Security Events"
|
1464
|
+
],
|
733
1465
|
"description": "Verify that all access control decisions can be logged and all failed decisions are logged."
|
734
1466
|
},
|
735
1467
|
{
|
736
1468
|
"id": "OWASP-ASVS-V7.2.3",
|
1469
|
+
"scope": [
|
1470
|
+
"Error Handling and Logging",
|
1471
|
+
"Security Events"
|
1472
|
+
],
|
737
1473
|
"description": "Verify that the application logs security relevant events including deserialization failures, input validation failures and incorrect HTTP requests (including requests with an unexpected HTTP verb)."
|
738
1474
|
},
|
739
1475
|
{
|
740
1476
|
"id": "OWASP-ASVS-V7.2.4",
|
1477
|
+
"scope": [
|
1478
|
+
"Error Handling and Logging",
|
1479
|
+
"Security Events"
|
1480
|
+
],
|
741
1481
|
"description": "Verify that backend TLS connection failures are logged."
|
742
1482
|
},
|
743
1483
|
{
|
744
1484
|
"id": "OWASP-ASVS-V7.3.1",
|
1485
|
+
"scope": [
|
1486
|
+
"Error Handling and Logging",
|
1487
|
+
"Log Protection"
|
1488
|
+
],
|
745
1489
|
"description": "Verify that all logging components appropriately encode data to prevent log injection."
|
746
1490
|
},
|
747
1491
|
{
|
748
1492
|
"id": "OWASP-ASVS-V7.3.3",
|
1493
|
+
"scope": [
|
1494
|
+
"Error Handling and Logging",
|
1495
|
+
"Log Protection"
|
1496
|
+
],
|
749
1497
|
"description": "Verify that logs are protected from unauthorized access and cannot be modified."
|
750
1498
|
},
|
751
1499
|
{
|
752
1500
|
"id": "OWASP-ASVS-V7.3.5",
|
1501
|
+
"scope": [
|
1502
|
+
"Error Handling and Logging",
|
1503
|
+
"Log Protection"
|
1504
|
+
],
|
753
1505
|
"description": "Verify that logs are securely transmitted to a preferably remote system for analysis, detection, alerting, and escalation."
|
754
1506
|
},
|
755
1507
|
{
|
756
1508
|
"id": "OWASP-ASVS-V7.4.1",
|
1509
|
+
"scope": [
|
1510
|
+
"Error Handling and Logging",
|
1511
|
+
"Error Handling"
|
1512
|
+
],
|
757
1513
|
"description": "Verify that a generic message is shown when an unexpected or security sensitive error occurs, potentially with a unique ID which support personnel can use to investigate."
|
758
1514
|
},
|
759
1515
|
{
|
760
1516
|
"id": "OWASP-ASVS-V7.4.2",
|
1517
|
+
"scope": [
|
1518
|
+
"Error Handling and Logging",
|
1519
|
+
"Error Handling"
|
1520
|
+
],
|
761
1521
|
"description": "Verify that a consistent and standardized exception handling mechanism (or a functional equivalent) is used across the codebase."
|
762
1522
|
},
|
763
1523
|
{
|
764
1524
|
"id": "OWASP-ASVS-V7.4.3",
|
1525
|
+
"scope": [
|
1526
|
+
"Error Handling and Logging",
|
1527
|
+
"Error Handling"
|
1528
|
+
],
|
765
1529
|
"description": "Verify that a \"last resort\" error handler is defined which will catch all unhandled exceptions."
|
766
1530
|
},
|
767
1531
|
{
|
768
1532
|
"id": "OWASP-ASVS-V7.4.4",
|
1533
|
+
"scope": [
|
1534
|
+
"Error Handling and Logging",
|
1535
|
+
"Error Handling"
|
1536
|
+
],
|
769
1537
|
"description": "Verify that the application is designed in a way that a failure to access external resources does not result in the entire application failing, for example using the circuit breaker pattern."
|
770
1538
|
},
|
771
1539
|
{
|
772
1540
|
"id": "OWASP-ASVS-V8.1.1",
|
1541
|
+
"scope": [
|
1542
|
+
"Data Protection",
|
1543
|
+
"General Data Protection"
|
1544
|
+
],
|
773
1545
|
"description": "Verify that the application prevents sensitive data from being cached in server components such as load balancers and application caches or ensures that the data is securely purged after use."
|
774
1546
|
},
|
775
1547
|
{
|
776
1548
|
"id": "OWASP-ASVS-V8.1.4",
|
1549
|
+
"scope": [
|
1550
|
+
"Data Protection",
|
1551
|
+
"General Data Protection"
|
1552
|
+
],
|
777
1553
|
"description": "Verify the application can detect and alert on abnormal numbers of requests, such as by IP, user, total per hour or day, or whatever makes sense for the application."
|
778
1554
|
},
|
779
1555
|
{
|
780
1556
|
"id": "OWASP-ASVS-V8.1.7",
|
1557
|
+
"scope": [
|
1558
|
+
"Data Protection",
|
1559
|
+
"General Data Protection"
|
1560
|
+
],
|
781
1561
|
"description": "Verify that caching mechanisms are configured to only cache responses which have the correct content type and do not contain sensitive, dynamic content. The web server should return a 404 or 302 response when an non-existent file is accessed rather than returning a different, valid file. This should prevent Web Cache Deception attacks."
|
782
1562
|
},
|
783
1563
|
{
|
784
1564
|
"id": "OWASP-ASVS-V8.1.8",
|
1565
|
+
"scope": [
|
1566
|
+
"Data Protection",
|
1567
|
+
"General Data Protection"
|
1568
|
+
],
|
785
1569
|
"description": "Verify that defined sensitive data is not sent to untrusted parties (e.g. user trackers) to prevent unwanted collection of data outside of the application's control."
|
786
1570
|
},
|
787
1571
|
{
|
788
1572
|
"id": "OWASP-ASVS-V8.2.1",
|
1573
|
+
"scope": [
|
1574
|
+
"Data Protection",
|
1575
|
+
"Client-side Data Protection"
|
1576
|
+
],
|
789
1577
|
"description": "Verify that the application sets sufficient anti-caching headers (i.e. Cache-Control: no-store) so that sensitive data is not cached in browsers."
|
790
1578
|
},
|
791
1579
|
{
|
792
1580
|
"id": "OWASP-ASVS-V8.2.2",
|
1581
|
+
"scope": [
|
1582
|
+
"Data Protection",
|
1583
|
+
"Client-side Data Protection"
|
1584
|
+
],
|
793
1585
|
"description": "Verify that data stored in browser storage (such as localStorage, sessionStorage, IndexedDB, or cookies) does not contain sensitive data, with the exception of session tokens which should be stored in either cookies or sessionStorage."
|
794
1586
|
},
|
795
1587
|
{
|
796
1588
|
"id": "OWASP-ASVS-V8.2.3",
|
1589
|
+
"scope": [
|
1590
|
+
"Data Protection",
|
1591
|
+
"Client-side Data Protection"
|
1592
|
+
],
|
797
1593
|
"description": "Verify that authenticated data is cleared from client storage, such as the browser DOM, after the client or session is terminated. The \"Clear-Site-Data header\" may be able to help with this but the client-side should also be able to clear up if the server connection is lost."
|
798
1594
|
},
|
799
1595
|
{
|
800
1596
|
"id": "OWASP-ASVS-V8.3.1",
|
1597
|
+
"scope": [
|
1598
|
+
"Data Protection",
|
1599
|
+
"Sensitive Private Data"
|
1600
|
+
],
|
801
1601
|
"description": "Verify that sensitive data is only sent to the server in the HTTP message body or headers and that the URL and query string do not contain sensitive information, such as an API key or session token."
|
802
1602
|
},
|
803
1603
|
{
|
804
1604
|
"id": "OWASP-ASVS-V8.3.2",
|
1605
|
+
"scope": [
|
1606
|
+
"Data Protection",
|
1607
|
+
"Sensitive Private Data"
|
1608
|
+
],
|
805
1609
|
"description": "Verify that users have a method to remove their data on demand."
|
806
1610
|
},
|
807
1611
|
{
|
808
1612
|
"id": "OWASP-ASVS-V8.3.3",
|
1613
|
+
"scope": [
|
1614
|
+
"Data Protection",
|
1615
|
+
"Sensitive Private Data"
|
1616
|
+
],
|
809
1617
|
"description": "Verify that users are provided clear language regarding collection and use of supplied personal information and that users have provided opt-in consent for the use of that data before it is used in any way."
|
810
1618
|
},
|
811
1619
|
{
|
812
1620
|
"id": "OWASP-ASVS-V8.3.5",
|
1621
|
+
"scope": [
|
1622
|
+
"Data Protection",
|
1623
|
+
"Sensitive Private Data"
|
1624
|
+
],
|
813
1625
|
"description": "Verify accessing sensitive data is audited (without logging the sensitive data itself), if the data is collected under relevant data protection directives or where logging of access is required."
|
814
1626
|
},
|
815
1627
|
{
|
816
1628
|
"id": "OWASP-ASVS-V8.3.7",
|
1629
|
+
"scope": [
|
1630
|
+
"Data Protection",
|
1631
|
+
"Sensitive Private Data"
|
1632
|
+
],
|
817
1633
|
"description": "Verify that sensitive or private information that is required to be encrypted, is encrypted using approved algorithms that provide both confidentiality and integrity."
|
818
1634
|
},
|
819
1635
|
{
|
820
1636
|
"id": "OWASP-ASVS-V8.3.8",
|
1637
|
+
"scope": [
|
1638
|
+
"Data Protection",
|
1639
|
+
"Sensitive Private Data"
|
1640
|
+
],
|
821
1641
|
"description": "Verify that sensitive personal information is subject to data retention classification, such that old or out of date data is deleted automatically, on a schedule, or as the situation requires."
|
822
1642
|
},
|
823
1643
|
{
|
824
1644
|
"id": "OWASP-ASVS-V8.3.9",
|
1645
|
+
"scope": [
|
1646
|
+
"Data Protection",
|
1647
|
+
"Sensitive Private Data"
|
1648
|
+
],
|
825
1649
|
"description": "Verify that users have a method to export their data on demand."
|
826
1650
|
},
|
827
1651
|
{
|
828
1652
|
"id": "OWASP-ASVS-V8.3.10",
|
1653
|
+
"scope": [
|
1654
|
+
"Data Protection",
|
1655
|
+
"Sensitive Private Data"
|
1656
|
+
],
|
829
1657
|
"description": "Verify that sensitive information is removed from the metadata of user-submitted files unless storage is consented to by the user."
|
830
1658
|
},
|
831
1659
|
{
|
832
1660
|
"id": "OWASP-ASVS-V8.3.11",
|
1661
|
+
"scope": [
|
1662
|
+
"Data Protection",
|
1663
|
+
"Sensitive Private Data"
|
1664
|
+
],
|
833
1665
|
"description": "Verify that the application does not ask for unnecessary or excessive permissions to privacy related features or sensors, such as cameras, microphones, or location."
|
834
1666
|
},
|
835
1667
|
{
|
836
1668
|
"id": "OWASP-ASVS-V9.1.1",
|
1669
|
+
"scope": [
|
1670
|
+
"Communication Encryption",
|
1671
|
+
"HTTPS Communication with External Facing Services"
|
1672
|
+
],
|
837
1673
|
"description": "Verify that TLS is used for all connectivity between a client and external facing, HTTP-based services, and does not fall back to insecure or unencrypted communications."
|
838
1674
|
},
|
839
1675
|
{
|
840
1676
|
"id": "OWASP-ASVS-V9.1.4",
|
1677
|
+
"scope": [
|
1678
|
+
"Communication Encryption",
|
1679
|
+
"HTTPS Communication with External Facing Services"
|
1680
|
+
],
|
841
1681
|
"description": "Verify that external facing services use publically trusted TLS certificates."
|
842
1682
|
},
|
843
1683
|
{
|
844
1684
|
"id": "OWASP-ASVS-V9.2.2",
|
1685
|
+
"scope": [
|
1686
|
+
"Communication Encryption",
|
1687
|
+
"General Service to Service Communication Security"
|
1688
|
+
],
|
845
1689
|
"description": "Verify that an encrypted protocol such as TLS is used for all inbound and outbound connections to and from the application, including monitoring systems, management tools, remote access and SSH, middleware, databases, mainframes, partner systems, or external APIs. The server must not fall back to insecure or unencrypted protocols."
|
846
1690
|
},
|
847
1691
|
{
|
848
1692
|
"id": "OWASP-ASVS-V9.3.1",
|
1693
|
+
"scope": [
|
1694
|
+
"Communication Encryption",
|
1695
|
+
"HTTPS Communication between Internal Services"
|
1696
|
+
],
|
849
1697
|
"description": "Verify that TLS or another appropriate transport encryption mechanism used for all connectivity between internal, HTTP-based services within the application, and does not fall back to insecure or unencrypted communications."
|
850
1698
|
},
|
851
1699
|
{
|
852
1700
|
"id": "OWASP-ASVS-V9.3.2",
|
1701
|
+
"scope": [
|
1702
|
+
"Communication Encryption",
|
1703
|
+
"HTTPS Communication between Internal Services"
|
1704
|
+
],
|
853
1705
|
"description": "Verify that TLS connections between internal services use trusted certificates. Where internally generated or self-signed certificates are used, the consuming service must be configured to only trust specific internal CAs and specific self-signed certificates. All others should be rejected."
|
854
1706
|
},
|
855
1707
|
{
|
856
1708
|
"id": "OWASP-ASVS-V9.3.3",
|
1709
|
+
"scope": [
|
1710
|
+
"Communication Encryption",
|
1711
|
+
"HTTPS Communication between Internal Services"
|
1712
|
+
],
|
857
1713
|
"description": "Verify that mutual TLS (mTLS) is used by services communicating internally within a system or \"intra-service communications\" to ensure all the involved parties at each end of a network connection are who they claim to be."
|
858
1714
|
},
|
859
1715
|
{
|
860
1716
|
"id": "OWASP-ASVS-V9.4.1",
|
1717
|
+
"scope": [
|
1718
|
+
"Communication Encryption",
|
1719
|
+
"General TLS Security Guidance"
|
1720
|
+
],
|
861
1721
|
"description": "Verify that only the latest recommended cipher suites are enabled, with the strongest cipher suites set as preferred."
|
862
1722
|
},
|
863
1723
|
{
|
864
1724
|
"id": "OWASP-ASVS-V9.4.2",
|
1725
|
+
"scope": [
|
1726
|
+
"Communication Encryption",
|
1727
|
+
"General TLS Security Guidance"
|
1728
|
+
],
|
865
1729
|
"description": "Verify that only the latest recommended versions of the TLS protocol are enabled, such as TLS 1.2 and TLS 1.3. The latest version of the TLS protocol should be the preferred option."
|
866
1730
|
},
|
867
1731
|
{
|
868
1732
|
"id": "OWASP-ASVS-V9.4.3",
|
1733
|
+
"scope": [
|
1734
|
+
"Communication Encryption",
|
1735
|
+
"General TLS Security Guidance"
|
1736
|
+
],
|
869
1737
|
"description": "Verify that proper certification revocation, such as Online Certificate Status Protocol (OCSP) Stapling, is enabled and configured."
|
870
1738
|
},
|
871
1739
|
{
|
872
1740
|
"id": "OWASP-ASVS-V9.4.4",
|
1741
|
+
"scope": [
|
1742
|
+
"Communication Encryption",
|
1743
|
+
"General TLS Security Guidance"
|
1744
|
+
],
|
873
1745
|
"description": "Verify that if TLS wildcard certificates are used, wildcard certificates from a non-production environment are not valid for a production environment."
|
874
1746
|
},
|
875
1747
|
{
|
876
1748
|
"id": "OWASP-ASVS-V10.2.1",
|
1749
|
+
"scope": [
|
1750
|
+
"Malicious and Insecure Code",
|
1751
|
+
"Malicious Code Search"
|
1752
|
+
],
|
877
1753
|
"description": "Verify that the application source code and third party libraries do not contain unauthorized phone home or data collection capabilities. Where such functionality exists, obtain the user's permission for it to operate before collecting any data."
|
878
1754
|
},
|
879
1755
|
{
|
880
1756
|
"id": "OWASP-ASVS-V10.2.3",
|
1757
|
+
"scope": [
|
1758
|
+
"Malicious and Insecure Code",
|
1759
|
+
"Malicious Code Search"
|
1760
|
+
],
|
881
1761
|
"description": "Verify that the application source code and third party libraries do not contain back doors, such as hard-coded or additional undocumented accounts or keys, code obfuscation, undocumented binary blobs, rootkits, or anti-debugging, insecure debugging features, or otherwise out of date, insecure, or hidden functionality that could be used maliciously if discovered."
|
882
1762
|
},
|
883
1763
|
{
|
884
1764
|
"id": "OWASP-ASVS-V10.2.4",
|
1765
|
+
"scope": [
|
1766
|
+
"Malicious and Insecure Code",
|
1767
|
+
"Malicious Code Search"
|
1768
|
+
],
|
885
1769
|
"description": "Verify that the application source code and third party libraries do not contain time bombs by searching for date and time related functions."
|
886
1770
|
},
|
887
1771
|
{
|
888
1772
|
"id": "OWASP-ASVS-V10.2.5",
|
1773
|
+
"scope": [
|
1774
|
+
"Malicious and Insecure Code",
|
1775
|
+
"Malicious Code Search"
|
1776
|
+
],
|
889
1777
|
"description": "Verify that the application source code and third party libraries do not contain malicious code, such as salami attacks, logic bypasses, or logic bombs."
|
890
1778
|
},
|
891
1779
|
{
|
892
1780
|
"id": "OWASP-ASVS-V10.2.6",
|
1781
|
+
"scope": [
|
1782
|
+
"Malicious and Insecure Code",
|
1783
|
+
"Malicious Code Search"
|
1784
|
+
],
|
893
1785
|
"description": "Verify that the application source code and third party libraries do not contain Easter eggs or any other potentially unwanted functionality."
|
894
1786
|
},
|
895
1787
|
{
|
896
1788
|
"id": "OWASP-ASVS-V10.3.1",
|
1789
|
+
"scope": [
|
1790
|
+
"Malicious and Insecure Code",
|
1791
|
+
"Application Integrity"
|
1792
|
+
],
|
897
1793
|
"description": "Verify that if the application has a client or server auto-update feature, updates should be obtained over secure channels and digitally signed. The update code must validate the digital signature of the update before installing or executing the update."
|
898
1794
|
},
|
899
1795
|
{
|
900
1796
|
"id": "OWASP-ASVS-V10.3.2",
|
1797
|
+
"scope": [
|
1798
|
+
"Malicious and Insecure Code",
|
1799
|
+
"Application Integrity"
|
1800
|
+
],
|
901
1801
|
"description": "Verify that the application only loads or executes code, modules, content or plugins from sources not under the application's direct control or protection if it employs integrity protections, such as code signing."
|
902
1802
|
},
|
903
1803
|
{
|
904
1804
|
"id": "OWASP-ASVS-V10.4.1",
|
1805
|
+
"scope": [
|
1806
|
+
"Malicious and Insecure Code",
|
1807
|
+
"Defensive Coding"
|
1808
|
+
],
|
905
1809
|
"description": "Verify that the application explicitly ensures that variables are of the correct type and performs strict equality and comparator operations to avoid type juggling or confusion vulnerabilities caused by the application code making an assumption about a variable type."
|
906
1810
|
},
|
907
1811
|
{
|
908
1812
|
"id": "OWASP-ASVS-V10.4.2",
|
1813
|
+
"scope": [
|
1814
|
+
"Malicious and Insecure Code",
|
1815
|
+
"Defensive Coding"
|
1816
|
+
],
|
909
1817
|
"description": "Verify that the application avoids DOM clobbering when using client-side JavaScript by employing explicit variable declarations, performing strict type checking, avoiding storing global variables on the document object, and implementing namespace isolation."
|
910
1818
|
},
|
911
1819
|
{
|
912
1820
|
"id": "OWASP-ASVS-V10.4.3",
|
1821
|
+
"scope": [
|
1822
|
+
"Malicious and Insecure Code",
|
1823
|
+
"Defensive Coding"
|
1824
|
+
],
|
913
1825
|
"description": "Verify that JavaScript code is written in a way that prevents prototype pollution, for example, by using Set() or Map() instead of object literals."
|
914
1826
|
},
|
915
1827
|
{
|
916
1828
|
"id": "OWASP-ASVS-V11.1.1",
|
1829
|
+
"scope": [
|
1830
|
+
"Business Logic",
|
1831
|
+
"Business Logic Security"
|
1832
|
+
],
|
917
1833
|
"description": "Verify that the application will only process business logic flows for the same user in sequential step order and without skipping steps."
|
918
1834
|
},
|
919
1835
|
{
|
920
1836
|
"id": "OWASP-ASVS-V11.1.3",
|
1837
|
+
"scope": [
|
1838
|
+
"Business Logic",
|
1839
|
+
"Business Logic Security"
|
1840
|
+
],
|
921
1841
|
"description": "Verify that the application has appropriate limits defined on a per user basis for specific business actions or transactions."
|
922
1842
|
},
|
923
1843
|
{
|
924
1844
|
"id": "OWASP-ASVS-V11.1.5",
|
1845
|
+
"scope": [
|
1846
|
+
"Business Logic",
|
1847
|
+
"Business Logic Security"
|
1848
|
+
],
|
925
1849
|
"description": "Verify that the application has globally defined business logic limits or validation to protect against likely business risks or threats, identified using threat modeling or similar methodologies."
|
926
1850
|
},
|
927
1851
|
{
|
928
1852
|
"id": "OWASP-ASVS-V11.1.6",
|
1853
|
+
"scope": [
|
1854
|
+
"Business Logic",
|
1855
|
+
"Business Logic Security"
|
1856
|
+
],
|
929
1857
|
"description": "Verify that the application uses synchronization and locking mechanisms for sensitive operations in order to keep internal data consistent, maintain user state, and prevent race conditions, such as 'time of check to time of use (TOCTOU)' vulnerabilities."
|
930
1858
|
},
|
931
1859
|
{
|
932
1860
|
"id": "OWASP-ASVS-V11.1.7",
|
1861
|
+
"scope": [
|
1862
|
+
"Business Logic",
|
1863
|
+
"Business Logic Security"
|
1864
|
+
],
|
933
1865
|
"description": "Verify that the application monitors for unusual events or activity from a business logic perspective. For example, attempts to perform actions out of order or actions which a normal user would never attempt."
|
934
1866
|
},
|
935
1867
|
{
|
936
1868
|
"id": "OWASP-ASVS-V11.1.8",
|
1869
|
+
"scope": [
|
1870
|
+
"Business Logic",
|
1871
|
+
"Business Logic Security"
|
1872
|
+
],
|
937
1873
|
"description": "Verify that the application has configurable alerting when automated attacks or unusual activity is detected."
|
938
1874
|
},
|
939
1875
|
{
|
940
1876
|
"id": "OWASP-ASVS-V11.1.9",
|
1877
|
+
"scope": [
|
1878
|
+
"Business Logic",
|
1879
|
+
"Business Logic Security"
|
1880
|
+
],
|
941
1881
|
"description": "Verify that \"atomic transactions\" are being used at the business logic level such that either a business logic operation succeeds in its entirety, or it is rolled back to the previous correct state."
|
942
1882
|
},
|
943
1883
|
{
|
944
1884
|
"id": "OWASP-ASVS-V11.2.1",
|
1885
|
+
"scope": [
|
1886
|
+
"Business Logic",
|
1887
|
+
"Anti-automation"
|
1888
|
+
],
|
945
1889
|
"description": "Verify that the application will only process business logic flows with all steps being processed in realistic human time, i.e. transactions are not submitted too quickly."
|
946
1890
|
},
|
947
1891
|
{
|
948
1892
|
"id": "OWASP-ASVS-V11.2.2",
|
1893
|
+
"scope": [
|
1894
|
+
"Business Logic",
|
1895
|
+
"Anti-automation"
|
1896
|
+
],
|
949
1897
|
"description": "Verify that the application has anti-automation controls to protect against excessive calls to application functionality which could result in mass data exfiltration, junk data creation, resource quota exhaustion, rate limit breaches, out-of-band communication flooding, denial of service, overuse of an expensive resource, etc."
|
950
1898
|
},
|
951
1899
|
{
|
952
1900
|
"id": "OWASP-ASVS-V12.1.1",
|
1901
|
+
"scope": [
|
1902
|
+
"File and Resources",
|
1903
|
+
"File Upload"
|
1904
|
+
],
|
953
1905
|
"description": "Verify that the application will only accept files of a size which it can process without causing a loss of performance or denial of service attack."
|
954
1906
|
},
|
955
1907
|
{
|
956
1908
|
"id": "OWASP-ASVS-V12.1.2",
|
1909
|
+
"scope": [
|
1910
|
+
"File and Resources",
|
1911
|
+
"File Upload"
|
1912
|
+
],
|
957
1913
|
"description": "Verify that the application checks compressed files (e.g. zip, gz, docx, odt) against maximum allowed uncompressed size and against maximum number of files before uncompressing the file."
|
958
1914
|
},
|
959
1915
|
{
|
960
1916
|
"id": "OWASP-ASVS-V12.1.3",
|
1917
|
+
"scope": [
|
1918
|
+
"File and Resources",
|
1919
|
+
"File Upload"
|
1920
|
+
],
|
961
1921
|
"description": "Verify that a file size quota and maximum number of files per user is enforced to ensure that a single user cannot fill up the storage with too many files, or excessively large files."
|
962
1922
|
},
|
963
1923
|
{
|
964
1924
|
"id": "OWASP-ASVS-V12.1.4",
|
1925
|
+
"scope": [
|
1926
|
+
"File and Resources",
|
1927
|
+
"File Upload"
|
1928
|
+
],
|
965
1929
|
"description": "Verify that the application does not allow uploading compressed files containing symlinks unless this is specifically required (in which case it will be necessary to enforce an allow list of the files that can be symlinked to)."
|
966
1930
|
},
|
967
1931
|
{
|
968
1932
|
"id": "OWASP-ASVS-V12.2.1",
|
1933
|
+
"scope": [
|
1934
|
+
"File and Resources",
|
1935
|
+
"File Integrity"
|
1936
|
+
],
|
969
1937
|
"description": "Verify that when the application is accepting a file, it checks that the file extension of the file matches an expected file extension and that it validates that the contents of the file match the type represented by that extension, including but not limited to checking the initial \"magic bytes\"."
|
970
1938
|
},
|
971
1939
|
{
|
972
1940
|
"id": "OWASP-ASVS-V12.2.2",
|
1941
|
+
"scope": [
|
1942
|
+
"File and Resources",
|
1943
|
+
"File Integrity"
|
1944
|
+
],
|
973
1945
|
"description": "Verify that the application blocks uploaded images with a pixel size larger than the maximum allowed, to prevent pixel flood attacks."
|
974
1946
|
},
|
975
1947
|
{
|
976
1948
|
"id": "OWASP-ASVS-V12.3.1",
|
1949
|
+
"scope": [
|
1950
|
+
"File and Resources",
|
1951
|
+
"File Execution"
|
1952
|
+
],
|
977
1953
|
"description": "Verify that user-submitted filename metadata is not used directly by system or framework filesystems and that a URL API is used to protect against path traversal."
|
978
1954
|
},
|
979
1955
|
{
|
980
1956
|
"id": "OWASP-ASVS-V12.3.2",
|
1957
|
+
"scope": [
|
1958
|
+
"File and Resources",
|
1959
|
+
"File Execution"
|
1960
|
+
],
|
981
1961
|
"description": "Verify that user-submitted filename metadata is validated or ignored to prevent the disclosure, creation, updating or removal of local files (LFI)."
|
982
1962
|
},
|
983
1963
|
{
|
984
1964
|
"id": "OWASP-ASVS-V12.3.3",
|
1965
|
+
"scope": [
|
1966
|
+
"File and Resources",
|
1967
|
+
"File Execution"
|
1968
|
+
],
|
985
1969
|
"description": "Verify that user-submitted filename metadata is validated or ignored to prevent the disclosure or execution of remote files via Remote File Inclusion (RFI) or Server-side Request Forgery (SSRF) attacks."
|
986
1970
|
},
|
987
1971
|
{
|
988
1972
|
"id": "OWASP-ASVS-V12.3.6",
|
1973
|
+
"scope": [
|
1974
|
+
"File and Resources",
|
1975
|
+
"File Execution"
|
1976
|
+
],
|
989
1977
|
"description": "Verify that the application does not include and execute functionality from untrusted sources, such as unverified content distribution networks, JavaScript libraries, node npm libraries, or server-side DLLs."
|
990
1978
|
},
|
991
1979
|
{
|
992
1980
|
"id": "OWASP-ASVS-V12.3.7",
|
1981
|
+
"scope": [
|
1982
|
+
"File and Resources",
|
1983
|
+
"File Execution"
|
1984
|
+
],
|
993
1985
|
"description": "Verify that server-side file processing such as file decompression ignores user-provided path information to prevent vulnerabilities such as zip slip."
|
994
1986
|
},
|
995
1987
|
{
|
996
1988
|
"id": "OWASP-ASVS-V12.4.2",
|
1989
|
+
"scope": [
|
1990
|
+
"File and Resources",
|
1991
|
+
"File Storage"
|
1992
|
+
],
|
997
1993
|
"description": "Verify that files obtained from untrusted sources are scanned by antivirus scanners to prevent upload and serving of known malicious content."
|
998
1994
|
},
|
999
1995
|
{
|
1000
1996
|
"id": "OWASP-ASVS-V12.5.3",
|
1997
|
+
"scope": [
|
1998
|
+
"File and Resources",
|
1999
|
+
"File Download"
|
2000
|
+
],
|
1001
2001
|
"description": "Verify that the application validates or ignores user-submitted filenames, including in a JSON, JSONP, or URL parameter and specifies a filename in the Content-Disposition header in the response."
|
1002
2002
|
},
|
1003
2003
|
{
|
1004
2004
|
"id": "OWASP-ASVS-V12.7.1",
|
2005
|
+
"scope": [
|
2006
|
+
"File and Resources",
|
2007
|
+
"Application Resources"
|
2008
|
+
],
|
1005
2009
|
"description": "Verify that the application proactively releases system resources, such as database connections, open files, threads, etc, when it finishes using them to prevent resource exhaustion."
|
1006
2010
|
},
|
1007
2011
|
{
|
1008
2012
|
"id": "OWASP-ASVS-V13.1.4",
|
2013
|
+
"scope": [
|
2014
|
+
"API and Web Service",
|
2015
|
+
"Generic Web Service Security"
|
2016
|
+
],
|
1009
2017
|
"description": "Verify that authorization decisions are made at both the URI, enforced by programmatic or declarative security at the controller or router, and at the resource level, enforced by model-based permissions."
|
1010
2018
|
},
|
1011
2019
|
{
|
1012
2020
|
"id": "OWASP-ASVS-V13.1.6",
|
2021
|
+
"scope": [
|
2022
|
+
"API and Web Service",
|
2023
|
+
"Generic Web Service Security"
|
2024
|
+
],
|
1013
2025
|
"description": "Verify that per-message digital signatures are used to provide additional assurance on top of transport protections for requests or transactions which are highly sensitive or which traverse a number of systems."
|
1014
2026
|
},
|
1015
2027
|
{
|
1016
2028
|
"id": "OWASP-ASVS-V13.2.2",
|
2029
|
+
"scope": [
|
2030
|
+
"API and Web Service",
|
2031
|
+
"RESTful Web Service"
|
2032
|
+
],
|
1017
2033
|
"description": "Verify that JSON schema validation is in place and verified before accepting input."
|
1018
2034
|
},
|
1019
2035
|
{
|
1020
2036
|
"id": "OWASP-ASVS-V13.2.5",
|
2037
|
+
"scope": [
|
2038
|
+
"API and Web Service",
|
2039
|
+
"RESTful Web Service"
|
2040
|
+
],
|
1021
2041
|
"description": "Verify that REST services explicitly check the incoming Content-Type to be the expected one, such as application/xml or application/json."
|
1022
2042
|
},
|
1023
2043
|
{
|
1024
2044
|
"id": "OWASP-ASVS-V13.3.1",
|
2045
|
+
"scope": [
|
2046
|
+
"API and Web Service",
|
2047
|
+
"SOAP Web Service"
|
2048
|
+
],
|
1025
2049
|
"description": "Verify that XSD schema validation takes place to ensure a properly formed XML document, followed by validation of each input field before any processing of that data takes place."
|
1026
2050
|
},
|
1027
2051
|
{
|
1028
2052
|
"id": "OWASP-ASVS-V13.4.1",
|
2053
|
+
"scope": [
|
2054
|
+
"API and Web Service",
|
2055
|
+
"GraphQL"
|
2056
|
+
],
|
1029
2057
|
"description": "Verify that a query allow list or a combination of depth limiting and amount limiting is used to prevent GraphQL or data layer expression Denial of Service (DoS) as a result of expensive, nested queries. For more advanced scenarios, query cost analysis should be used."
|
1030
2058
|
},
|
1031
2059
|
{
|
1032
2060
|
"id": "OWASP-ASVS-V13.4.2",
|
2061
|
+
"scope": [
|
2062
|
+
"API and Web Service",
|
2063
|
+
"GraphQL"
|
2064
|
+
],
|
1033
2065
|
"description": "Verify that GraphQL or other data layer authorization logic should be implemented at the business logic layer instead of the GraphQL layer."
|
1034
2066
|
},
|
1035
2067
|
{
|
1036
2068
|
"id": "OWASP-ASVS-V13.4.3",
|
2069
|
+
"scope": [
|
2070
|
+
"API and Web Service",
|
2071
|
+
"GraphQL"
|
2072
|
+
],
|
1037
2073
|
"description": "Verify that GraphQL introspection queries are disabled in production environment unless the GraphQL API is meant to be used by other parties."
|
1038
2074
|
},
|
1039
2075
|
{
|
1040
2076
|
"id": "OWASP-ASVS-V13.5.1",
|
2077
|
+
"scope": [
|
2078
|
+
"API and Web Service",
|
2079
|
+
"WebSocket"
|
2080
|
+
],
|
1041
2081
|
"description": "Verify that WebSocket Secure (wss) is used for all WebSocket connections."
|
1042
2082
|
},
|
1043
2083
|
{
|
1044
2084
|
"id": "OWASP-ASVS-V13.5.2",
|
2085
|
+
"scope": [
|
2086
|
+
"API and Web Service",
|
2087
|
+
"WebSocket"
|
2088
|
+
],
|
1045
2089
|
"description": "Verify that, during the initial HTTP WebSocket handshake, the Origin header is checked against an allow list of authorized origins."
|
1046
2090
|
},
|
1047
2091
|
{
|
1048
2092
|
"id": "OWASP-ASVS-V13.5.3",
|
2093
|
+
"scope": [
|
2094
|
+
"API and Web Service",
|
2095
|
+
"WebSocket"
|
2096
|
+
],
|
1049
2097
|
"description": "Verify that rate limiting is in place for WebSocket messages."
|
1050
2098
|
},
|
1051
2099
|
{
|
1052
2100
|
"id": "OWASP-ASVS-V13.5.4",
|
2101
|
+
"scope": [
|
2102
|
+
"API and Web Service",
|
2103
|
+
"WebSocket"
|
2104
|
+
],
|
1053
2105
|
"description": "Verify that tokens possess at least 128 bits of entropy and are generated using approved cryptographic algorithms if session or channel tokens specific to WebSockets are being used."
|
1054
2106
|
},
|
1055
2107
|
{
|
1056
2108
|
"id": "OWASP-ASVS-V13.5.5",
|
2109
|
+
"scope": [
|
2110
|
+
"API and Web Service",
|
2111
|
+
"WebSocket"
|
2112
|
+
],
|
1057
2113
|
"description": "Verify that the tokens are initially obtained from a response to secure POST request only, and are not sent by the server through the WebSocket connection if session or channel tokens specific to WebSockets are being used."
|
1058
2114
|
},
|
1059
2115
|
{
|
1060
2116
|
"id": "OWASP-ASVS-V13.5.6",
|
2117
|
+
"scope": [
|
2118
|
+
"API and Web Service",
|
2119
|
+
"WebSocket"
|
2120
|
+
],
|
1061
2121
|
"description": "Verify that authentication is done before opening the WebSocket connection if only authenticated users should be able to use WebSockets."
|
1062
2122
|
},
|
1063
2123
|
{
|
1064
2124
|
"id": "OWASP-ASVS-V14.1.1",
|
2125
|
+
"scope": [
|
2126
|
+
"Configuration",
|
2127
|
+
"Build and Deploy"
|
2128
|
+
],
|
1065
2129
|
"description": "Verify that the application build and deployment processes are performed in a secure and repeatable way, such as CI / CD automation, automated configuration management, and automated deployment scripts."
|
1066
2130
|
},
|
1067
2131
|
{
|
1068
2132
|
"id": "OWASP-ASVS-V14.1.2",
|
2133
|
+
"scope": [
|
2134
|
+
"Configuration",
|
2135
|
+
"Build and Deploy"
|
2136
|
+
],
|
1069
2137
|
"description": "Verify that compiler flags are configured to enable all available buffer overflow protections and warnings, including stack randomization, data execution prevention, and to break the build if an unsafe pointer, memory, format string, integer, or string operations are found."
|
1070
2138
|
},
|
1071
2139
|
{
|
1072
2140
|
"id": "OWASP-ASVS-V14.1.3",
|
2141
|
+
"scope": [
|
2142
|
+
"Configuration",
|
2143
|
+
"Build and Deploy"
|
2144
|
+
],
|
1073
2145
|
"description": "Verify that configuration hardening is performed on all 3rd party products, libraries, frameworks and services as per their individual recommendations."
|
1074
2146
|
},
|
1075
2147
|
{
|
1076
2148
|
"id": "OWASP-ASVS-V14.1.5",
|
2149
|
+
"scope": [
|
2150
|
+
"Configuration",
|
2151
|
+
"Build and Deploy"
|
2152
|
+
],
|
1077
2153
|
"description": "Verify that deployed environments are short lived and frequently redeployed to a \"known good\" but updated state. Alternatively, long lived environments should use some form of \"drift prevention\" to ensure that deployed configurations are not changed to an insecure state."
|
1078
2154
|
},
|
1079
2155
|
{
|
1080
2156
|
"id": "OWASP-ASVS-V14.1.6",
|
2157
|
+
"scope": [
|
2158
|
+
"Configuration",
|
2159
|
+
"Build and Deploy"
|
2160
|
+
],
|
1081
2161
|
"description": "Verify that all unneeded features, documentation, sample applications and configurations are removed."
|
1082
2162
|
},
|
1083
2163
|
{
|
1084
2164
|
"id": "OWASP-ASVS-V14.1.7",
|
2165
|
+
"scope": [
|
2166
|
+
"Configuration",
|
2167
|
+
"Build and Deploy"
|
2168
|
+
],
|
1085
2169
|
"description": "Verify that production environment does not include test code."
|
1086
2170
|
},
|
1087
2171
|
{
|
1088
2172
|
"id": "OWASP-ASVS-V14.1.8",
|
2173
|
+
"scope": [
|
2174
|
+
"Configuration",
|
2175
|
+
"Build and Deploy"
|
2176
|
+
],
|
1089
2177
|
"description": "Verify that data, state information, and server instances related to the build and deployment process do not persist after the process has ended. (Ephemerality)."
|
1090
2178
|
},
|
1091
2179
|
{
|
1092
2180
|
"id": "OWASP-ASVS-V14.1.9",
|
2181
|
+
"scope": [
|
2182
|
+
"Configuration",
|
2183
|
+
"Build and Deploy"
|
2184
|
+
],
|
1093
2185
|
"description": "Verify that application code or functionality can only be changed via the standard update or build process and not directly in production through application functionality or some other direct modification mechanism."
|
1094
2186
|
},
|
1095
2187
|
{
|
1096
2188
|
"id": "OWASP-ASVS-V14.2.1",
|
2189
|
+
"scope": [
|
2190
|
+
"Configuration",
|
2191
|
+
"Dependency"
|
2192
|
+
],
|
1097
2193
|
"description": "Verify that all components are up to date, preferably using a dependency checker during build or compile time."
|
1098
2194
|
},
|
1099
2195
|
{
|
1100
2196
|
"id": "OWASP-ASVS-V14.2.4",
|
2197
|
+
"scope": [
|
2198
|
+
"Configuration",
|
2199
|
+
"Dependency"
|
2200
|
+
],
|
1101
2201
|
"description": "Verify that third party components come from pre-defined, trusted and continually maintained repositories."
|
1102
2202
|
},
|
1103
2203
|
{
|
1104
2204
|
"id": "OWASP-ASVS-V14.2.5",
|
2205
|
+
"scope": [
|
2206
|
+
"Configuration",
|
2207
|
+
"Dependency"
|
2208
|
+
],
|
1105
2209
|
"description": "Verify that a Software Bill of Materials (SBOM) is maintained of all third party libraries in use."
|
1106
2210
|
},
|
1107
2211
|
{
|
1108
2212
|
"id": "OWASP-ASVS-V14.2.6",
|
2213
|
+
"scope": [
|
2214
|
+
"Configuration",
|
2215
|
+
"Dependency"
|
2216
|
+
],
|
1109
2217
|
"description": "Verify that risky third party libraries or those with a history of vulnerabilities are encapsulated such that only required behaviour is available to the application, to reduce attack surface."
|
1110
2218
|
},
|
1111
2219
|
{
|
1112
2220
|
"id": "OWASP-ASVS-V14.2.7",
|
2221
|
+
"scope": [
|
2222
|
+
"Configuration",
|
2223
|
+
"Dependency"
|
2224
|
+
],
|
1113
2225
|
"description": "Verify that third party components are sourced separately from internally owned and developed applications to prevent dependency confusion attacks."
|
1114
2226
|
},
|
1115
2227
|
{
|
1116
2228
|
"id": "OWASP-ASVS-V14.2.8",
|
2229
|
+
"scope": [
|
2230
|
+
"Configuration",
|
2231
|
+
"Dependency"
|
2232
|
+
],
|
1117
2233
|
"description": "Verify that risky third party libraries or those with a history of vulnerabilities are sandboxed away from the most sensitive system modules/services so that even if a vulnerability in the library was successfully exploited, the sensitive system modules/services would not be compromised."
|
1118
2234
|
},
|
1119
2235
|
{
|
1120
2236
|
"id": "OWASP-ASVS-V14.3.2",
|
2237
|
+
"scope": [
|
2238
|
+
"Configuration",
|
2239
|
+
"Unintended Information Leakage"
|
2240
|
+
],
|
1121
2241
|
"description": "Verify that debug modes are disabled in production environments for every component to prevent exposure of debug features and unintended information leakage."
|
1122
2242
|
},
|
1123
2243
|
{
|
1124
2244
|
"id": "OWASP-ASVS-V14.3.3",
|
2245
|
+
"scope": [
|
2246
|
+
"Configuration",
|
2247
|
+
"Unintended Information Leakage"
|
2248
|
+
],
|
1125
2249
|
"description": "Verify that the HTTP headers or any part of the HTTP response do not expose detailed version information of server-side components."
|
1126
2250
|
},
|
1127
2251
|
{
|
1128
2252
|
"id": "OWASP-ASVS-V14.3.4",
|
2253
|
+
"scope": [
|
2254
|
+
"Configuration",
|
2255
|
+
"Unintended Information Leakage"
|
2256
|
+
],
|
1129
2257
|
"description": "Verify that directory browsing is disabled unless deliberately desired."
|
1130
2258
|
},
|
1131
2259
|
{
|
1132
2260
|
"id": "OWASP-ASVS-V14.3.5",
|
2261
|
+
"scope": [
|
2262
|
+
"Configuration",
|
2263
|
+
"Unintended Information Leakage"
|
2264
|
+
],
|
1133
2265
|
"description": "Verify that applications do not allow discovery or disclosure of file or directory metadata, such as Thumbs.db, .DS_Store, .git or .svn folders."
|
1134
2266
|
},
|
1135
2267
|
{
|
1136
2268
|
"id": "OWASP-ASVS-V14.3.6",
|
2269
|
+
"scope": [
|
2270
|
+
"Configuration",
|
2271
|
+
"Unintended Information Leakage"
|
2272
|
+
],
|
1137
2273
|
"description": "Verify that the web tier is configured to serve only files with specific file extensions to prevent unintentional information and source code leakage. For example, backup files (e.g. .bak), temporary working files (e.g. .swp), compressed files (.zip, .tar.gz, etc.) and other extensions commonly used by editors should be blocked unless required."
|
1138
2274
|
},
|
1139
2275
|
{
|
1140
2276
|
"id": "OWASP-ASVS-V14.4.1",
|
2277
|
+
"scope": [
|
2278
|
+
"Configuration",
|
2279
|
+
"HTTP Security Headers"
|
2280
|
+
],
|
1141
2281
|
"description": "Verify that every HTTP response contains a Content-Type header which matches the actual content of the response."
|
1142
2282
|
},
|
1143
2283
|
{
|
1144
2284
|
"id": "OWASP-ASVS-V14.4.8",
|
2285
|
+
"scope": [
|
2286
|
+
"Configuration",
|
2287
|
+
"HTTP Security Headers"
|
2288
|
+
],
|
1145
2289
|
"description": "Verify that if a response specifies a Content-Type of \"text/\\*\", \"\\*/\\*+xml\" and \"\\*/xml\", it also specifies a safe character set (e.g., UTF-8, ISO-8859-1) with the charset parameter."
|
1146
2290
|
},
|
1147
2291
|
{
|
1148
2292
|
"id": "OWASP-ASVS-V14.5.1",
|
2293
|
+
"scope": [
|
2294
|
+
"Configuration",
|
2295
|
+
"HTTP Request Header Validation"
|
2296
|
+
],
|
1149
2297
|
"description": "Verify that the application only responds to HTTP methods in use by the application or by the API (including OPTIONS during preflight requests) and unused methods (e.g. TRACE) are blocked."
|
1150
2298
|
},
|
1151
2299
|
{
|
1152
2300
|
"id": "OWASP-ASVS-V14.5.5",
|
2301
|
+
"scope": [
|
2302
|
+
"Configuration",
|
2303
|
+
"HTTP Request Header Validation"
|
2304
|
+
],
|
1153
2305
|
"description": "Verify that HTTP requests using the HEAD, OPTIONS, TRACE or GET verb do not modify any backend data structure or perform any state-changing actions. These requests are safe methods and should therefore not have any side effects."
|
1154
2306
|
},
|
1155
2307
|
{
|
1156
2308
|
"id": "OWASP-ASVS-V14.5.6",
|
2309
|
+
"scope": [
|
2310
|
+
"Configuration",
|
2311
|
+
"HTTP Request Header Validation"
|
2312
|
+
],
|
1157
2313
|
"description": "Verify that all application components, including load balancers, firewalls, and application servers, comply with RFC 2616 by ignoring the Content-Length header when a Transfer-Encoding header is present, to prevent HTTP Request Smuggling."
|
1158
2314
|
},
|
1159
2315
|
{
|
1160
2316
|
"id": "OWASP-ASVS-V14.5.7",
|
2317
|
+
"scope": [
|
2318
|
+
"Configuration",
|
2319
|
+
"HTTP Request Header Validation"
|
2320
|
+
],
|
1161
2321
|
"description": "Verify that the web application warns users who are using an old browser which does not support HTTP security features on which the application relies. The list of old browsers must be periodically reviewed and updated."
|
1162
2322
|
},
|
1163
2323
|
{
|
1164
2324
|
"id": "OWASP-ASVS-V14.5.8",
|
2325
|
+
"scope": [
|
2326
|
+
"Configuration",
|
2327
|
+
"HTTP Request Header Validation"
|
2328
|
+
],
|
1165
2329
|
"description": "Verify that any HTTP headers used by the application and defined by intermediary devices like load balancers or proxies, such as X-Real-IP and X-Forwarded-*, cannot be overridden by the end-user."
|
1166
2330
|
},
|
1167
2331
|
{
|
1168
2332
|
"id": "OWASP-ASVS-V14.6.1",
|
2333
|
+
"scope": [
|
2334
|
+
"Configuration",
|
2335
|
+
"HTTP/2"
|
2336
|
+
],
|
1169
2337
|
"description": "Verify that the value in the Content-Length request header matches the calculated length using the built-in mechanism."
|
1170
2338
|
},
|
1171
2339
|
{
|
1172
2340
|
"id": "OWASP-ASVS-V14.6.2",
|
2341
|
+
"scope": [
|
2342
|
+
"Configuration",
|
2343
|
+
"HTTP/2"
|
2344
|
+
],
|
1173
2345
|
"description": "Verify that all Transfer-Encoding headers are stripped from the message or that the request is blocked entirely."
|
1174
2346
|
},
|
1175
2347
|
{
|
1176
2348
|
"id": "OWASP-ASVS-V14.6.3",
|
2349
|
+
"scope": [
|
2350
|
+
"Configuration",
|
2351
|
+
"HTTP/2"
|
2352
|
+
],
|
1177
2353
|
"description": "Verify that a full CRLF (\\r\\n) sequence is neutralized inside a HTTP/2 header."
|
1178
2354
|
},
|
1179
2355
|
{
|
1180
2356
|
"id": "OWASP-ASVS-V14.7.1",
|
2357
|
+
"scope": [
|
2358
|
+
"Configuration",
|
2359
|
+
"Web or Application Server Configuration"
|
2360
|
+
],
|
1181
2361
|
"description": "Verify that the web or application server is configured with an allow list of resources or systems to which the server can send requests or load data or files from."
|
1182
2362
|
},
|
1183
2363
|
{
|
1184
2364
|
"id": "OWASP-ASVS-V50.1.1",
|
2365
|
+
"scope": [
|
2366
|
+
"Web Frontend Security",
|
2367
|
+
"Site Isolation Architecture"
|
2368
|
+
],
|
1185
2369
|
"description": "Verify that separate applications are hosted on different hostnames to benefit from the restrictions provided by the \"same-origin policy\" including how documents or scripts loaded by one origin can interact with resources from another origin and hostname restrictions on cookies."
|
1186
2370
|
},
|
1187
2371
|
{
|
1188
2372
|
"id": "OWASP-ASVS-V50.2.1",
|
2373
|
+
"scope": [
|
2374
|
+
"Web Frontend Security",
|
2375
|
+
"Browser Security Mechanism Headers"
|
2376
|
+
],
|
1189
2377
|
"description": "Verify that a Content Security Policy (CSP) response header is in place that helps mitigate impact for XSS attacks like HTML, DOM, CSS, JSON, and JavaScript injection vulnerabilities."
|
1190
2378
|
},
|
1191
2379
|
{
|
1192
2380
|
"id": "OWASP-ASVS-V50.2.2",
|
2381
|
+
"scope": [
|
2382
|
+
"Web Frontend Security",
|
2383
|
+
"Browser Security Mechanism Headers"
|
2384
|
+
],
|
1193
2385
|
"description": "Verify that all responses contain a X-Content-Type-Options: nosniff header."
|
1194
2386
|
},
|
1195
2387
|
{
|
1196
2388
|
"id": "OWASP-ASVS-V50.2.3",
|
2389
|
+
"scope": [
|
2390
|
+
"Web Frontend Security",
|
2391
|
+
"Browser Security Mechanism Headers"
|
2392
|
+
],
|
1197
2393
|
"description": "Verify that a Strict-Transport-Security header is included on all responses and for all subdomains, such as Strict-Transport-Security: max-age=31536000; includeSubdomains."
|
1198
2394
|
},
|
1199
2395
|
{
|
1200
2396
|
"id": "OWASP-ASVS-V50.2.4",
|
2397
|
+
"scope": [
|
2398
|
+
"Web Frontend Security",
|
2399
|
+
"Browser Security Mechanism Headers"
|
2400
|
+
],
|
1201
2401
|
"description": "Verify that a suitable Referrer-Policy header is included to avoid exposing sensitive information in the URL through the Referer header to untrusted parties."
|
1202
2402
|
},
|
1203
2403
|
{
|
1204
2404
|
"id": "OWASP-ASVS-V50.2.5",
|
2405
|
+
"scope": [
|
2406
|
+
"Web Frontend Security",
|
2407
|
+
"Browser Security Mechanism Headers"
|
2408
|
+
],
|
1205
2409
|
"description": "Verify that the content of a web application cannot be embedded in a third-party site by default and that embedding of the exact resources is only allowed where necessary by using suitable Content-Security-Policy: frame-ancestors. Note that the X-Frame-Options solution is obsoleted."
|
1206
2410
|
},
|
1207
2411
|
{
|
1208
2412
|
"id": "OWASP-ASVS-V50.2.6",
|
2413
|
+
"scope": [
|
2414
|
+
"Web Frontend Security",
|
2415
|
+
"Browser Security Mechanism Headers"
|
2416
|
+
],
|
1209
2417
|
"description": "Verify that the Cross-Origin Resource Sharing (CORS) Access-Control-Allow-Origin header uses a strict allow list of trusted origins. When \"Access-Control-Allow-Origin: *\" needs to be used, verify that the responses do not include any sensitive information."
|
1210
2418
|
},
|
1211
2419
|
{
|
1212
2420
|
"id": "OWASP-ASVS-V50.3.1",
|
2421
|
+
"scope": [
|
2422
|
+
"Web Frontend Security",
|
2423
|
+
"Browser Origin Separation"
|
2424
|
+
],
|
1213
2425
|
"description": "Verify that the application defends against Cross-Site Request Forgery (CSRF) attacks to protect authenticated or sensitive public functionality using the development framework's built-in anti-CSRF functionality or CSRF tokens plus additional defense in depth measures."
|
1214
2426
|
},
|
1215
2427
|
{
|
1216
2428
|
"id": "OWASP-ASVS-V50.3.2",
|
2429
|
+
"scope": [
|
2430
|
+
"Web Frontend Security",
|
2431
|
+
"Browser Origin Separation"
|
2432
|
+
],
|
1217
2433
|
"description": "Verify that messages received by the postMessage interface are discarded if the origin of the message is not trusted, or if the syntax of the message is invalid."
|
1218
2434
|
},
|
1219
2435
|
{
|
1220
2436
|
"id": "OWASP-ASVS-V50.3.3",
|
2437
|
+
"scope": [
|
2438
|
+
"Web Frontend Security",
|
2439
|
+
"Browser Origin Separation"
|
2440
|
+
],
|
1221
2441
|
"description": "Verify that the Origin header is validated against a defined list of allowed origins to match the desired Cross-Origin Resource Sharing (CORS) policy."
|
1222
2442
|
},
|
1223
2443
|
{
|
1224
2444
|
"id": "OWASP-ASVS-V50.4.1",
|
2445
|
+
"scope": [
|
2446
|
+
"Web Frontend Security",
|
2447
|
+
"Cross-Site Script Inclusion"
|
2448
|
+
],
|
1225
2449
|
"description": "Verify that JSONP functionality is not enabled anywhere across the application to avoid Cross-Site Script Inclusion (XSSI) attacks."
|
1226
2450
|
},
|
1227
2451
|
{
|
1228
2452
|
"id": "OWASP-ASVS-V50.4.2",
|
2453
|
+
"scope": [
|
2454
|
+
"Web Frontend Security",
|
2455
|
+
"Cross-Site Script Inclusion"
|
2456
|
+
],
|
1229
2457
|
"description": "Verify that data requiring authorization is not included in script resource responses, like JavaScript files, to prevent Cross-Site Script Inclusion (XSSI) attacks."
|
1230
2458
|
},
|
1231
2459
|
{
|
1232
2460
|
"id": "OWASP-ASVS-V50.5.1",
|
2461
|
+
"scope": [
|
2462
|
+
"Web Frontend Security",
|
2463
|
+
"Unintended Content Interpretation"
|
2464
|
+
],
|
1233
2465
|
"description": "Verify that direct requests to uploaded files will never be executed as HTML and JavaScript content."
|
1234
2466
|
},
|
1235
2467
|
{
|
1236
2468
|
"id": "OWASP-ASVS-V50.5.2",
|
2469
|
+
"scope": [
|
2470
|
+
"Web Frontend Security",
|
2471
|
+
"Unintended Content Interpretation"
|
2472
|
+
],
|
1237
2473
|
"description": "Verify that user-uploaded files - if required to be displayed or downloaded from the application - are served by either octet stream downloads, or from an unrelated domain, such as a cloud file storage bucket."
|
1238
2474
|
},
|
1239
2475
|
{
|
1240
2476
|
"id": "OWASP-ASVS-V50.5.3",
|
2477
|
+
"scope": [
|
2478
|
+
"Web Frontend Security",
|
2479
|
+
"Unintended Content Interpretation"
|
2480
|
+
],
|
1241
2481
|
"description": "Verify that security controls are in place to prevent browsers from rendering content or functionality in HTTP responses in an incorrect context (e.g., when an API or other resource is loaded directly). Possible controls could include: not serving the content unless headers indicate it is the correct context, Content-Security-Policy: sandbox, Content-Disposition: attachment, etc."
|
1242
2482
|
},
|
1243
2483
|
{
|
1244
2484
|
"id": "OWASP-ASVS-V50.6.1",
|
2485
|
+
"scope": [
|
2486
|
+
"Web Frontend Security",
|
2487
|
+
"External Resource Integrity"
|
2488
|
+
],
|
1245
2489
|
"description": "Verify that if client-side assets, such as JavaScript libraries, CSS or web fonts, are hosted externally on a Content Delivery Network (CDN) or external provider, Subresource Integrity (SRI) is used to validate the integrity of the asset."
|
1246
2490
|
},
|
1247
2491
|
{
|
1248
2492
|
"id": "OWASP-ASVS-V50.7.1",
|
2493
|
+
"scope": [
|
2494
|
+
"Web Frontend Security",
|
2495
|
+
"Other Browser Security Considerations"
|
2496
|
+
],
|
1249
2497
|
"description": "Verify that the application shows a notification when the user is being redirected to a URL outside of the application's control, with an option to cancel the navigation."
|
1250
2498
|
},
|
1251
2499
|
{
|
1252
2500
|
"id": "OWASP-ASVS-V50.7.2",
|
2501
|
+
"scope": [
|
2502
|
+
"Web Frontend Security",
|
2503
|
+
"Other Browser Security Considerations"
|
2504
|
+
],
|
1253
2505
|
"description": "Verify the application only uses client-side technologies which are still supported and considered secure. Examples of technologies which do not meet this requirement include NSAPI plugins, Flash, Shockwave, ActiveX, Silverlight, NACL, or client-side Java applets."
|
1254
2506
|
}
|
1255
2507
|
]
|
1256
|
-
}
|
2508
|
+
}
|