@zivis/appsec-pack 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/manifest.json +408 -18
- package/package.json +1 -1
package/dist/manifest.json
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"schema_version": "1.0.0",
|
|
3
3
|
"pack_id": "appsec",
|
|
4
4
|
"pack_type": "appsec",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.3.0",
|
|
6
6
|
"min_cli_version": "0.1.0-alpha.1",
|
|
7
7
|
"description": "ZIVIS AppSec testing methodology — base guidance plus targeted scopes.",
|
|
8
|
-
"built_at": "2026-08-
|
|
8
|
+
"built_at": "2026-08-31T00:30:17.528Z",
|
|
9
9
|
"base": {
|
|
10
10
|
"path": "TEST.md",
|
|
11
11
|
"sha256": "48ab72f5b5c830d0ecb93159b45049732a88e375195517a59fccf64aa17f94e9"
|
|
@@ -16,110 +16,500 @@
|
|
|
16
16
|
"label": "Architecture & Attack Surface",
|
|
17
17
|
"description": "Entry-point inventory, trust boundaries, and data flow across the application.",
|
|
18
18
|
"path": "scopes/architecture.md",
|
|
19
|
-
"sha256": "8981d8f7f3d277ba6319c1e7ec36c349141576abce2574ae79c3b8d3e303eddc"
|
|
19
|
+
"sha256": "8981d8f7f3d277ba6319c1e7ec36c349141576abce2574ae79c3b8d3e303eddc",
|
|
20
|
+
"tests": [
|
|
21
|
+
{
|
|
22
|
+
"id": "ARCH-001",
|
|
23
|
+
"title": "Entry-point inventory completeness"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "ARCH-002",
|
|
27
|
+
"title": "Trust boundary mapping"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "ARCH-003",
|
|
31
|
+
"title": "Untrusted-input data-flow tracing"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "ARCH-004",
|
|
35
|
+
"title": "Per-surface authentication posture"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "ARCH-005",
|
|
39
|
+
"title": "Third-party integration and secret-exposure inventory"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "ARCH-006",
|
|
43
|
+
"title": "Routed surface vs. published spec/doc drift"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
20
46
|
},
|
|
21
47
|
{
|
|
22
48
|
"id": "auth",
|
|
23
49
|
"label": "Authentication",
|
|
24
50
|
"description": "Login, session establishment, credential handling, MFA.",
|
|
25
51
|
"path": "scopes/auth.md",
|
|
26
|
-
"sha256": "6a59506cd28214842073c70383a481a5267f8a1643d1b564b7708a5179d97874"
|
|
52
|
+
"sha256": "6a59506cd28214842073c70383a481a5267f8a1643d1b564b7708a5179d97874",
|
|
53
|
+
"tests": [
|
|
54
|
+
{
|
|
55
|
+
"id": "AUTH-001",
|
|
56
|
+
"title": "Credential storage hashing strength"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "AUTH-002",
|
|
60
|
+
"title": "Constant-time credential/token comparison"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "AUTH-003",
|
|
64
|
+
"title": "Authentication transport security (no credentials in URL/plaintext)"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "AUTH-004",
|
|
68
|
+
"title": "Server-side MFA / step-up enforcement"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"id": "AUTH-005",
|
|
72
|
+
"title": "Password reset & account recovery token handling"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "AUTH-006",
|
|
76
|
+
"title": "Rate limiting / lockout on auth-sensitive endpoints"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "AUTH-007",
|
|
80
|
+
"title": "Username / account enumeration resistance"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "AUTH-008",
|
|
84
|
+
"title": "Default or weak credentials in seeds, fixtures, or docs"
|
|
85
|
+
}
|
|
86
|
+
]
|
|
27
87
|
},
|
|
28
88
|
{
|
|
29
89
|
"id": "authorization",
|
|
30
90
|
"label": "Authorization",
|
|
31
91
|
"description": "Access control, object-level permissions, privilege boundaries.",
|
|
32
92
|
"path": "scopes/authorization.md",
|
|
33
|
-
"sha256": "3cf76877749f666eba67a09e67ad476ef93e570dc2cdd173f640c86b578d3091"
|
|
93
|
+
"sha256": "3cf76877749f666eba67a09e67ad476ef93e570dc2cdd173f640c86b578d3091",
|
|
94
|
+
"tests": [
|
|
95
|
+
{
|
|
96
|
+
"id": "AUTHZ-001",
|
|
97
|
+
"title": "Object-level access control (IDOR/BOLA)"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "AUTHZ-002",
|
|
101
|
+
"title": "Function-level access control (BFLA)"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "AUTHZ-003",
|
|
105
|
+
"title": "Tenant / org isolation"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "AUTHZ-004",
|
|
109
|
+
"title": "Property-level authorization / mass-assignment (BOPLA)"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "AUTHZ-005",
|
|
113
|
+
"title": "Privilege escalation via parameter tampering or missing state-transition check"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"id": "AUTHZ-006",
|
|
117
|
+
"title": "Cross-route authorization consistency for the same object"
|
|
118
|
+
}
|
|
119
|
+
]
|
|
34
120
|
},
|
|
35
121
|
{
|
|
36
122
|
"id": "session",
|
|
37
123
|
"label": "Session Management",
|
|
38
124
|
"description": "Token lifecycle, invalidation, CSRF, and cookie security.",
|
|
39
125
|
"path": "scopes/session.md",
|
|
40
|
-
"sha256": "0677be2ea9ef9b5a217825c834eb288ff57510bde28d2f3343066c1a17136fba"
|
|
126
|
+
"sha256": "0677be2ea9ef9b5a217825c834eb288ff57510bde28d2f3343066c1a17136fba",
|
|
127
|
+
"tests": [
|
|
128
|
+
{
|
|
129
|
+
"id": "SESSION-001",
|
|
130
|
+
"title": "Token issuance & rotation (fixation resistance)"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "SESSION-002",
|
|
134
|
+
"title": "Server-side session invalidation on logout"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "SESSION-003",
|
|
138
|
+
"title": "Idle and absolute session expiration"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "SESSION-004",
|
|
142
|
+
"title": "Session cookie attributes (HttpOnly/Secure/SameSite)"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "SESSION-005",
|
|
146
|
+
"title": "CSRF protection on state-changing requests"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"id": "SESSION-006",
|
|
150
|
+
"title": "JWT algorithm/signature/expiry handling"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "SESSION-007",
|
|
154
|
+
"title": "Concurrent-session and device-revocation behavior"
|
|
155
|
+
}
|
|
156
|
+
]
|
|
41
157
|
},
|
|
42
158
|
{
|
|
43
159
|
"id": "api",
|
|
44
160
|
"label": "API Security",
|
|
45
161
|
"description": "Endpoint-level security for REST/GraphQL/RPC surfaces.",
|
|
46
162
|
"path": "scopes/api.md",
|
|
47
|
-
"sha256": "a38c796aed3f754d105ed64bc8d84ce1fc0ee9c2b199d0ecdef46e8245cc6ad4"
|
|
163
|
+
"sha256": "a38c796aed3f754d105ed64bc8d84ce1fc0ee9c2b199d0ecdef46e8245cc6ad4",
|
|
164
|
+
"tests": [
|
|
165
|
+
{
|
|
166
|
+
"id": "API-001",
|
|
167
|
+
"title": "Shadow / undocumented / debug / version-skew endpoint inventory"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"id": "API-002",
|
|
171
|
+
"title": "Cross-endpoint authorization consistency (list vs. detail, v1 vs. v2, REST vs. GraphQL)"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"id": "API-003",
|
|
175
|
+
"title": "Mass-assignment / BOPLA on API request binding"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"id": "API-004",
|
|
179
|
+
"title": "Unrestricted resource consumption (rate limits, pagination, query complexity)"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"id": "API-005",
|
|
183
|
+
"title": "Unsafe consumption of upstream/third-party API responses"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"id": "API-006",
|
|
187
|
+
"title": "Routed endpoints vs. published API spec drift"
|
|
188
|
+
}
|
|
189
|
+
]
|
|
48
190
|
},
|
|
49
191
|
{
|
|
50
192
|
"id": "input",
|
|
51
193
|
"label": "Input Validation",
|
|
52
194
|
"description": "Injection, deserialization, and untrusted-input handling.",
|
|
53
195
|
"path": "scopes/input.md",
|
|
54
|
-
"sha256": "f4c4d04960d49679dd7f8966d9b28d83bb0a2aae49e0634f956a060f91e61127"
|
|
196
|
+
"sha256": "f4c4d04960d49679dd7f8966d9b28d83bb0a2aae49e0634f956a060f91e61127",
|
|
197
|
+
"tests": [
|
|
198
|
+
{
|
|
199
|
+
"id": "INPUT-001",
|
|
200
|
+
"title": "SQL / NoSQL injection"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"id": "INPUT-002",
|
|
204
|
+
"title": "Command injection"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"id": "INPUT-003",
|
|
208
|
+
"title": "Server-side template injection (SSTI)"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"id": "INPUT-004",
|
|
212
|
+
"title": "Path traversal"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"id": "INPUT-005",
|
|
216
|
+
"title": "Unsafe deserialization / prototype pollution"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"id": "INPUT-006",
|
|
220
|
+
"title": "LDAP / XPath / header / log injection"
|
|
221
|
+
}
|
|
222
|
+
]
|
|
55
223
|
},
|
|
56
224
|
{
|
|
57
225
|
"id": "business-logic",
|
|
58
226
|
"label": "Business Logic",
|
|
59
227
|
"description": "Workflow bypass, race conditions, and abuse of legitimate features.",
|
|
60
228
|
"path": "scopes/business-logic.md",
|
|
61
|
-
"sha256": "c375b1cc36f8ede1f39a21b72271f9c8e40d4390513a87fc023c7402fa353845"
|
|
229
|
+
"sha256": "c375b1cc36f8ede1f39a21b72271f9c8e40d4390513a87fc023c7402fa353845",
|
|
230
|
+
"tests": [
|
|
231
|
+
{
|
|
232
|
+
"id": "BIZLOGIC-001",
|
|
233
|
+
"title": "Workflow / state-machine bypass"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"id": "BIZLOGIC-002",
|
|
237
|
+
"title": "Race conditions on shared or single-use resources"
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"id": "BIZLOGIC-003",
|
|
241
|
+
"title": "Server-trusted client value tampering (price/quantity/role)"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"id": "BIZLOGIC-004",
|
|
245
|
+
"title": "Legitimate-feature abuse at unintended scale"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"id": "BIZLOGIC-005",
|
|
249
|
+
"title": "Negative/overflow quantities, idempotency replay, step-reordering"
|
|
250
|
+
}
|
|
251
|
+
]
|
|
62
252
|
},
|
|
63
253
|
{
|
|
64
254
|
"id": "data",
|
|
65
255
|
"label": "Data Protection",
|
|
66
256
|
"description": "Sensitive-data exposure, encryption at rest/in transit.",
|
|
67
257
|
"path": "scopes/data.md",
|
|
68
|
-
"sha256": "294e1ad60edfeca61748d91924ab7c7fc747806ab192342e7219464af9752c8f"
|
|
258
|
+
"sha256": "294e1ad60edfeca61748d91924ab7c7fc747806ab192342e7219464af9752c8f",
|
|
259
|
+
"tests": [
|
|
260
|
+
{
|
|
261
|
+
"id": "DATA-001",
|
|
262
|
+
"title": "Sensitive data in logs and error responses"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"id": "DATA-002",
|
|
266
|
+
"title": "Overbroad API response field exposure"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"id": "DATA-003",
|
|
270
|
+
"title": "Encryption at rest for credentials/PII"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"id": "DATA-004",
|
|
274
|
+
"title": "Encryption in transit (TLS enforcement)"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"id": "DATA-005",
|
|
278
|
+
"title": "Weak or misused cryptographic primitives"
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"id": "DATA-006",
|
|
282
|
+
"title": "Data retention / exposure in caches, backups, or third-party sinks"
|
|
283
|
+
}
|
|
284
|
+
]
|
|
69
285
|
},
|
|
70
286
|
{
|
|
71
287
|
"id": "secrets",
|
|
72
288
|
"label": "Secrets Management",
|
|
73
289
|
"description": "Credential/token storage, rotation, and leakage risk.",
|
|
74
290
|
"path": "scopes/secrets.md",
|
|
75
|
-
"sha256": "7dc99c9d847ca351daa2035ee2ffbf5f88385ec81cb877dba37467aab9979c86"
|
|
291
|
+
"sha256": "7dc99c9d847ca351daa2035ee2ffbf5f88385ec81cb877dba37467aab9979c86",
|
|
292
|
+
"tests": [
|
|
293
|
+
{
|
|
294
|
+
"id": "SECRETS-001",
|
|
295
|
+
"title": "Hardcoded credentials/tokens in source, config, CI, or image layers"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"id": "SECRETS-002",
|
|
299
|
+
"title": "Secrets present in git history"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"id": "SECRETS-003",
|
|
303
|
+
"title": "Plaintext secrets in logs, error output, or client-visible responses"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"id": "SECRETS-004",
|
|
307
|
+
"title": "Over-broad-scoped or non-expiring tokens"
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"id": "SECRETS-005",
|
|
311
|
+
"title": "Secrets shipped in the frontend bundle or public assets"
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"id": "SECRETS-006",
|
|
315
|
+
"title": "Install-time / build-time secret exposure"
|
|
316
|
+
}
|
|
317
|
+
]
|
|
76
318
|
},
|
|
77
319
|
{
|
|
78
320
|
"id": "dependencies",
|
|
79
321
|
"label": "Dependency Risk",
|
|
80
322
|
"description": "Vulnerable or malicious third-party dependencies.",
|
|
81
323
|
"path": "scopes/dependencies.md",
|
|
82
|
-
"sha256": "cf66b5df2daf6bc1a6d6498128bec0153d29397002e7b306bfd10efc5248f2a0"
|
|
324
|
+
"sha256": "cf66b5df2daf6bc1a6d6498128bec0153d29397002e7b306bfd10efc5248f2a0",
|
|
325
|
+
"tests": [
|
|
326
|
+
{
|
|
327
|
+
"id": "DEPS-001",
|
|
328
|
+
"title": "Known-vulnerable dependencies against the resolved lockfile"
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"id": "DEPS-002",
|
|
332
|
+
"title": "CVE reachability triage"
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"id": "DEPS-003",
|
|
336
|
+
"title": "Dependency confusion / substitution risk"
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"id": "DEPS-004",
|
|
340
|
+
"title": "Typosquat / low-reputation package detection"
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"id": "DEPS-005",
|
|
344
|
+
"title": "Install-time script risk (preinstall/postinstall/setup.py)"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"id": "DEPS-006",
|
|
348
|
+
"title": "Unmaintained/abandoned packages in a sensitive code path"
|
|
349
|
+
}
|
|
350
|
+
]
|
|
83
351
|
},
|
|
84
352
|
{
|
|
85
353
|
"id": "ssrf",
|
|
86
354
|
"label": "SSRF",
|
|
87
355
|
"description": "Server-side request forgery via user-influenced outbound requests.",
|
|
88
356
|
"path": "scopes/ssrf.md",
|
|
89
|
-
"sha256": "38ceb02a760de599cf8ac3245fbd22e428addc02acca1132ceb3dd2dd156d69e"
|
|
357
|
+
"sha256": "38ceb02a760de599cf8ac3245fbd22e428addc02acca1132ceb3dd2dd156d69e",
|
|
358
|
+
"tests": [
|
|
359
|
+
{
|
|
360
|
+
"id": "SSRF-001",
|
|
361
|
+
"title": "User-influenced server-side outbound request targets"
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"id": "SSRF-002",
|
|
365
|
+
"title": "Internal-target reachability (metadata/localhost/private CIDR)"
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"id": "SSRF-003",
|
|
369
|
+
"title": "Egress filter-bypass surface (redirects, encoding, DNS rebinding)"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"id": "SSRF-004",
|
|
373
|
+
"title": "Blind SSRF via out-of-band canary"
|
|
374
|
+
}
|
|
375
|
+
]
|
|
90
376
|
},
|
|
91
377
|
{
|
|
92
378
|
"id": "uploads",
|
|
93
379
|
"label": "File Upload",
|
|
94
380
|
"description": "Upload handling, storage, and downstream processing risk.",
|
|
95
381
|
"path": "scopes/uploads.md",
|
|
96
|
-
"sha256": "8dd281dadfb357f2b1e2becdbe0c56225b91d615ad474848b649f425e80ddec1"
|
|
382
|
+
"sha256": "8dd281dadfb357f2b1e2becdbe0c56225b91d615ad474848b649f425e80ddec1",
|
|
383
|
+
"tests": [
|
|
384
|
+
{
|
|
385
|
+
"id": "UPLOAD-001",
|
|
386
|
+
"title": "Server-side content-based file-type validation"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"id": "UPLOAD-002",
|
|
390
|
+
"title": "Upload storage location relative to the web root"
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"id": "UPLOAD-003",
|
|
394
|
+
"title": "Filename handling (path traversal, overwrite, encoding tricks)"
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"id": "UPLOAD-004",
|
|
398
|
+
"title": "Downstream parser exposure on uploaded content"
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"id": "UPLOAD-005",
|
|
402
|
+
"title": "Upload size/quantity limits and decompression amplification"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"id": "UPLOAD-006",
|
|
406
|
+
"title": "SVG/HTML upload leading to stored XSS when served inline"
|
|
407
|
+
}
|
|
408
|
+
]
|
|
97
409
|
},
|
|
98
410
|
{
|
|
99
411
|
"id": "frontend",
|
|
100
412
|
"label": "Frontend Security",
|
|
101
413
|
"description": "Client-side/browser security (XSS, CSP, postMessage, etc).",
|
|
102
414
|
"path": "scopes/frontend.md",
|
|
103
|
-
"sha256": "12ebe94f037059c29249fe7407979e29081e5d6ebc6d152450e28185a17d86fc"
|
|
415
|
+
"sha256": "12ebe94f037059c29249fe7407979e29081e5d6ebc6d152450e28185a17d86fc",
|
|
416
|
+
"tests": [
|
|
417
|
+
{
|
|
418
|
+
"id": "FRONTEND-001",
|
|
419
|
+
"title": "Cross-site scripting at DOM/HTML sinks"
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"id": "FRONTEND-002",
|
|
423
|
+
"title": "Content-Security-Policy strength and coverage"
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"id": "FRONTEND-003",
|
|
427
|
+
"title": "postMessage origin validation"
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"id": "FRONTEND-004",
|
|
431
|
+
"title": "Client-side storage of sensitive data"
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
"id": "FRONTEND-005",
|
|
435
|
+
"title": "Secrets/keys in the shipped frontend bundle"
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"id": "FRONTEND-006",
|
|
439
|
+
"title": "Clickjacking/framing controls and client-driven open redirects"
|
|
440
|
+
}
|
|
441
|
+
]
|
|
104
442
|
},
|
|
105
443
|
{
|
|
106
444
|
"id": "infra",
|
|
107
445
|
"label": "Infrastructure & IaC",
|
|
108
446
|
"description": "IaC misconfiguration, container hygiene, exposed management endpoints.",
|
|
109
447
|
"path": "scopes/infra.md",
|
|
110
|
-
"sha256": "ef414bd4033c9fd089a9e7b29f57a9eaecb07d32352305d580ffa82bea45b57a"
|
|
448
|
+
"sha256": "ef414bd4033c9fd089a9e7b29f57a9eaecb07d32352305d580ffa82bea45b57a",
|
|
449
|
+
"tests": [
|
|
450
|
+
{
|
|
451
|
+
"id": "INFRA-001",
|
|
452
|
+
"title": "IaC misconfiguration (network, IAM, storage, encryption)"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"id": "INFRA-002",
|
|
456
|
+
"title": "Container image and runtime hygiene"
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"id": "INFRA-003",
|
|
460
|
+
"title": "Exposed unauthenticated management/debug/actuator endpoints"
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
"id": "INFRA-004",
|
|
464
|
+
"title": "Kubernetes posture (privileged pods, network policy, RBAC)"
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"id": "INFRA-005",
|
|
468
|
+
"title": "CI/CD pipeline security (secrets, unpinned actions, deploy credentials)"
|
|
469
|
+
}
|
|
470
|
+
]
|
|
111
471
|
},
|
|
112
472
|
{
|
|
113
473
|
"id": "ai",
|
|
114
474
|
"label": "AI Surface Security",
|
|
115
475
|
"description": "LLM/agent-specific risks — prompt injection, tool misuse.",
|
|
116
476
|
"path": "scopes/ai.md",
|
|
117
|
-
"sha256": "388f41a43a185a7c522de3256e05f63f98e558dc621789bf0aa6bb960bc1d1fa"
|
|
477
|
+
"sha256": "388f41a43a185a7c522de3256e05f63f98e558dc621789bf0aa6bb960bc1d1fa",
|
|
478
|
+
"tests": [
|
|
479
|
+
{
|
|
480
|
+
"id": "AI-001",
|
|
481
|
+
"title": "Direct prompt injection"
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
"id": "AI-002",
|
|
485
|
+
"title": "Indirect / cross-domain prompt injection via retrieved content"
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"id": "AI-003",
|
|
489
|
+
"title": "System-prompt / tool-schema extraction"
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"id": "AI-004",
|
|
493
|
+
"title": "Excessive agency (unguarded side-effecting actions)"
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"id": "AI-005",
|
|
497
|
+
"title": "Insecure output handling"
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
"id": "AI-006",
|
|
501
|
+
"title": "Cross-tenant RAG leakage"
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
"id": "AI-007",
|
|
505
|
+
"title": "Denial-of-wallet via unbounded model spend"
|
|
506
|
+
}
|
|
507
|
+
]
|
|
118
508
|
}
|
|
119
509
|
],
|
|
120
510
|
"signature": {
|
|
121
511
|
"algorithm": "ed25519",
|
|
122
512
|
"key_id": "zivis-pack-prod-2026-08",
|
|
123
|
-
"signature": "
|
|
513
|
+
"signature": "q/n+xQgg+mxYRjggansXubKqTEMCJ9eJIpfb1EkE16FRtyNcWTgvHjG2vYpUyNuE2Ua3VRi7FW1Nc5d+vl2oDQ=="
|
|
124
514
|
}
|
|
125
515
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zivis/appsec-pack",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "ZIVIS AppSec testing methodology — public self-service pack consumed by `zivis test`. See methodology-packs/appsec/pack.yaml for the authoring source.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://zivis.ai",
|