@blamejs/exceptd-skills 0.16.11 → 0.16.13
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 +3 -1
- package/CHANGELOG.md +8 -0
- package/README.md +5 -5
- package/bin/exceptd.js +3 -1
- package/data/_indexes/_meta.json +17 -15
- package/data/_indexes/activity-feed.json +16 -2
- package/data/_indexes/chains.json +22041 -1957
- package/data/_indexes/currency.json +19 -1
- package/data/_indexes/frequency.json +137 -68
- package/data/_indexes/handoff-dag.json +9 -1
- package/data/_indexes/jurisdiction-map.json +9 -4
- package/data/_indexes/section-offsets.json +170 -0
- package/data/_indexes/stale-content.json +1 -1
- package/data/_indexes/summary-cards.json +78 -0
- package/data/_indexes/token-budget.json +103 -3
- package/data/_indexes/trigger-table.json +105 -0
- package/data/_indexes/xref.json +46 -4
- package/data/cwe-catalog.json +19 -4
- package/data/playbooks/crypto.json +18 -5
- package/data/playbooks/framework.json +2 -0
- package/data/playbooks/mail-server-hardening.json +700 -0
- package/data/playbooks/network-trust.json +646 -0
- package/data/playbooks/secrets.json +19 -3
- package/manifest-snapshot.json +109 -2
- package/manifest-snapshot.sha256 +1 -1
- package/manifest.json +160 -45
- package/package.json +2 -2
- package/sbom.cdx.json +92 -32
- package/skills/mail-server-hardening/skill.md +84 -0
- package/skills/network-trust/skill.md +81 -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:99237bc9-4dbd-43d8-ac39-1814c14a92f2",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "
|
|
7
|
+
"timestamp": "2107-06-02T13:38:17.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.13"
|
|
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.13",
|
|
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.13",
|
|
20
|
+
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 45 skills, 11 catalogs (439 CVEs / 174 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.13",
|
|
29
29
|
"hashes": [
|
|
30
30
|
{
|
|
31
31
|
"alg": "SHA-256",
|
|
32
|
-
"content": "
|
|
32
|
+
"content": "9b5f97cc70b127ed83de1386a5636c0cee439b858d106753854d2721bba97db7"
|
|
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.13"
|
|
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": "45"
|
|
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": "73ea9257ed2799e6c6a69b89a7d7a44a0d6f5e7a647a538af4666ff68091684f"
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"alg": "SHA3-512",
|
|
93
|
-
"content": "
|
|
93
|
+
"content": "43b7a008a7f91aa03c138c0ceb5caaf24d398c681f87cdcbd85fa8555c71ff905ef89555cd991171a156c6e706a2f39971d63a466874fb234bf03cf44a836140"
|
|
94
94
|
}
|
|
95
95
|
]
|
|
96
96
|
},
|
|
@@ -116,11 +116,11 @@
|
|
|
116
116
|
"hashes": [
|
|
117
117
|
{
|
|
118
118
|
"alg": "SHA-256",
|
|
119
|
-
"content": "
|
|
119
|
+
"content": "0cf3816a29019ecd7684c069258212741fdb5d0e512dd9be6a73a4360f993ab8"
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
"alg": "SHA3-512",
|
|
123
|
-
"content": "
|
|
123
|
+
"content": "8660524b92d196733cfe77fde02c86497b148cde76ec8d905e927e27e303525aab05ceed51ce52f6ece9465bc2ce39129d41de9b89c7d7a930d11a76e7598faf"
|
|
124
124
|
}
|
|
125
125
|
]
|
|
126
126
|
},
|
|
@@ -176,11 +176,11 @@
|
|
|
176
176
|
"hashes": [
|
|
177
177
|
{
|
|
178
178
|
"alg": "SHA-256",
|
|
179
|
-
"content": "
|
|
179
|
+
"content": "854327a98921cc47b5c6f6ede0d8b2c5c234007bfd8f9cec0030d50b36b7ae6e"
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
"alg": "SHA3-512",
|
|
183
|
-
"content": "
|
|
183
|
+
"content": "b3243ff29c9c0f087004f124cd757a5c52af87e0e60881995112f811257617912fa91cda47faed79b50ad14787fc930b8f925a048b5b98c8cc2c7c86b5ee6cb4"
|
|
184
184
|
}
|
|
185
185
|
]
|
|
186
186
|
},
|
|
@@ -281,11 +281,11 @@
|
|
|
281
281
|
"hashes": [
|
|
282
282
|
{
|
|
283
283
|
"alg": "SHA-256",
|
|
284
|
-
"content": "
|
|
284
|
+
"content": "8461d00161d7285947e6faf3433966b4d09dd5a9e26106b46ee4d07875bdf66c"
|
|
285
285
|
},
|
|
286
286
|
{
|
|
287
287
|
"alg": "SHA3-512",
|
|
288
|
-
"content": "
|
|
288
|
+
"content": "886f8484598fb0927b3b897eb804b919a6a151ef4843ce572d8fa7f9974a0df6163a1ee5d42c1fbe29f1e413b0f352d8e3e81ac1845623ff2f5a19f746c208b7"
|
|
289
289
|
}
|
|
290
290
|
]
|
|
291
291
|
},
|
|
@@ -341,11 +341,11 @@
|
|
|
341
341
|
"hashes": [
|
|
342
342
|
{
|
|
343
343
|
"alg": "SHA-256",
|
|
344
|
-
"content": "
|
|
344
|
+
"content": "91d29027802d04bfd20f0ffd41c13f529f8bc005af50847832d5960c5a11fbf6"
|
|
345
345
|
},
|
|
346
346
|
{
|
|
347
347
|
"alg": "SHA3-512",
|
|
348
|
-
"content": "
|
|
348
|
+
"content": "f93348d5b0d59e135a047f7cae4edf5ed4bcb94b630c4225046ca7640a08f7b716b7ce4a45671e61870a68d3c3f8c5c8aadc0949eacf013b7a0247f0cb8110d7"
|
|
349
349
|
}
|
|
350
350
|
]
|
|
351
351
|
},
|
|
@@ -551,11 +551,11 @@
|
|
|
551
551
|
"hashes": [
|
|
552
552
|
{
|
|
553
553
|
"alg": "SHA-256",
|
|
554
|
-
"content": "
|
|
554
|
+
"content": "1f5f749e6fbf82fedef78789dd90ead2bb5bb159a2c7723f67f26d977b4f1108"
|
|
555
555
|
},
|
|
556
556
|
{
|
|
557
557
|
"alg": "SHA3-512",
|
|
558
|
-
"content": "
|
|
558
|
+
"content": "6d425bc941f84d430392daad961ddba8f6d8c7fb1082fd8f117c3d3af6c8b8b0ab1e3b96ff86aaa5f8d1b2bc6dae19a517c90d78bafb092a8d70dc990efabfcc"
|
|
559
559
|
}
|
|
560
560
|
]
|
|
561
561
|
},
|
|
@@ -566,11 +566,11 @@
|
|
|
566
566
|
"hashes": [
|
|
567
567
|
{
|
|
568
568
|
"alg": "SHA-256",
|
|
569
|
-
"content": "
|
|
569
|
+
"content": "5e6c511625e5f87f267eae4ac95999082cd83a962c8f9d7e028f18973501bce8"
|
|
570
570
|
},
|
|
571
571
|
{
|
|
572
572
|
"alg": "SHA3-512",
|
|
573
|
-
"content": "
|
|
573
|
+
"content": "15be64ac6bb7826f0976eb24bb3fbe12e1766b4f28200bfd375f6459d8d6598fab809a7a59ba1a4707de14f4f7affcdcd4c1467d399d584f4f7c8bbba74be9d7"
|
|
574
574
|
}
|
|
575
575
|
]
|
|
576
576
|
},
|
|
@@ -664,6 +664,21 @@
|
|
|
664
664
|
}
|
|
665
665
|
]
|
|
666
666
|
},
|
|
667
|
+
{
|
|
668
|
+
"bom-ref": "file:data/playbooks/mail-server-hardening.json",
|
|
669
|
+
"type": "file",
|
|
670
|
+
"name": "data/playbooks/mail-server-hardening.json",
|
|
671
|
+
"hashes": [
|
|
672
|
+
{
|
|
673
|
+
"alg": "SHA-256",
|
|
674
|
+
"content": "7fe2cdf5257f84561a4e88553b3274eb6aab20543affa36d29686b7ba1ef2abb"
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
"alg": "SHA3-512",
|
|
678
|
+
"content": "e77daa000cb93d3a93604cfa14f6c5f5d0dfdff4f54f5985c74717424e476bb5b550c6a781a79f8847d17a1346e42aeb4ba44b53149889a53fa7d907168fb8f7"
|
|
679
|
+
}
|
|
680
|
+
]
|
|
681
|
+
},
|
|
667
682
|
{
|
|
668
683
|
"bom-ref": "file:data/playbooks/mcp.json",
|
|
669
684
|
"type": "file",
|
|
@@ -679,6 +694,21 @@
|
|
|
679
694
|
}
|
|
680
695
|
]
|
|
681
696
|
},
|
|
697
|
+
{
|
|
698
|
+
"bom-ref": "file:data/playbooks/network-trust.json",
|
|
699
|
+
"type": "file",
|
|
700
|
+
"name": "data/playbooks/network-trust.json",
|
|
701
|
+
"hashes": [
|
|
702
|
+
{
|
|
703
|
+
"alg": "SHA-256",
|
|
704
|
+
"content": "505f79dadc74157569171129ddf8e9fceb7313c80c07fa7ebc444cceb6c52375"
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
"alg": "SHA3-512",
|
|
708
|
+
"content": "25f6c2c90ada920bf7586e496c728b11c3a48dbaa805f37a3d678508e551160ea2e19044e3e7bfc50062aad6523ab68fe5305b78f3f24889f2e0f3de780a8902"
|
|
709
|
+
}
|
|
710
|
+
]
|
|
711
|
+
},
|
|
682
712
|
{
|
|
683
713
|
"bom-ref": "file:data/playbooks/post-quantum-migration.json",
|
|
684
714
|
"type": "file",
|
|
@@ -746,11 +776,11 @@
|
|
|
746
776
|
"hashes": [
|
|
747
777
|
{
|
|
748
778
|
"alg": "SHA-256",
|
|
749
|
-
"content": "
|
|
779
|
+
"content": "1bca35c4d562eb32bf3893b3e978396fad102bdb9e2a2b28189f8940ff3e7a56"
|
|
750
780
|
},
|
|
751
781
|
{
|
|
752
782
|
"alg": "SHA3-512",
|
|
753
|
-
"content": "
|
|
783
|
+
"content": "239148333b803245899425506b76255cfd0327bda7e0339905c62d599f59ede8cfacc37e4f75cecf5c0a8dc9f3122ce010d4bc1b409928bc1198e7e634ba545d"
|
|
754
784
|
}
|
|
755
785
|
]
|
|
756
786
|
},
|
|
@@ -1736,11 +1766,11 @@
|
|
|
1736
1766
|
"hashes": [
|
|
1737
1767
|
{
|
|
1738
1768
|
"alg": "SHA-256",
|
|
1739
|
-
"content": "
|
|
1769
|
+
"content": "01d04f338bc17fbb0ed099faf0da62eefc9022888f2474171b587e614eab3255"
|
|
1740
1770
|
},
|
|
1741
1771
|
{
|
|
1742
1772
|
"alg": "SHA3-512",
|
|
1743
|
-
"content": "
|
|
1773
|
+
"content": "bc5f3606a4398b42c41b527f5137360a08dc760658c85dee9866bb2c6ac3585a53fed8002194d15ed2c22feb3adf575a807abf22a0c5546ec1a51521a8e7fffb"
|
|
1744
1774
|
}
|
|
1745
1775
|
]
|
|
1746
1776
|
},
|
|
@@ -1751,11 +1781,11 @@
|
|
|
1751
1781
|
"hashes": [
|
|
1752
1782
|
{
|
|
1753
1783
|
"alg": "SHA-256",
|
|
1754
|
-
"content": "
|
|
1784
|
+
"content": "c3408c1564ddaf9815fdb31956e1821ece71ce2d6d903c8bacf272021b45bdbc"
|
|
1755
1785
|
},
|
|
1756
1786
|
{
|
|
1757
1787
|
"alg": "SHA3-512",
|
|
1758
|
-
"content": "
|
|
1788
|
+
"content": "e70da6249208be2a670131b731e610e9b6497e26e56b00d7fa58d3c0535a0b749842551dfb6e9e62ac0a4fa7eed02979b0009b38ff7447f7c761b766aa4c0aa2"
|
|
1759
1789
|
}
|
|
1760
1790
|
]
|
|
1761
1791
|
},
|
|
@@ -1766,11 +1796,11 @@
|
|
|
1766
1796
|
"hashes": [
|
|
1767
1797
|
{
|
|
1768
1798
|
"alg": "SHA-256",
|
|
1769
|
-
"content": "
|
|
1799
|
+
"content": "1aa03bd9897ddbaefef7593f21f0683e5cfb97b3d45e4d062880c7f1f9bed36d"
|
|
1770
1800
|
},
|
|
1771
1801
|
{
|
|
1772
1802
|
"alg": "SHA3-512",
|
|
1773
|
-
"content": "
|
|
1803
|
+
"content": "3936d8b66e2a7a0b854d2739ebb7bff2a0f1dac1455008d8afaa4d5cc644e72fa67298fe00abedbb4d8a9bb40a691c389ff3cc2e4b55ecabe1da27ee6ed5b25a"
|
|
1774
1804
|
}
|
|
1775
1805
|
]
|
|
1776
1806
|
},
|
|
@@ -2899,6 +2929,21 @@
|
|
|
2899
2929
|
}
|
|
2900
2930
|
]
|
|
2901
2931
|
},
|
|
2932
|
+
{
|
|
2933
|
+
"bom-ref": "file:skills/mail-server-hardening/skill.md",
|
|
2934
|
+
"type": "file",
|
|
2935
|
+
"name": "skills/mail-server-hardening/skill.md",
|
|
2936
|
+
"hashes": [
|
|
2937
|
+
{
|
|
2938
|
+
"alg": "SHA-256",
|
|
2939
|
+
"content": "0554e23457851ac1cdb3b8217fae902789798db1bbc67c5f4cf1df6fd265cf15"
|
|
2940
|
+
},
|
|
2941
|
+
{
|
|
2942
|
+
"alg": "SHA3-512",
|
|
2943
|
+
"content": "d5768c68a3479cd0f8f9b9aad60422805fb03e3de022829f7a4f6794c8d6d0a78daaf36f7f72c840add8021d2299d5133310268f671b04db1df9040d4e1af1e9"
|
|
2944
|
+
}
|
|
2945
|
+
]
|
|
2946
|
+
},
|
|
2902
2947
|
{
|
|
2903
2948
|
"bom-ref": "file:skills/mcp-agent-trust/skill.md",
|
|
2904
2949
|
"type": "file",
|
|
@@ -2929,6 +2974,21 @@
|
|
|
2929
2974
|
}
|
|
2930
2975
|
]
|
|
2931
2976
|
},
|
|
2977
|
+
{
|
|
2978
|
+
"bom-ref": "file:skills/network-trust/skill.md",
|
|
2979
|
+
"type": "file",
|
|
2980
|
+
"name": "skills/network-trust/skill.md",
|
|
2981
|
+
"hashes": [
|
|
2982
|
+
{
|
|
2983
|
+
"alg": "SHA-256",
|
|
2984
|
+
"content": "d1c2fd6ce0bd74e508a41a61c8618cc5c979eaea2702ca97003ce46ba8c9dfa8"
|
|
2985
|
+
},
|
|
2986
|
+
{
|
|
2987
|
+
"alg": "SHA3-512",
|
|
2988
|
+
"content": "b1fd259f983b2bad0ce44290f12f6712f786aa8db7ef3fbab9db1c95b3b16fb9a151d7ccfc509e144dc311fa66a11bd0d357a5c57ddb59801ff2221176b7aa0a"
|
|
2989
|
+
}
|
|
2990
|
+
]
|
|
2991
|
+
},
|
|
2932
2992
|
{
|
|
2933
2993
|
"bom-ref": "file:skills/ot-ics-security/skill.md",
|
|
2934
2994
|
"type": "file",
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mail-server-hardening
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
description: Inbound mail-server protocol hardening for mid-2026 — SMTP smuggling, STARTTLS command/response injection, IMAP/POP3/ManageSieve command injection, Sieve redirect exfiltration, open relay, mailbox-DAV traversal/XXE, and cleartext-AUTH (the server-side protocol layer that SPF/DKIM/DMARC do not protect)
|
|
5
|
+
triggers:
|
|
6
|
+
- mail server hardening
|
|
7
|
+
- smtp smuggling
|
|
8
|
+
- starttls injection
|
|
9
|
+
- open relay
|
|
10
|
+
- imap command injection
|
|
11
|
+
- managesieve
|
|
12
|
+
- sieve redirect
|
|
13
|
+
- mailbox dav
|
|
14
|
+
- caldav
|
|
15
|
+
- carddav
|
|
16
|
+
- pop3
|
|
17
|
+
- mx hardening
|
|
18
|
+
- rfc 5321
|
|
19
|
+
- rfc 9051
|
|
20
|
+
- rfc 5804
|
|
21
|
+
- mail protocol
|
|
22
|
+
- inbound mail
|
|
23
|
+
- smtp listener
|
|
24
|
+
discovery_mode: standalone
|
|
25
|
+
data_deps:
|
|
26
|
+
- cve-catalog.json
|
|
27
|
+
- atlas-ttps.json
|
|
28
|
+
- attack-techniques.json
|
|
29
|
+
- framework-control-gaps.json
|
|
30
|
+
- cwe-catalog.json
|
|
31
|
+
- rfc-references.json
|
|
32
|
+
atlas_refs: []
|
|
33
|
+
attack_refs:
|
|
34
|
+
- T1190
|
|
35
|
+
- T1071.003
|
|
36
|
+
- T1557
|
|
37
|
+
framework_gaps:
|
|
38
|
+
- NIST-800-53-SI-2
|
|
39
|
+
- ISO-27001-2022-A.8.8
|
|
40
|
+
- NIS2-Art21-network-security
|
|
41
|
+
- PCI-DSS-4.0-6.3.3
|
|
42
|
+
cwe_refs:
|
|
43
|
+
- CWE-77
|
|
44
|
+
- CWE-93
|
|
45
|
+
- CWE-22
|
|
46
|
+
- CWE-611
|
|
47
|
+
- CWE-863
|
|
48
|
+
- CWE-400
|
|
49
|
+
last_threat_review: "2026-06-02"
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
# Inbound Mail-Server Protocol Hardening
|
|
53
|
+
|
|
54
|
+
## Threat Context (mid-2026)
|
|
55
|
+
|
|
56
|
+
A mail server that terminates inbound SMTP, IMAP, POP3, JMAP, or ManageSieve exposes a protocol surface that sender-authentication (SPF/DKIM/DMARC) and transport TLS do not protect. SMTP smuggling (CVE-2023-51764/51765/51766) exploits a server that accepts a non-standard end-of-data sequence to deliver a second message that inherits the outer connection's authentication pass — spoofed mail past DMARC. STARTTLS command/response injection (CVE-2021-38371, CVE-2021-33515) executes attacker plaintext buffered before the handshake. An open relay lends the operator's reputation to spammers. Uncapped Sieve `redirect` is a silent mail-exfiltration primitive. Mailbox-DAV (CalDAV/CardDAV) endpoints add path-traversal and XXE. Each is a configuration or parser-hardening gap, not a CVE to patch.
|
|
57
|
+
|
|
58
|
+
## Framework Lag Declaration
|
|
59
|
+
|
|
60
|
+
Organisational mail controls center on sender authentication and transport encryption: SPF, DKIM, DMARC, and a TLS certificate. None prescribe the server-side protocol hardening this skill audits. NIST 800-53 SI-2 expects flaw remediation via a patch cadence, but the smuggling and STARTTLS-injection fixes are configuration (strict end-of-data handling, receive-buffer drain) the patch process never surfaces. NIS2 Art.21 names network security of essential services but assumes SPF/DKIM/DMARC and TLS suffice — they are bypassed at the protocol layer. A clean DMARC + TLS audit is therefore NON-EVIDENCE for inbound protocol hardening; the two address different boundaries.
|
|
61
|
+
|
|
62
|
+
## TTP Mapping
|
|
63
|
+
|
|
64
|
+
The inbound mail-protocol failures map to MITRE ATT&CK: **T1190 (Exploit Public-Facing Application)** for command-literal injection in the IMAP/POP3/ManageSieve parsers and mailbox-DAV traversal/XXE; **T1071.003 (Application Layer Protocol: Mail Protocols)** for SMTP smuggling delivering spoofed mail and open-relay abuse; and **T1557 (Adversary-in-the-Middle)** for STARTTLS receive-buffer injection that crosses the TLS boundary. Cleartext AUTH before STARTTLS enables **T1040 (Network Sniffing)**; absent auth rate limiting enables **T1110 (Brute Force)**; uncapped Sieve redirect enables **T1114 (Email Collection)**. The weakness classes are CWE-93 (CRLF/smuggling), CWE-77 (command injection), CWE-22 (path traversal), CWE-611 (XXE), CWE-863 (open-relay authorization), and CWE-400 (uncapped Sieve/PUTSCRIPT resource use).
|
|
65
|
+
|
|
66
|
+
## Exploit Availability Matrix
|
|
67
|
+
|
|
68
|
+
These are protocol-posture gaps, so weaponisation is low-cost and reusable. SMTP smuggling has public tooling (SEC Consult, December 2023) and the CVE-2023-51764/51765/51766 entries are catalogued. STARTTLS injection has public test tooling from the 2021 "NO STARTTLS" research (CVE-2021-38371, CVE-2021-33515). Open-relay testing requires only an unauthenticated MAIL FROM + RCPT TO probe. Command-literal injection and mailbox-DAV traversal require only a crafted protocol line. None need a novel exploit; the exploit is the absence of the check. Real-world priority is driven by internet-reachability of the listener and whether the gap yields spoofing/relay (reputation + phishing delivery) or mailbox-data exposure.
|
|
69
|
+
|
|
70
|
+
## Analysis Procedure
|
|
71
|
+
|
|
72
|
+
1. Inventory every inbound mail listener and its port (implicit-TLS 465/993/995 vs opportunistic-STARTTLS 25/587/143/110/4190). 2. Probe SMTP for non-standard end-of-data acceptance (smuggling) and unauthenticated relay. 3. Probe each opportunistic-STARTTLS listener for an undrained pre-handshake buffer and for AUTH offered before TLS. 4. Inspect the IMAP/POP3 parsers for bare-CR/LF acceptance and the ManageSieve listener for unbounded PUTSCRIPT and cleartext AUTH. 5. Inspect the Sieve engine for an uncapped `redirect` and the mailbox-DAV endpoint for traversal + XXE. 6. Confirm auth rate limiting / greylisting is active. Run the `mail-server-hardening` playbook to execute these as detect indicators with false-positive checks, then score by reachability and impact class.
|
|
73
|
+
|
|
74
|
+
## Output Format
|
|
75
|
+
|
|
76
|
+
Report per listener and protocol, marking each hardening check enforced / missing / inconclusive (visibility gap). For every missing check, state the port, whether it is internet-facing, and whether the gap yields spoofing/relay or mailbox-data exposure. Distinguish a live-listener finding from a documented test fixture or an upstream-proxy-enforced control. Provide the prioritised remediation (enforce standard end-of-data, drain the STARTTLS buffer and gate AUTH on TLS, harden the command parsers, restrict relay and cap Sieve redirect, harden mailbox-DAV and add rate limits) and the negative validation tests that prove each fix (smuggling rejected, relay rejected, STARTTLS injection rejected) plus the functional test that legitimate mail still flows.
|
|
77
|
+
|
|
78
|
+
## Compliance Theater Check
|
|
79
|
+
|
|
80
|
+
The recurring theater is "we have SPF/DKIM/DMARC and TLS, so our mail server is secure" and "relay is restricted in our config." Sender authentication and transport TLS protect different boundaries than the inbound protocol parser; a config flag is not evidence the listener enforces it. The distinguishing test: probe the live inbound listener for non-standard end-of-data acceptance, an undrained STARTTLS buffer, unauthenticated relay, and cleartext AUTH. If any probe succeeds, the DMARC record and TLS certificate did not protect the protocol layer, and the assurance is paper. "Relay is restricted" is theater until an unauthenticated RCPT-to-external probe is actually refused.
|
|
81
|
+
|
|
82
|
+
## Defensive Countermeasure Mapping
|
|
83
|
+
|
|
84
|
+
Map findings to MITRE D3FEND: strict end-of-data enforcement and command-parser hardening realise Message Authentication and Inbound Traffic Filtering (countering T1071.003/T1190); STARTTLS receive-buffer draining and AUTH-after-TLS gating realise Transport Session Integrity (countering T1557/T1040); relay authorization realises Outbound Traffic Filtering (countering open-relay reputation abuse); Sieve redirect caps realise Email Filtering (countering T1114 exfiltration). Pair the protocol hardening with auth rate limiting and greylisting (countering T1110). The residual risk after hardening is a compromised authenticated account acting within its own authorization, which protocol hardening does not address — accept it at the CISO level with identity-control compensation.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: network-trust
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
description: Network-layer trust and adversary-in-the-middle resistance for mid-2026 — DNSSEC validation, DANE/TLSA pinning, TSIG, mTLS private-CA pinning, RFC 9421 HTTP message signatures, DNS-rebinding/SSRF guarding, and authenticated time (NTS) and its effect on certificate validity and TOTP
|
|
5
|
+
triggers:
|
|
6
|
+
- network trust
|
|
7
|
+
- adversary in the middle
|
|
8
|
+
- aitm
|
|
9
|
+
- dnssec
|
|
10
|
+
- dane
|
|
11
|
+
- tlsa
|
|
12
|
+
- tsig
|
|
13
|
+
- mtls pinning
|
|
14
|
+
- certificate pinning
|
|
15
|
+
- http message signature
|
|
16
|
+
- rfc 9421
|
|
17
|
+
- dns rebinding
|
|
18
|
+
- nts
|
|
19
|
+
- authenticated time
|
|
20
|
+
- ntp spoofing
|
|
21
|
+
- public suffix list
|
|
22
|
+
- name resolution trust
|
|
23
|
+
discovery_mode: standalone
|
|
24
|
+
data_deps:
|
|
25
|
+
- cve-catalog.json
|
|
26
|
+
- atlas-ttps.json
|
|
27
|
+
- attack-techniques.json
|
|
28
|
+
- framework-control-gaps.json
|
|
29
|
+
- cwe-catalog.json
|
|
30
|
+
- rfc-references.json
|
|
31
|
+
atlas_refs: []
|
|
32
|
+
attack_refs:
|
|
33
|
+
- T1557
|
|
34
|
+
- T1071.004
|
|
35
|
+
- T1556
|
|
36
|
+
framework_gaps:
|
|
37
|
+
- NIST-800-53-SC-8
|
|
38
|
+
- ISO-27001-2022-A.8.21
|
|
39
|
+
- NIS2-Art21-network-security
|
|
40
|
+
- UK-CAF-B4
|
|
41
|
+
cwe_refs:
|
|
42
|
+
- CWE-345
|
|
43
|
+
- CWE-918
|
|
44
|
+
- CWE-290
|
|
45
|
+
- CWE-347
|
|
46
|
+
last_threat_review: "2026-06-02"
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
# Network-Layer Trust (AiTM Resistance)
|
|
50
|
+
|
|
51
|
+
## Threat Context (mid-2026)
|
|
52
|
+
|
|
53
|
+
Below the application, TLS authenticates a certificate against a CA bundle — not the specific peer you intended to reach, and not the DNS answer or the clock that got you there. Adversary-in-the-middle attacks exploit the trust-anchor validation TLS does not perform: forge a DNS answer where DNSSEC is not validated; present a mis-issued-but-CA-valid certificate where DANE/TLSA or an mTLS CA pin is not checked; shift an unauthenticated clock to revive an expired certificate or a TOTP window; or rebind a name from a public to an internal address. The DNSSEC validation surface itself carries availability risk (KeyTrap CVE-2023-50387, NSEC3 CVE-2023-50868). These are validation-posture gaps, not cryptographic-primitive weaknesses.
|
|
54
|
+
|
|
55
|
+
## Framework Lag Declaration
|
|
56
|
+
|
|
57
|
+
Organisational network controls equate TLS with peer authenticity and assume DNS and time are trustworthy. NIST 800-53 SC-8 (transmission integrity) is satisfied by TLS to a CA bundle and does not require DANE pinning, DNSSEC, or authenticated time. ISO 27001 A.8.21 (security of network services) is met with TLS + a CA bundle. NIS2 Art.21 names network security of essential services but not the DNS/time/transport trust-anchor posture that AiTM exploits. A clean "we use TLS and a validating resolver and NTP" audit is therefore NON-EVIDENCE for network-trust posture; it confirms encryption and a CA bundle, not end-to-end DNSSEC validation, peer pinning, or authenticated time.
|
|
58
|
+
|
|
59
|
+
## TTP Mapping
|
|
60
|
+
|
|
61
|
+
The network-trust failures map to MITRE ATT&CK: **T1557 (Adversary-in-the-Middle)** for mis-issued-certificate acceptance (no DANE/mTLS pin), DNS-rebinding SSRF, and clock-shift cert revival; **T1071.004 (Application Layer Protocol: DNS)** for forged answers accepted without DNSSEC and unauthenticated zone transfer/update without TSIG; and **T1556 (Modify Authentication Process)** for unverified HTTP message signatures and PSL-driven cookie-boundary confusion, plus the TOTP-window impact of time-shift. The weakness classes are CWE-345 (insufficient verification of data authenticity), CWE-918 (SSRF via DNS rebinding), CWE-290 (authentication bypass by spoofing), and CWE-347 (improper signature/certificate verification).
|
|
62
|
+
|
|
63
|
+
## Exploit Availability Matrix
|
|
64
|
+
|
|
65
|
+
These are posture gaps, so weaponisation is low-cost given an on-path or DNS-influencing position. DNS forgery and cache poisoning have commodity tooling; the DNSSEC validation surface's own DoS (KeyTrap / NSEC3) is catalogued with public analysis. DNS rebinding has public frameworks. A mis-issued or compromised-CA certificate is a recurring real-world event that DANE/mTLS pinning is designed to contain. Unauthenticated NTP is steerable by any on-path attacker. None require a novel exploit; the exploit is the absent validation. Real-world priority is driven by whether the unvalidated anchor sits on an internet-facing authentication, credential, or payment path, and by how many trust decisions ride on it.
|
|
66
|
+
|
|
67
|
+
## Analysis Procedure
|
|
68
|
+
|
|
69
|
+
1. Inventory the paths whose security depends on DNS authenticity, peer-certificate identity, accurate time, or request-signature integrity. 2. Confirm the application path validates DNSSEC end-to-end (or trusts a validated upstream over DoT/DoH) and guards DNS rebinding (pin resolved IP, refuse private ranges). 3. Confirm DANE/TLSA is checked on capable peers and that mTLS pins the expected private CA / SPKI rather than the full public bundle. 4. Confirm time is authenticated (NTS or an authenticated source) and treated as a trust input for cert-validity and TOTP. 5. Confirm TSIG on zone operations and adequately-scoped RFC 9421 message-signature verification. 6. Confirm the Public Suffix List is current. Run the `network-trust` playbook to execute these as detect indicators with false-positive checks, then score by reachability and the number of trust decisions affected.
|
|
70
|
+
|
|
71
|
+
## Output Format
|
|
72
|
+
|
|
73
|
+
Report per trust anchor (DNS, peer certificate, time, message signature), marking each enforced / missing / inconclusive (visibility gap). For every missing check, state whether the path is internet-facing and which trust decisions (peer auth, name resolution, cert validity, TOTP) depend on it. Distinguish a genuinely-not-in-scope anchor (no DANE-capable peer, no authoritative zone, fixed pinned IP) from an unvalidated one. Provide the prioritised remediation (validate DNSSEC + guard rebinding, pin peer certificates via DANE/mTLS, authenticate time, require TSIG + verify message signatures, refresh the PSL) and the negative validation tests that prove each fix (forged DNS rejected, mis-issued cert rejected, time-shift cannot revive a cert) plus a functional test that legitimate traffic still flows.
|
|
74
|
+
|
|
75
|
+
## Compliance Theater Check
|
|
76
|
+
|
|
77
|
+
The recurring theater is "we use TLS everywhere, so the peer is authenticated," "we use a DNSSEC-validating resolver," and "time sync is handled." TLS authenticates against a CA bundle, not the expected peer; a validating resolver upstream is moot if the application accepts any answer over an unauthenticated hop; unauthenticated NTP is attacker-steerable. The distinguishing test: confirm the application path checks DANE/TLSA (or pins the mTLS CA), trusts the AD flag / validates DNSSEC end-to-end, and uses authenticated time. If a forged DNS answer, a mis-issued certificate, or a time shift would be accepted, TLS did not make the network trustworthy and the assurance is paper.
|
|
78
|
+
|
|
79
|
+
## Defensive Countermeasure Mapping
|
|
80
|
+
|
|
81
|
+
Map findings to MITRE D3FEND: DNSSEC validation and DNS-rebinding guarding realise DNS Traffic Analysis and Resolution-Trust enforcement (countering T1071.004/T1557); DANE/TLSA and mTLS CA pinning realise Certificate Pinning and Public Key Infrastructure validation (countering T1557 mis-issuance); authenticated time (NTS) realises System Time Integrity (countering clock-shift cert/TOTP abuse); RFC 9421 message-signature verification realises Message Authentication (countering T1556). Pair DANE with DNSSEC (TLSA without DNSSEC is meaningless) and treat the clock as a security input. The residual risk after validation is compromise of the trust anchor itself (signing key, pinned CA, time authority), addressed by key-management and monitoring, accepted at the CISO level.
|