@blamejs/exceptd-skills 0.16.16 → 0.16.17
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/AGENTS.md +2 -1
- package/CHANGELOG.md +4 -0
- package/README.md +5 -5
- package/bin/exceptd.js +2 -0
- package/data/_indexes/_meta.json +15 -14
- package/data/_indexes/activity-feed.json +10 -3
- package/data/_indexes/catalog-summaries.json +1 -1
- package/data/_indexes/chains.json +16829 -1572
- package/data/_indexes/currency.json +10 -1
- package/data/_indexes/frequency.json +79 -44
- package/data/_indexes/handoff-dag.json +5 -1
- package/data/_indexes/jurisdiction-map.json +6 -3
- package/data/_indexes/section-offsets.json +85 -0
- package/data/_indexes/stale-content.json +1 -1
- package/data/_indexes/summary-cards.json +41 -0
- package/data/_indexes/token-budget.json +53 -3
- package/data/_indexes/trigger-table.json +46 -0
- package/data/_indexes/xref.json +22 -0
- package/data/cwe-catalog.json +49 -2
- package/data/playbooks/crypto-codebase.json +31 -8
- package/data/playbooks/decompression-dos.json +626 -0
- package/data/playbooks/framework.json +1 -0
- package/manifest-snapshot.json +56 -2
- package/manifest-snapshot.sha256 +1 -1
- package/manifest.json +108 -50
- package/package.json +2 -2
- package/sbom.cdx.json +60 -30
- package/skills/decompression-dos/skill.md +83 -0
package/sbom.cdx.json
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.6",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:8d18b72c-cb47-426d-bcda-c48809ae85ac",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "
|
|
7
|
+
"timestamp": "2101-01-06T05:33:32.000Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "blamejs",
|
|
11
11
|
"name": "scripts/refresh-sbom.js",
|
|
12
|
-
"version": "0.16.
|
|
12
|
+
"version": "0.16.17"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"component": {
|
|
16
|
-
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.16.
|
|
16
|
+
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.16.17",
|
|
17
17
|
"type": "application",
|
|
18
18
|
"name": "@blamejs/exceptd-skills",
|
|
19
|
-
"version": "0.16.
|
|
20
|
-
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation.
|
|
19
|
+
"version": "0.16.17",
|
|
20
|
+
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 49 skills, 11 catalogs (439 CVEs / 176 CWEs / 805 ATT&CK + ICS / 170 ATLAS / 468 D3FEND / 8888 RFCs), 35 jurisdictions, 10-class catalog gap detector + budget gate, real XML parser + canonical-form diff + content-pattern regression detection, Ed25519-signed.",
|
|
21
21
|
"licenses": [
|
|
22
22
|
{
|
|
23
23
|
"license": {
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
],
|
|
28
|
-
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.16.
|
|
28
|
+
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.16.17",
|
|
29
29
|
"hashes": [
|
|
30
30
|
{
|
|
31
31
|
"alg": "SHA-256",
|
|
32
|
-
"content": "
|
|
32
|
+
"content": "956430b4033bf0be36d88f0f0feb2f233fc1d9d58444f914edeac5ea45e1a81d"
|
|
33
33
|
}
|
|
34
34
|
],
|
|
35
35
|
"externalReferences": [
|
|
36
36
|
{
|
|
37
37
|
"type": "distribution",
|
|
38
|
-
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.16.
|
|
38
|
+
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.16.17"
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"type": "vcs",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
"name": "exceptd:skill:count",
|
|
57
|
-
"value": "
|
|
57
|
+
"value": "49"
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
"name": "exceptd:integrity:method",
|
|
@@ -86,11 +86,11 @@
|
|
|
86
86
|
"hashes": [
|
|
87
87
|
{
|
|
88
88
|
"alg": "SHA-256",
|
|
89
|
-
"content": "
|
|
89
|
+
"content": "a2c4712be394f75a51d707e4e9b6e1ad13812d90cc2e64d4fe7bdec172d7d5ee"
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"alg": "SHA3-512",
|
|
93
|
-
"content": "
|
|
93
|
+
"content": "6f2a34e1f5a8d4a677605a29cb214b3b6bd6aaad1bb53cfdb81c7be8d7a94711769461becd0494b71c8ab9a6be946238104adf3cefe904e52088d7df5f42c2e9"
|
|
94
94
|
}
|
|
95
95
|
]
|
|
96
96
|
},
|
|
@@ -116,11 +116,11 @@
|
|
|
116
116
|
"hashes": [
|
|
117
117
|
{
|
|
118
118
|
"alg": "SHA-256",
|
|
119
|
-
"content": "
|
|
119
|
+
"content": "a7bd7077b36d8e4e769ab756f6d66de3621bd4e6642fbe738d6734d7bbc0e8a9"
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
"alg": "SHA3-512",
|
|
123
|
-
"content": "
|
|
123
|
+
"content": "21a9f1e1950d3e997adef582db4a36ca86b4a6d178f4a5104140345d2d0cb7a1e176e338424fa4873ad81e84ea7d4eecdb0047ff496a433c2283dd07ad89ee43"
|
|
124
124
|
}
|
|
125
125
|
]
|
|
126
126
|
},
|
|
@@ -176,11 +176,11 @@
|
|
|
176
176
|
"hashes": [
|
|
177
177
|
{
|
|
178
178
|
"alg": "SHA-256",
|
|
179
|
-
"content": "
|
|
179
|
+
"content": "39f76631b7601dd9843f138ca9fc3acc2321520973a5a6949eb4c107d4a27630"
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
"alg": "SHA3-512",
|
|
183
|
-
"content": "
|
|
183
|
+
"content": "76bb403641849041b610088e1011ff53d408444d9ba1ea977569321d1181acdcbb32e2dbf9a406e607e30634c7bd937401ea592d6a7261a9caa59497fd876d90"
|
|
184
184
|
}
|
|
185
185
|
]
|
|
186
186
|
},
|
|
@@ -281,11 +281,11 @@
|
|
|
281
281
|
"hashes": [
|
|
282
282
|
{
|
|
283
283
|
"alg": "SHA-256",
|
|
284
|
-
"content": "
|
|
284
|
+
"content": "358cb7123fe73316f4f60dee36ffee1648306859f9663639f028a1db72ba8107"
|
|
285
285
|
},
|
|
286
286
|
{
|
|
287
287
|
"alg": "SHA3-512",
|
|
288
|
-
"content": "
|
|
288
|
+
"content": "37dcf16d413d740e37d7cfc29431da7cbc3baab08a86e3851746151e8b25e0d14e969e88cb6fe95a78559713d856d9edd31676ee49cb8f4d3ccfb1c50445e9d2"
|
|
289
289
|
}
|
|
290
290
|
]
|
|
291
291
|
},
|
|
@@ -341,11 +341,11 @@
|
|
|
341
341
|
"hashes": [
|
|
342
342
|
{
|
|
343
343
|
"alg": "SHA-256",
|
|
344
|
-
"content": "
|
|
344
|
+
"content": "b786fc196243b7d4c3d1f035e0d5cfb55dad8db30c326649be3031facc7a3358"
|
|
345
345
|
},
|
|
346
346
|
{
|
|
347
347
|
"alg": "SHA3-512",
|
|
348
|
-
"content": "
|
|
348
|
+
"content": "eb57a22b882770d40b12b28d3902f580742024c6434212281711434e70b1c5ec86b84afcf4a77548342015f118c4cca40a3603a916f6ab746e110ed837faa620"
|
|
349
349
|
}
|
|
350
350
|
]
|
|
351
351
|
},
|
|
@@ -551,11 +551,11 @@
|
|
|
551
551
|
"hashes": [
|
|
552
552
|
{
|
|
553
553
|
"alg": "SHA-256",
|
|
554
|
-
"content": "
|
|
554
|
+
"content": "d89790d5c22f8c07fa5179431ff843ccffba1a4fc41a1b4f9d6e1b4beb9b3c0d"
|
|
555
555
|
},
|
|
556
556
|
{
|
|
557
557
|
"alg": "SHA3-512",
|
|
558
|
-
"content": "
|
|
558
|
+
"content": "0ead245a65ac5305fd611a6d5aeee12a3e0435254c76d5bbe2a62db9128c44c76337774d41ceeaa5c3b619eadfc86dc645ee33a7255515e24feecbf349c48a59"
|
|
559
559
|
}
|
|
560
560
|
]
|
|
561
561
|
},
|
|
@@ -574,6 +574,21 @@
|
|
|
574
574
|
}
|
|
575
575
|
]
|
|
576
576
|
},
|
|
577
|
+
{
|
|
578
|
+
"bom-ref": "file:data/playbooks/decompression-dos.json",
|
|
579
|
+
"type": "file",
|
|
580
|
+
"name": "data/playbooks/decompression-dos.json",
|
|
581
|
+
"hashes": [
|
|
582
|
+
{
|
|
583
|
+
"alg": "SHA-256",
|
|
584
|
+
"content": "8ddb14a525bed58fcbacd10c0ccfab096fd11772d77078dadfd4e43f6055dda7"
|
|
585
|
+
},
|
|
586
|
+
{
|
|
587
|
+
"alg": "SHA3-512",
|
|
588
|
+
"content": "068092f64dcd34576b0fb7ec3ebc1cedae8f98c991bb1190fea5fc1fa34c1de3d7e230b016a509fce30c4e53dda34c798cfd2b4f511a1a6d484e1ab29f1e3ebf"
|
|
589
|
+
}
|
|
590
|
+
]
|
|
591
|
+
},
|
|
577
592
|
{
|
|
578
593
|
"bom-ref": "file:data/playbooks/framework.json",
|
|
579
594
|
"type": "file",
|
|
@@ -581,11 +596,11 @@
|
|
|
581
596
|
"hashes": [
|
|
582
597
|
{
|
|
583
598
|
"alg": "SHA-256",
|
|
584
|
-
"content": "
|
|
599
|
+
"content": "ffefadc9227587d5ac2ca864c75e817e0b701a631616a5173321cce3065b480a"
|
|
585
600
|
},
|
|
586
601
|
{
|
|
587
602
|
"alg": "SHA3-512",
|
|
588
|
-
"content": "
|
|
603
|
+
"content": "824f9bfa20b9e70577f6755d56685803eebb40b9683b192d0a539198468f76b6847e8e47194452a64410e430b3e418e4fabf039f56a6213e2a8eebdef9bc1668"
|
|
589
604
|
}
|
|
590
605
|
]
|
|
591
606
|
},
|
|
@@ -1811,11 +1826,11 @@
|
|
|
1811
1826
|
"hashes": [
|
|
1812
1827
|
{
|
|
1813
1828
|
"alg": "SHA-256",
|
|
1814
|
-
"content": "
|
|
1829
|
+
"content": "af6f9c0b8f1276ef1cd33ce3eebef3154e945505b287d896c703dfa2c1af6396"
|
|
1815
1830
|
},
|
|
1816
1831
|
{
|
|
1817
1832
|
"alg": "SHA3-512",
|
|
1818
|
-
"content": "
|
|
1833
|
+
"content": "88d7e454148cbd61a9821d863f073a783978aec18fd93c49e3405802b9dcda30d877bc3cdc9e20f36866801b643cee58d97a209327176982b9e8434211b59c55"
|
|
1819
1834
|
}
|
|
1820
1835
|
]
|
|
1821
1836
|
},
|
|
@@ -1826,11 +1841,11 @@
|
|
|
1826
1841
|
"hashes": [
|
|
1827
1842
|
{
|
|
1828
1843
|
"alg": "SHA-256",
|
|
1829
|
-
"content": "
|
|
1844
|
+
"content": "4d7d636ad87d5da56f95f06c0925de1d8adc11ad1b9ccd6d5d7f81fc46a5ceb9"
|
|
1830
1845
|
},
|
|
1831
1846
|
{
|
|
1832
1847
|
"alg": "SHA3-512",
|
|
1833
|
-
"content": "
|
|
1848
|
+
"content": "ba35418839bcd69af47c0956e8b053be2dbb2b70ec7b0897fbe8dc2062d9ce09f7ec876f8da1c53734a9d8e86a1e511a9146dbf4a8b0d93e5a8f880b0c988f9c"
|
|
1834
1849
|
}
|
|
1835
1850
|
]
|
|
1836
1851
|
},
|
|
@@ -1841,11 +1856,11 @@
|
|
|
1841
1856
|
"hashes": [
|
|
1842
1857
|
{
|
|
1843
1858
|
"alg": "SHA-256",
|
|
1844
|
-
"content": "
|
|
1859
|
+
"content": "1bf6dd331b3a42de063b0045ac65ca50ca34609a829050b6754a95490221f310"
|
|
1845
1860
|
},
|
|
1846
1861
|
{
|
|
1847
1862
|
"alg": "SHA3-512",
|
|
1848
|
-
"content": "
|
|
1863
|
+
"content": "6cd43e1f08f91c8a58aaeac75622a084ebc3b0e371fc1f4e2b5e35cf109146984197704db0800405247bac5a4ce41c5f4dcd2f2e6fd4f842a610cf045e99d6cb"
|
|
1849
1864
|
}
|
|
1850
1865
|
]
|
|
1851
1866
|
},
|
|
@@ -2824,6 +2839,21 @@
|
|
|
2824
2839
|
}
|
|
2825
2840
|
]
|
|
2826
2841
|
},
|
|
2842
|
+
{
|
|
2843
|
+
"bom-ref": "file:skills/decompression-dos/skill.md",
|
|
2844
|
+
"type": "file",
|
|
2845
|
+
"name": "skills/decompression-dos/skill.md",
|
|
2846
|
+
"hashes": [
|
|
2847
|
+
{
|
|
2848
|
+
"alg": "SHA-256",
|
|
2849
|
+
"content": "53fd0a90ccc0e7ac6056e9c9fd40f3ab3342d30739399079b5e644eef6405d88"
|
|
2850
|
+
},
|
|
2851
|
+
{
|
|
2852
|
+
"alg": "SHA3-512",
|
|
2853
|
+
"content": "f8f1a70fc4ee809300c1b5da98548463d732f7a27b0e49d0776f197f4aefaf7d6106da411259c5bdea6a17d76c6b52579b58677bad05b312c622e7e83cf7b6ab"
|
|
2854
|
+
}
|
|
2855
|
+
]
|
|
2856
|
+
},
|
|
2827
2857
|
{
|
|
2828
2858
|
"bom-ref": "file:skills/defensive-countermeasure-mapping/skill.md",
|
|
2829
2859
|
"type": "file",
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: decompression-dos
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
description: Decompression-bomb, parser-DoS, and ReDoS resistance for mid-2026 — decompression size/ratio caps, Zip Slip path confinement, XML entity-expansion disabling, linear-time regex on untrusted input, parse-depth limits, and length-field allocation bounds against single-input amplification denial of service
|
|
5
|
+
triggers:
|
|
6
|
+
- decompression bomb
|
|
7
|
+
- zip bomb
|
|
8
|
+
- zip slip
|
|
9
|
+
- redos
|
|
10
|
+
- regular expression denial of service
|
|
11
|
+
- catastrophic backtracking
|
|
12
|
+
- billion laughs
|
|
13
|
+
- xml entity expansion
|
|
14
|
+
- xxe
|
|
15
|
+
- parser dos
|
|
16
|
+
- resource exhaustion
|
|
17
|
+
- amplification attack
|
|
18
|
+
- nested archive
|
|
19
|
+
- recursion depth
|
|
20
|
+
- length field allocation
|
|
21
|
+
- input amplification
|
|
22
|
+
discovery_mode: standalone
|
|
23
|
+
data_deps:
|
|
24
|
+
- cve-catalog.json
|
|
25
|
+
- atlas-ttps.json
|
|
26
|
+
- attack-techniques.json
|
|
27
|
+
- framework-control-gaps.json
|
|
28
|
+
- cwe-catalog.json
|
|
29
|
+
- rfc-references.json
|
|
30
|
+
atlas_refs: []
|
|
31
|
+
attack_refs:
|
|
32
|
+
- T1499
|
|
33
|
+
- T1499.001
|
|
34
|
+
- T1059
|
|
35
|
+
framework_gaps:
|
|
36
|
+
- NIST-800-53-SI-2
|
|
37
|
+
- NIS2-Art21-network-security
|
|
38
|
+
- UK-CAF-B4
|
|
39
|
+
- AU-ISM-1556
|
|
40
|
+
cwe_refs:
|
|
41
|
+
- CWE-409
|
|
42
|
+
- CWE-1333
|
|
43
|
+
- CWE-400
|
|
44
|
+
- CWE-776
|
|
45
|
+
- CWE-22
|
|
46
|
+
- CWE-834
|
|
47
|
+
- CWE-770
|
|
48
|
+
last_threat_review: "2026-06-02"
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
# Decompression-Bomb / Parser-DoS / ReDoS Resistance
|
|
52
|
+
|
|
53
|
+
## Threat Context (mid-2026)
|
|
54
|
+
|
|
55
|
+
Amplification denial of service turns a tiny, structurally-valid input into ruinous server work. A 42 KB zip bomb expands to petabytes; a few lines of nested XML entities expand to gigabytes (the billion-laughs attack); a crafted string pins a CPU core for seconds-to-minutes on a backtracking regular expression (ReDoS); a binary parser that reads a declared 2 GB length field allocates a 2 GB buffer from a 10-byte message. A Zip Slip archive entry named `../../x` escapes the extraction directory to overwrite a binary on the execution path. Input-format validation passes all of these because each input is valid — the amplification lives in how it is processed, not in its shape. The defence is a resource bound at the parser, not validation or autoscaling.
|
|
56
|
+
|
|
57
|
+
## Framework Lag Declaration
|
|
58
|
+
|
|
59
|
+
Organisational controls treat "we validate all input" and "the cloud autoscales" as denial-of-service protection. NIST 800-53 SI-10 (information input validation) is satisfied by validating format and does not require bounding decompression ratio, entity expansion, or regex complexity. SC-5 (denial-of-service protection) is framed at the network tier and is not operationalised for single-request, asymmetric application-layer DoS. A clean "we validate input / have a WAF / autoscale" audit is therefore NON-EVIDENCE for amplification-DoS resistance; it confirms format validation and elastic infra, not the decompression caps, entity disabling, regex-complexity bounds, parse-depth limits, and length-field allocation bounds that actually stop a single crafted input from exhausting the instance.
|
|
60
|
+
|
|
61
|
+
## TTP Mapping
|
|
62
|
+
|
|
63
|
+
The amplification-DoS failures map to MITRE ATT&CK: **T1499 (Endpoint Denial of Service)** for ReDoS and circuit-style resource exhaustion; **T1499.001 (OS Exhaustion Flood)** for decompression bombs, billion-laughs entity expansion, deep-recursion parsing, and length-field over-allocation that exhaust memory/CPU from a single input; and **T1059 (Command/Execution)** for Zip Slip path traversal that overwrites an executable or config to gain code execution. The weakness classes are CWE-409 (improper handling of highly compressed data), CWE-1333 (inefficient regular expression complexity / ReDoS), CWE-776 (XML entity expansion), CWE-834 (excessive iteration / unbounded recursion), CWE-22 (path traversal — Zip Slip), CWE-400 (uncontrolled resource consumption), and CWE-770 (allocation without limits).
|
|
64
|
+
|
|
65
|
+
## Exploit Availability Matrix
|
|
66
|
+
|
|
67
|
+
These are processing-bound gaps exploited by a single small input, so the exploit is the absent bound, not a published CVE. Zip bombs (42.zip), billion-laughs XML, and ReDoS strings are public, well-documented, and trivially reproduced; Zip Slip has public proof-of-concept archives. None require a network position beyond an endpoint that accepts an upload or a string. The real-world priority is set by whether the ingest is internet-facing and whether a single crafted input can exhaust the whole instance (one-shot DoS) or, for Zip Slip, write outside the extraction target — the latter escalating from DoS to arbitrary file write and code execution.
|
|
68
|
+
|
|
69
|
+
## Analysis Procedure
|
|
70
|
+
|
|
71
|
+
1. Enumerate every code path that decompresses an archive, parses XML/JSON/CBOR/protobuf/ASN.1/MIME, or applies a regex to attacker-suppliable input. 2. Confirm decompression caps total output size and per-entry ratio, and caps cumulative output + recursion depth for nested archives. 3. Confirm archive extraction normalises and confines each entry path within the target (Zip Slip). 4. Confirm the XML parser disables DTDs and external/general entities. 5. Confirm regexes on untrusted input are linear-time (RE2) or length-capped with no catastrophic-backtracking patterns. 6. Confirm structured parsers enforce a maximum nesting depth and validate declared length/count fields against remaining input before allocating. Run the `decompression-dos` playbook to execute these as detect indicators with false-positive checks, then score by internet-reachability and one-shot-exhaustion potential.
|
|
72
|
+
|
|
73
|
+
## Output Format
|
|
74
|
+
|
|
75
|
+
Report per parser/decompression path, marking each resource bound enforced / missing / inconclusive (visibility gap). For every missing bound, state whether the ingest is internet-facing and whether a single crafted input could exhaust the instance (or, for Zip Slip, write outside the target). Distinguish a bound enforced at a lower layer (streaming runtime, RE2 engine, size-limited proxy) from an absent one, and a path that ingests only trusted fixed-size input from one that ingests attacker input. Provide the prioritised remediation (cap decompression size/ratio/nesting, confine extraction paths, disable XML entities, bound regex complexity, limit parse depth + length-field allocation) and the negative validation tests (zip bomb rejected, Zip Slip rejected, billion-laughs rejected, ReDoS bounded) plus a functional test that legitimate inputs still parse.
|
|
76
|
+
|
|
77
|
+
## Compliance Theater Check
|
|
78
|
+
|
|
79
|
+
The recurring theater is "we validate all input, so malformed data is handled," "our WAF blocks malicious uploads," and "the service autoscales, so resource exhaustion is handled." Format validation does not bound amplification; a zip bomb and a ReDoS string are structurally valid and small, so a WAF rarely catches them; autoscaling pays for the amplification without stopping it. The distinguishing test: feed a zip bomb, a billion-laughs XML, and a ReDoS string. If any expands unbounded, pins a CPU, or allocates from a declared length, validation, the WAF, and autoscaling did not bound the amplification, and the assurance is paper.
|
|
80
|
+
|
|
81
|
+
## Defensive Countermeasure Mapping
|
|
82
|
+
|
|
83
|
+
Map findings to MITRE D3FEND: decompression size/ratio caps and length-field bounds realise Resource Consumption Limiting and Input-Size Restriction (countering T1499.001); XML entity disabling realises Document Parser Hardening (countering billion-laughs / XXE); linear-time regex realises Algorithmic-Complexity Limiting (countering ReDoS / T1499); extraction path confinement realises Path-Traversal Prevention (countering Zip Slip / T1059); parse-depth limits realise Recursion Bounding. Pair the static bounds with continuous coverage-guided fuzzing (the fuzz-testing-strategy skill) as the regression control for novel amplification inputs. The residual risk after bounding the known classes is an unforeseen pathological input, caught by the fuzzer rather than the caps, accepted at the CISO level.
|