@blamejs/exceptd-skills 0.16.17 → 0.16.18
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 -1
- 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 +10092 -616
- package/data/_indexes/currency.json +10 -1
- package/data/_indexes/frequency.json +95 -68
- 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 +39 -0
- package/data/_indexes/token-budget.json +53 -3
- package/data/_indexes/trigger-table.json +45 -0
- package/data/_indexes/xref.json +19 -3
- package/data/cwe-catalog.json +26 -1
- package/data/playbooks/audit-log-integrity.json +3 -0
- package/data/playbooks/framework.json +1 -0
- package/data/playbooks/log-injection-telemetry.json +619 -0
- package/data/playbooks/secrets.json +1 -0
- package/manifest-snapshot.json +53 -2
- package/manifest-snapshot.sha256 +1 -1
- package/manifest.json +106 -51
- package/package.json +2 -2
- package/sbom.cdx.json +62 -32
- package/skills/log-injection-telemetry/skill.md +80 -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:6c7238d3-3b76-45b0-a769-c339ae4e6bd7",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "
|
|
7
|
+
"timestamp": "2083-08-28T03:49:39.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.18"
|
|
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.18",
|
|
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.18",
|
|
20
|
+
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 50 skills, 11 catalogs (439 CVEs / 177 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.18",
|
|
29
29
|
"hashes": [
|
|
30
30
|
{
|
|
31
31
|
"alg": "SHA-256",
|
|
32
|
-
"content": "
|
|
32
|
+
"content": "0e20181565be6e9177ab95e6157883529660eb0b0542deb24b612fd270fe52f9"
|
|
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.18"
|
|
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": "50"
|
|
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": "8a446d298a41eacd959171a497d67f6f8f5902548cbf552b8840c14b3a3b37ba"
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"alg": "SHA3-512",
|
|
93
|
-
"content": "
|
|
93
|
+
"content": "69d82952344fadd98667fbf1680aa5696c79a7e79f69a833737ef4d8cc8076bddb09dacb62ffbe2c585ca6055259ce6a53868d38a8eeb3dbe1c008275e317245"
|
|
94
94
|
}
|
|
95
95
|
]
|
|
96
96
|
},
|
|
@@ -116,11 +116,11 @@
|
|
|
116
116
|
"hashes": [
|
|
117
117
|
{
|
|
118
118
|
"alg": "SHA-256",
|
|
119
|
-
"content": "
|
|
119
|
+
"content": "9a3d7f16071119255f5bfc892af21e9357770d177a71df8aff3052e30ce543f0"
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
"alg": "SHA3-512",
|
|
123
|
-
"content": "
|
|
123
|
+
"content": "cfbb10e0c10ff6ec6ef73342d90dae4b9bf9e7abbb4858e41cdd9a9ec0ef8b1ba0594b2d082eba9e3a5ae7c930c995c0361abc0667498b573f0e934f5678f13c"
|
|
124
124
|
}
|
|
125
125
|
]
|
|
126
126
|
},
|
|
@@ -176,11 +176,11 @@
|
|
|
176
176
|
"hashes": [
|
|
177
177
|
{
|
|
178
178
|
"alg": "SHA-256",
|
|
179
|
-
"content": "
|
|
179
|
+
"content": "ccad8930d48991c13579c7519033e58d333b2bff9787aed40636fe1a2aaad61a"
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
"alg": "SHA3-512",
|
|
183
|
-
"content": "
|
|
183
|
+
"content": "cd4421111c438bf97815873a138d5e1dba1d181b7fad8992c3b81bfb3f46379b3034ff59b4a3200850f83042b1236aa648bfae18635fd740fdd4409bcedcace9"
|
|
184
184
|
}
|
|
185
185
|
]
|
|
186
186
|
},
|
|
@@ -281,11 +281,11 @@
|
|
|
281
281
|
"hashes": [
|
|
282
282
|
{
|
|
283
283
|
"alg": "SHA-256",
|
|
284
|
-
"content": "
|
|
284
|
+
"content": "e0977976ace4e9ae498b2b7a4b3c943eb2fb2eedfb19983ae38d74e1eaf628d2"
|
|
285
285
|
},
|
|
286
286
|
{
|
|
287
287
|
"alg": "SHA3-512",
|
|
288
|
-
"content": "
|
|
288
|
+
"content": "fa48b90fb049a58fd21253b0d8ce1b82de21cb1e2a853a6e89b1ff68ac2a57f0c84738d9dc4a25edc2790890fd9b21f5a8af6f29de5169c480379496bcd32d58"
|
|
289
289
|
}
|
|
290
290
|
]
|
|
291
291
|
},
|
|
@@ -341,11 +341,11 @@
|
|
|
341
341
|
"hashes": [
|
|
342
342
|
{
|
|
343
343
|
"alg": "SHA-256",
|
|
344
|
-
"content": "
|
|
344
|
+
"content": "62d9e55c9f887047fd2781ba2e81ad98e3a08ab51e173d0cd3262aee3d5eb940"
|
|
345
345
|
},
|
|
346
346
|
{
|
|
347
347
|
"alg": "SHA3-512",
|
|
348
|
-
"content": "
|
|
348
|
+
"content": "20d9d6754c1967c017abea1e6f7c5d4c60acbb25bbfb9f80ae6b73aaf5d2d838cfb67df680ec9012867e04466ad56ba39e09375c1d0616c6e9b46d14b855d88a"
|
|
349
349
|
}
|
|
350
350
|
]
|
|
351
351
|
},
|
|
@@ -461,11 +461,11 @@
|
|
|
461
461
|
"hashes": [
|
|
462
462
|
{
|
|
463
463
|
"alg": "SHA-256",
|
|
464
|
-
"content": "
|
|
464
|
+
"content": "add0916cbecb3c4e0481a544ab1fc6d6b03627f6b2014a4165d28c5e55910cf3"
|
|
465
465
|
},
|
|
466
466
|
{
|
|
467
467
|
"alg": "SHA3-512",
|
|
468
|
-
"content": "
|
|
468
|
+
"content": "a513e1065f7c644b99eb31d8d08aa15dc3dbfce38ce0171ea121c9b9c96ed5d9086be8d6d0b096a0add570e471462c9587b46298aa9db3c9fb33a81d0d531b3a"
|
|
469
469
|
}
|
|
470
470
|
]
|
|
471
471
|
},
|
|
@@ -596,11 +596,11 @@
|
|
|
596
596
|
"hashes": [
|
|
597
597
|
{
|
|
598
598
|
"alg": "SHA-256",
|
|
599
|
-
"content": "
|
|
599
|
+
"content": "eae787bda27ade8c99e41de10181ffc8ef917661115066bb199cecc5b4a5dbf3"
|
|
600
600
|
},
|
|
601
601
|
{
|
|
602
602
|
"alg": "SHA3-512",
|
|
603
|
-
"content": "
|
|
603
|
+
"content": "0fbcbb7d77022fa4b7d57fdcc747d50d36d1c5403f7db18cfdb65fc491b5330c02a37e78ede6d61d37618b24ad72920e8fa7757cd3c321616503c366cb19b098"
|
|
604
604
|
}
|
|
605
605
|
]
|
|
606
606
|
},
|
|
@@ -694,6 +694,21 @@
|
|
|
694
694
|
}
|
|
695
695
|
]
|
|
696
696
|
},
|
|
697
|
+
{
|
|
698
|
+
"bom-ref": "file:data/playbooks/log-injection-telemetry.json",
|
|
699
|
+
"type": "file",
|
|
700
|
+
"name": "data/playbooks/log-injection-telemetry.json",
|
|
701
|
+
"hashes": [
|
|
702
|
+
{
|
|
703
|
+
"alg": "SHA-256",
|
|
704
|
+
"content": "bf1e61d9bba54722e466d6e2d186137337379c148c82e06380dae24f24a1008b"
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
"alg": "SHA3-512",
|
|
708
|
+
"content": "09b0cc1faee50235b7d0d5d2f42f25dbbf288f1ed5310d3bb5660a2b2cefd3b868a506c30335e6b7ab3f2a4b1927b468d1c83c0388607f56aacef0639c70ea8d"
|
|
709
|
+
}
|
|
710
|
+
]
|
|
711
|
+
},
|
|
697
712
|
{
|
|
698
713
|
"bom-ref": "file:data/playbooks/mail-server-hardening.json",
|
|
699
714
|
"type": "file",
|
|
@@ -821,11 +836,11 @@
|
|
|
821
836
|
"hashes": [
|
|
822
837
|
{
|
|
823
838
|
"alg": "SHA-256",
|
|
824
|
-
"content": "
|
|
839
|
+
"content": "468a961bf742b16acc2b0b33836d2c23cab00a137a24f52b6f3c38b10cb8e9de"
|
|
825
840
|
},
|
|
826
841
|
{
|
|
827
842
|
"alg": "SHA3-512",
|
|
828
|
-
"content": "
|
|
843
|
+
"content": "4ce105608fefd603bb493ad2d02c24279110c39011b5392cf2f218c2db2fbc22c86e3a3d1de24af3bc6319447599557df88be6c728cf8f81af86ad028458f58a"
|
|
829
844
|
}
|
|
830
845
|
]
|
|
831
846
|
},
|
|
@@ -1826,11 +1841,11 @@
|
|
|
1826
1841
|
"hashes": [
|
|
1827
1842
|
{
|
|
1828
1843
|
"alg": "SHA-256",
|
|
1829
|
-
"content": "
|
|
1844
|
+
"content": "0a7aeedea3de4627ed5e602ad12f7ca954c29dffed57a4d7ba57f0af72410fba"
|
|
1830
1845
|
},
|
|
1831
1846
|
{
|
|
1832
1847
|
"alg": "SHA3-512",
|
|
1833
|
-
"content": "
|
|
1848
|
+
"content": "12838d29a8aac5fa30d23b143815362bb8852e8f3621252bf15d0eaf774f37edd4c6616f6400e66c719330605cf36e48ee5c3e7ff7960b04b7ddae70f7596983"
|
|
1834
1849
|
}
|
|
1835
1850
|
]
|
|
1836
1851
|
},
|
|
@@ -1841,11 +1856,11 @@
|
|
|
1841
1856
|
"hashes": [
|
|
1842
1857
|
{
|
|
1843
1858
|
"alg": "SHA-256",
|
|
1844
|
-
"content": "
|
|
1859
|
+
"content": "26beb1496ee222282f6c864e802848d8c9d5b4090488ee62f5f7aa2890840494"
|
|
1845
1860
|
},
|
|
1846
1861
|
{
|
|
1847
1862
|
"alg": "SHA3-512",
|
|
1848
|
-
"content": "
|
|
1863
|
+
"content": "67abe106be4853460aa184d0a19821438db687b80a774bda7b4dfb6d4c0392192c75b59593c1d09930629512b52c475d85297f0571b2e2614fc2af5211b1d957"
|
|
1849
1864
|
}
|
|
1850
1865
|
]
|
|
1851
1866
|
},
|
|
@@ -1856,11 +1871,11 @@
|
|
|
1856
1871
|
"hashes": [
|
|
1857
1872
|
{
|
|
1858
1873
|
"alg": "SHA-256",
|
|
1859
|
-
"content": "
|
|
1874
|
+
"content": "2833faf5965d078166553874a1bf42b944e2ff4d1738eddf50806eaba56e1eb7"
|
|
1860
1875
|
},
|
|
1861
1876
|
{
|
|
1862
1877
|
"alg": "SHA3-512",
|
|
1863
|
-
"content": "
|
|
1878
|
+
"content": "e548f6dc97746b9f842e0e3a5567b5eb42bd19cf6eae31b4817029514b0e842047c84c6c5d62d5667e80a03757230ce0e10778980bd9a1ec991e9dc9444a264d"
|
|
1864
1879
|
}
|
|
1865
1880
|
]
|
|
1866
1881
|
},
|
|
@@ -3019,6 +3034,21 @@
|
|
|
3019
3034
|
}
|
|
3020
3035
|
]
|
|
3021
3036
|
},
|
|
3037
|
+
{
|
|
3038
|
+
"bom-ref": "file:skills/log-injection-telemetry/skill.md",
|
|
3039
|
+
"type": "file",
|
|
3040
|
+
"name": "skills/log-injection-telemetry/skill.md",
|
|
3041
|
+
"hashes": [
|
|
3042
|
+
{
|
|
3043
|
+
"alg": "SHA-256",
|
|
3044
|
+
"content": "69c4e65c6f78703b923c2455a5ecf5a6d79fcc28d56fff57acb2605639231104"
|
|
3045
|
+
},
|
|
3046
|
+
{
|
|
3047
|
+
"alg": "SHA3-512",
|
|
3048
|
+
"content": "5bc5fb49f8c899647a1dea53c657f96a712b7c1e2dc20416152a3a28a9573fd46201310514f4c64c0495519bf24247477fff59083e7f920dfe7ea77bfa2ff8d6"
|
|
3049
|
+
}
|
|
3050
|
+
]
|
|
3051
|
+
},
|
|
3022
3052
|
{
|
|
3023
3053
|
"bom-ref": "file:skills/mail-server-hardening/skill.md",
|
|
3024
3054
|
"type": "file",
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: log-injection-telemetry
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
description: Telemetry-pipeline integrity for mid-2026 — CR/LF log-injection neutralization across every sink, secret/PII redaction before shipping, authenticated metrics endpoints, and exporter destination allowlisting, secret-store credentials, verified TLS, and webhook SSRF guarding
|
|
5
|
+
triggers:
|
|
6
|
+
- log injection
|
|
7
|
+
- crlf injection
|
|
8
|
+
- log forging
|
|
9
|
+
- telemetry integrity
|
|
10
|
+
- secrets in logs
|
|
11
|
+
- log redaction
|
|
12
|
+
- metrics endpoint exposure
|
|
13
|
+
- prometheus exposure
|
|
14
|
+
- otlp exporter
|
|
15
|
+
- cloudwatch
|
|
16
|
+
- webhook sink
|
|
17
|
+
- exporter ssrf
|
|
18
|
+
- observability security
|
|
19
|
+
- log sink
|
|
20
|
+
- telemetry exfiltration
|
|
21
|
+
discovery_mode: standalone
|
|
22
|
+
data_deps:
|
|
23
|
+
- cve-catalog.json
|
|
24
|
+
- atlas-ttps.json
|
|
25
|
+
- attack-techniques.json
|
|
26
|
+
- framework-control-gaps.json
|
|
27
|
+
- cwe-catalog.json
|
|
28
|
+
- rfc-references.json
|
|
29
|
+
atlas_refs: []
|
|
30
|
+
attack_refs:
|
|
31
|
+
- T1565.001
|
|
32
|
+
- T1530
|
|
33
|
+
- T1213
|
|
34
|
+
framework_gaps:
|
|
35
|
+
- NIST-800-53-SI-2
|
|
36
|
+
- ISO-27001-2022-A.8.15
|
|
37
|
+
- NIS2-Art21-network-security
|
|
38
|
+
- UK-CAF-B4
|
|
39
|
+
- AU-ISM-1556
|
|
40
|
+
cwe_refs:
|
|
41
|
+
- CWE-117
|
|
42
|
+
- CWE-532
|
|
43
|
+
- CWE-918
|
|
44
|
+
- CWE-200
|
|
45
|
+
last_threat_review: "2026-06-02"
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
# Telemetry-Pipeline Integrity (Log Injection + Sink Confidentiality)
|
|
49
|
+
|
|
50
|
+
## Threat Context (mid-2026)
|
|
51
|
+
|
|
52
|
+
The telemetry pipeline is both an integrity target and a confidentiality leak that "we centralize all logs" does not address. Integrity: un-sanitized CR/LF in interpolated log values lets an attacker forge or split log entries — injecting fake lines, breaking the log parser, or hiding their own actions — corrupting the observability record incident response depends on. Confidentiality: secrets and PII logged without a redaction pass persist in every downstream sink (SIEM, cloud log service); an unauthenticated /metrics or debug endpoint leaks internal topology and operational state; exporters (OTLP, CloudWatch, webhook) that ship to un-inventoried or input-derived destinations become exfiltration and SSRF channels; embedded sink credentials and plaintext export widen the exposure. These are pipeline-posture gaps, not log-volume gaps.
|
|
53
|
+
|
|
54
|
+
## Framework Lag Declaration
|
|
55
|
+
|
|
56
|
+
Organisational logging controls require events be recorded, centralized, and access-controlled. NIST 800-53 AU-9 (protection of audit information) is attested by access controls on the log store and does not address CR/LF log injection that forges entries before they reach the store. SI-11 (error handling / output neutralization) is named generally but not operationalised as per-sink CR/LF neutralization or secret redaction. ISO 27001 A.8.15 is met with "we log and protect logs." None address telemetry-exporter egress, SSRF, or unauthenticated metrics. A clean "we centralize logs to a SIEM with access controls" audit is therefore NON-EVIDENCE for telemetry-pipeline integrity; it confirms log presence and store ACLs, not neutralization, redaction, metrics auth, or exporter posture.
|
|
57
|
+
|
|
58
|
+
## TTP Mapping
|
|
59
|
+
|
|
60
|
+
The telemetry-pipeline failures map to MITRE ATT&CK: **T1565.001 (Stored Data Manipulation)** for CR/LF log forging that rewrites or splits the audit record; **T1530 (Data from Cloud Storage / shipped telemetry)** for secrets/PII leaking through logs, exporter exfiltration, and webhook-sink SSRF reaching internal services; and **T1213 (Data from Information Repositories)** for an unauthenticated metrics/debug endpoint disclosing internal state. The weakness classes are CWE-117 (improper output neutralization for logs — log injection), CWE-532 (insertion of sensitive information into log files), CWE-918 (server-side request forgery — exporter/webhook egress), and CWE-200 (exposure of sensitive information — unauthenticated metrics).
|
|
61
|
+
|
|
62
|
+
## Exploit Availability Matrix
|
|
63
|
+
|
|
64
|
+
These are pipeline-posture gaps, so the exploit is the absent control. CR/LF log injection requires only a request field that reaches a line-oriented sink un-neutralized — trivially reproduced. Secrets in logs are harvested wherever the logs land. An unauthenticated /metrics is a single unauthenticated GET. A webhook sink pointed at the cloud metadata endpoint is an SSRF with commodity payloads. The real-world priority is set by whether secrets/PII leak across every downstream sink (credential/PII breach), whether the audit record can be forged (defeating incident response), or whether the telemetry process can be turned into an SSRF channel to the internal network or metadata service.
|
|
65
|
+
|
|
66
|
+
## Analysis Procedure
|
|
67
|
+
|
|
68
|
+
1. Enumerate every log/trace/metric sink and exporter, and every metrics/debug endpoint. 2. Confirm each sink neutralizes CR/LF + control characters in interpolated values (or uses a structured format that cannot be line-split) — note any sink other than syslog that does not. 3. Confirm a redaction pass strips secrets/PII before values reach any sink. 4. Confirm metrics/debug endpoints require authentication or are bound to a private scrape network. 5. Confirm exporter destinations are an inventoried allowlist (not input-derived), credentials come from a secret store, and export uses verified TLS. 6. Confirm webhook sinks allowlist their URL and refuse private/link-local/metadata addresses. Run the `log-injection-telemetry` playbook to execute these as detect indicators with false-positive checks, then score by leakage breadth, audit-record corruptibility, and SSRF reach.
|
|
69
|
+
|
|
70
|
+
## Output Format
|
|
71
|
+
|
|
72
|
+
Report per sink/exporter/endpoint, marking each control enforced / missing / inconclusive (visibility gap). For every missing control, state whether it leaks secrets/PII across sinks, allows forging the audit record, or enables exfil/SSRF from the telemetry process, and whether the surface is internet-reachable. Distinguish a control enforced at a lower layer (a sanitizing collector/sidecar, a private scrape network) from an absent one. Provide the prioritised remediation (neutralize CR/LF + redact per sink, authenticate/private metrics, allowlist exporters with secret-store credentials over verified TLS, SSRF-guard webhook sinks) and the negative validation tests (CR/LF neutralized, secret redacted, metrics requires auth, webhook SSRF blocked) plus a functional test that legitimate telemetry still flows.
|
|
73
|
+
|
|
74
|
+
## Compliance Theater Check
|
|
75
|
+
|
|
76
|
+
The recurring theater is "we centralize all logs to a SIEM, so logging is handled," "the log store has access controls, so logs are protected," and "our metrics are internal-only." Centralization is not integrity or confidentiality; store ACLs do not stop injection at write time; an "internal" /metrics is often reachable via a default all-interfaces bind or an exposed ingress. The distinguishing test: inject CR/LF into a logged value and check for a forged line; log a secret and check redaction; reach /metrics unauthenticated; inspect exporter destinations, credentials, and TLS. If forging, secret leakage, or exfil/SSRF succeeds, centralization did not protect the pipeline and the assurance is paper.
|
|
77
|
+
|
|
78
|
+
## Defensive Countermeasure Mapping
|
|
79
|
+
|
|
80
|
+
Map findings to MITRE D3FEND: per-sink CR/LF neutralization realises Message Encoding / Output Neutralization (countering T1565.001 log forging); secret/PII redaction realises Sensitive-Data Scrubbing (countering T1530 leakage); metrics-endpoint authentication realises Network Traffic Filtering and Authentication Enforcement (countering T1213 disclosure); exporter destination allowlisting, secret-store credentials, verified TLS, and webhook SSRF guards realise Outbound Traffic Filtering and Resolution-Trust (countering T1530 exfil / SSRF). Pair the redaction pass with the dlp-gap-analysis skill for the broader data-egress picture, without duplicating its LLM/RAG focus. The residual risk is the inherent sensitivity of telemetry held in a legitimate access-controlled store, accepted at the CISO level.
|