@blamejs/exceptd-skills 0.13.2 → 0.13.3
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/CHANGELOG.md +39 -0
- package/bin/exceptd.js +105 -1
- package/data/_indexes/_meta.json +12 -12
- package/data/_indexes/activity-feed.json +3 -3
- package/data/_indexes/catalog-summaries.json +3 -3
- package/data/_indexes/chains.json +125 -0
- package/data/_indexes/frequency.json +12 -0
- package/data/_indexes/section-offsets.json +88 -88
- package/data/_indexes/token-budget.json +37 -37
- package/data/attack-techniques.json +2 -0
- package/data/cve-catalog.json +96 -1
- package/data/cwe-catalog.json +1 -0
- package/data/framework-control-gaps.json +409 -0
- package/data/zeroday-lessons.json +71 -0
- package/lib/lint-skills.js +17 -13
- package/lib/source-advisories.js +26 -0
- package/manifest.json +47 -47
- package/orchestrator/index.js +147 -2
- package/package.json +1 -1
- package/sbom.cdx.json +22 -22
- package/skills/api-security/skill.md +14 -4
- package/skills/cloud-iam-incident/skill.md +1 -1
- package/skills/email-security-anti-phishing/skill.md +14 -4
package/sbom.cdx.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.6",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:215c1846-8948-4275-8e79-ad2f8593225c",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "
|
|
7
|
+
"timestamp": "2043-09-26T19:40:54.000Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "blamejs",
|
|
11
11
|
"name": "scripts/refresh-sbom.js",
|
|
12
|
-
"version": "0.13.
|
|
12
|
+
"version": "0.13.3"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"component": {
|
|
16
|
-
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.13.
|
|
16
|
+
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.13.3",
|
|
17
17
|
"type": "application",
|
|
18
18
|
"name": "@blamejs/exceptd-skills",
|
|
19
|
-
"version": "0.13.
|
|
19
|
+
"version": "0.13.3",
|
|
20
20
|
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 10 catalogs, 34 jurisdictions, pre-computed indexes, Ed25519-signed.",
|
|
21
21
|
"licenses": [
|
|
22
22
|
{
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
],
|
|
28
|
-
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.13.
|
|
28
|
+
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.13.3",
|
|
29
29
|
"hashes": [
|
|
30
30
|
{
|
|
31
31
|
"alg": "SHA-256",
|
|
32
|
-
"content": "
|
|
32
|
+
"content": "5f31c2d0207da9b36fe526a2913e975e27ae2442561e03b079695af7f5a8926b"
|
|
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.13.
|
|
38
|
+
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.13.3"
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"type": "vcs",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"hashes": [
|
|
109
109
|
{
|
|
110
110
|
"alg": "SHA-256",
|
|
111
|
-
"content": "
|
|
111
|
+
"content": "1932f52ef4f3d1ba7963310436df82f5ef6269a3c77851e993e31885ebade1b2"
|
|
112
112
|
}
|
|
113
113
|
]
|
|
114
114
|
},
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
"hashes": [
|
|
230
230
|
{
|
|
231
231
|
"alg": "SHA-256",
|
|
232
|
-
"content": "
|
|
232
|
+
"content": "b3540a3296e5e901004d428351d40d3ac40b154da082071da2c00222c40b7b6e"
|
|
233
233
|
}
|
|
234
234
|
]
|
|
235
235
|
},
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
"hashes": [
|
|
252
252
|
{
|
|
253
253
|
"alg": "SHA-256",
|
|
254
|
-
"content": "
|
|
254
|
+
"content": "76461dbec048c5e072435d57e3a04b780e3992dab9f316b1b52608e0a997e355"
|
|
255
255
|
}
|
|
256
256
|
]
|
|
257
257
|
},
|
|
@@ -262,7 +262,7 @@
|
|
|
262
262
|
"hashes": [
|
|
263
263
|
{
|
|
264
264
|
"alg": "SHA-256",
|
|
265
|
-
"content": "
|
|
265
|
+
"content": "b499cb431c1b71aab505db577a1e3b2fdcb5190afbcc6aaee0f6a237cfc16ca8"
|
|
266
266
|
}
|
|
267
267
|
]
|
|
268
268
|
},
|
|
@@ -273,7 +273,7 @@
|
|
|
273
273
|
"hashes": [
|
|
274
274
|
{
|
|
275
275
|
"alg": "SHA-256",
|
|
276
|
-
"content": "
|
|
276
|
+
"content": "4a0036f9ec17af29e0df111ac77b94f8be6a52742bfd89ff3583096d23b75e35"
|
|
277
277
|
}
|
|
278
278
|
]
|
|
279
279
|
},
|
|
@@ -317,7 +317,7 @@
|
|
|
317
317
|
"hashes": [
|
|
318
318
|
{
|
|
319
319
|
"alg": "SHA-256",
|
|
320
|
-
"content": "
|
|
320
|
+
"content": "ce1535f13d29ab90fac99b983f38a23dd685702b3f12ac9f2371294cb9859ecf"
|
|
321
321
|
}
|
|
322
322
|
]
|
|
323
323
|
},
|
|
@@ -570,7 +570,7 @@
|
|
|
570
570
|
"hashes": [
|
|
571
571
|
{
|
|
572
572
|
"alg": "SHA-256",
|
|
573
|
-
"content": "
|
|
573
|
+
"content": "1438620d2c8b0606eac4f63e620906b9ba079c57bfa7f737ceb6a50370cdc9a5"
|
|
574
574
|
}
|
|
575
575
|
]
|
|
576
576
|
},
|
|
@@ -691,7 +691,7 @@
|
|
|
691
691
|
"hashes": [
|
|
692
692
|
{
|
|
693
693
|
"alg": "SHA-256",
|
|
694
|
-
"content": "
|
|
694
|
+
"content": "48aa70089fe9fc3bee80e19042d28d91ceb996ed018b6131db970dba7cadb90e"
|
|
695
695
|
}
|
|
696
696
|
]
|
|
697
697
|
},
|
|
@@ -812,7 +812,7 @@
|
|
|
812
812
|
"hashes": [
|
|
813
813
|
{
|
|
814
814
|
"alg": "SHA-256",
|
|
815
|
-
"content": "
|
|
815
|
+
"content": "63702da0ef17b9dd32cff349473d5e1c32aae763cd769936a07570e34cb6b824"
|
|
816
816
|
}
|
|
817
817
|
]
|
|
818
818
|
},
|
|
@@ -988,7 +988,7 @@
|
|
|
988
988
|
"hashes": [
|
|
989
989
|
{
|
|
990
990
|
"alg": "SHA-256",
|
|
991
|
-
"content": "
|
|
991
|
+
"content": "fbc30b15d294d3bdfccfb3880781dae9e9a9624e3b6d6a64723cdc75b6b47d3b"
|
|
992
992
|
}
|
|
993
993
|
]
|
|
994
994
|
},
|
|
@@ -1032,7 +1032,7 @@
|
|
|
1032
1032
|
"hashes": [
|
|
1033
1033
|
{
|
|
1034
1034
|
"alg": "SHA-256",
|
|
1035
|
-
"content": "
|
|
1035
|
+
"content": "b827fb5d2a43409ba2c390b000e175c9357b86137d25d6647ff238b94922275b"
|
|
1036
1036
|
}
|
|
1037
1037
|
]
|
|
1038
1038
|
},
|
|
@@ -1461,7 +1461,7 @@
|
|
|
1461
1461
|
"hashes": [
|
|
1462
1462
|
{
|
|
1463
1463
|
"alg": "SHA-256",
|
|
1464
|
-
"content": "
|
|
1464
|
+
"content": "9fc2252cbcf6162591e70d0bf5499a430b0584495ad584ce49fb7daf070d335f"
|
|
1465
1465
|
}
|
|
1466
1466
|
]
|
|
1467
1467
|
},
|
|
@@ -1483,7 +1483,7 @@
|
|
|
1483
1483
|
"hashes": [
|
|
1484
1484
|
{
|
|
1485
1485
|
"alg": "SHA-256",
|
|
1486
|
-
"content": "
|
|
1486
|
+
"content": "5ec3800a0049b2123aff67bfab4ff28491a86d2daeb712283e5e88b10c3d5d7b"
|
|
1487
1487
|
}
|
|
1488
1488
|
]
|
|
1489
1489
|
},
|
|
@@ -1560,7 +1560,7 @@
|
|
|
1560
1560
|
"hashes": [
|
|
1561
1561
|
{
|
|
1562
1562
|
"alg": "SHA-256",
|
|
1563
|
-
"content": "
|
|
1563
|
+
"content": "250f266908f51f99a4cb3aec0d5dacfcf91fac9f3d95e5a117429a40ed2ff45a"
|
|
1564
1564
|
}
|
|
1565
1565
|
]
|
|
1566
1566
|
},
|
|
@@ -17,7 +17,13 @@ triggers:
|
|
|
17
17
|
- ai api security
|
|
18
18
|
- mcp transport
|
|
19
19
|
- openapi security
|
|
20
|
-
data_deps:
|
|
20
|
+
data_deps:
|
|
21
|
+
- atlas-ttps.json
|
|
22
|
+
- attack-techniques.json
|
|
23
|
+
- cwe-catalog.json
|
|
24
|
+
- d3fend-catalog.json
|
|
25
|
+
- framework-control-gaps.json
|
|
26
|
+
- rfc-references.json
|
|
21
27
|
atlas_refs:
|
|
22
28
|
- AML.T0096
|
|
23
29
|
- AML.T0017
|
|
@@ -61,7 +67,7 @@ forward_watch:
|
|
|
61
67
|
- NGINX Rift CVE-2026-42945 (disclosed 2026-05-13, source depthfirst) — KEV-watch predicted CISA KEV listing by 2026-05-29; track for active-exploitation confirmation and patch advisory affecting API gateway / reverse-proxy deployments
|
|
62
68
|
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LiteLLM 3-bug SSRF + Code Injection chain by k3vg3n; LLM-proxy API surface; track upstream patch and CVE assignments
|
|
63
69
|
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LiteLLM full SSRF + Code Injection by Out Of Bounds (Byung Young Yi); duplicate-class with the k3vg3n entry; track unified patch advisory
|
|
64
|
-
last_threat_review: "2026-05-
|
|
70
|
+
last_threat_review: "2026-05-18"
|
|
65
71
|
---
|
|
66
72
|
|
|
67
73
|
# API Security Assessment
|
|
@@ -130,7 +136,7 @@ APIs are now the integration substrate of every non-trivial system. The mid-2026
|
|
|
130
136
|
| AML.T0096 | AI Service Exploitation (AI-API as covert C2) | LLM API used as a covert command-and-control / exfil channel — prompt content carries instructions; response carries staged data | CWE-77, CWE-200 | Missing in NIST/ISO; hand-off to `ai-c2-detection` |
|
|
131
137
|
| AML.T0017 | Discover ML Model Ontology (inference-API probing for system-prompt, guardrail, model-family signal) | High-volume queries against a hosted model used to reconstruct behaviour, guardrail surface, or training-data signal | CWE-200 | Missing — detected only by per-identity rate-and-shape monitoring at egress |
|
|
132
138
|
|
|
133
|
-
CWE root-causes referenced as a set (per `cwe_refs` in frontmatter): CWE-287 (Improper Authentication), CWE-862 (Missing Authorization — BFLA root cause), CWE-863 (Incorrect Authorization — BOLA root cause), CWE-918 (SSRF — API7), CWE-200 (Information Exposure — BOPLA contributor), CWE-352 (CSRF — cookie-auth APIs + WebSocket CSWSH), CWE-22 (Path Traversal — API parameter sinks), CWE-77 (Command Injection — API parameter to shell), CWE-1188 (Insecure Default Initialization — default-open API state).
|
|
139
|
+
CWE root-causes referenced as a set (per `cwe_refs` in frontmatter, all resolved against `data/cwe-catalog.json`): CWE-287 (Improper Authentication), CWE-862 (Missing Authorization — BFLA root cause), CWE-863 (Incorrect Authorization — BOLA root cause), CWE-918 (SSRF — API7), CWE-200 (Information Exposure — BOPLA contributor), CWE-352 (CSRF — cookie-auth APIs + WebSocket CSWSH), CWE-22 (Path Traversal — API parameter sinks), CWE-77 (Command Injection — API parameter to shell), CWE-1188 (Insecure Default Initialization — default-open API state). ATT&CK Enterprise techniques (T1190, T1078, T1567) resolve against `data/attack-techniques.json`; the AML.T0096 (AI service exploitation) and AML.T0017 (model-ontology discovery) entries resolve against `data/atlas-ttps.json`. Cross-reference every BOLA / BFLA finding against the `CWE-863` / `CWE-862` entries in `data/cwe-catalog.json` for the canonical weakness description used in operator briefings.
|
|
134
140
|
|
|
135
141
|
---
|
|
136
142
|
|
|
@@ -158,6 +164,8 @@ CWE root-causes referenced as a set (per `cwe_refs` in frontmatter): CWE-287 (Im
|
|
|
158
164
|
|
|
159
165
|
The procedure threads three foundational design principles. They are not optional.
|
|
160
166
|
|
|
167
|
+
Wire-level RFC mappings cited below resolve against `data/rfc-references.json` (RFC-7519 JWT, RFC-8725 JWT BCP, RFC-6749 OAuth 2.0, RFC-9700 OAuth Security BCP, RFC-9421 HTTP Message Signatures, RFC-8446 TLS 1.3, RFC-9114 HTTP/3); framework-gap IDs cited throughout (OWASP-ASVS-v5.0-V14, NIST-800-53-AC-2, NIST-800-218-SSDF, ISO-27001-2022-A.8.28, NIS2-Art21-incident-handling, UK-CAF-B2, AU-Essential-8-App-Hardening) resolve against `data/framework-control-gaps.json`.
|
|
168
|
+
|
|
161
169
|
**Defense in depth** — the API request lifecycle is layered. No single control is trusted to fail closed.
|
|
162
170
|
|
|
163
171
|
1. **API gateway (perimeter)** — terminates TLS (RFC 8446 baseline; HTTP/3 over QUIC per RFC 9114 for public global APIs), enforces auth, enforces rate limits per route + per identity + per cost-unit, applies threat-detection rules, captures the canonical log record. Gateways with bypass paths (a "direct backend" route that skips the gateway) are gateway-in-name-only.
|
|
@@ -198,7 +206,7 @@ The procedure threads three foundational design principles. They are not optiona
|
|
|
198
206
|
7. **GraphQL query-complexity limits.** Depth limit, breadth (alias) limit, complexity-cost calculator with budget per query, persisted-query allowlist for production clients. **Introspection disabled in production.**
|
|
199
207
|
8. **gRPC reflection disabled in production.** mTLS for service-to-service; per-method authorisation (BFLA in gRPC terms is per-method); deadline propagation enforced; max-message-size bounded.
|
|
200
208
|
9. **WebSocket origin validation at upgrade + CSRF / sender-constrained token thereafter.** Per-message authorisation if the channel multiplexes operations across resources; rate-limit per connection AND per identity (one identity cannot fan out across many connections to bypass).
|
|
201
|
-
10. **MCP transport audit (hand-off to `mcp-agent-trust`) and AI-API egress map (hand-off to `ai-c2-detection`).** Document every MCP server and every AI-API destination. Per-destination quota with explicit USD cap; per-identity rate-and-shape baseline; D3-NTA egress monitoring fed to SIEM. AI-API keys treated as the most sensitive credential class — rotation cadence ≤ 30 days, automated key-leak scanning on commits.
|
|
209
|
+
10. **MCP transport audit (hand-off to `mcp-agent-trust`) and AI-API egress map (hand-off to `ai-c2-detection`).** Document every MCP server and every AI-API destination. Per-destination quota with explicit USD cap; per-identity rate-and-shape baseline; D3-NTA egress monitoring fed to SIEM. AI-API keys treated as the most sensitive credential class — rotation cadence ≤ 30 days, automated key-leak scanning on commits. The egress map cross-references the AML.T0096 / AML.T0017 catalog entries in `data/atlas-ttps.json` so that egress-baseline rules can be authored against the canonical TTP IDs rather than ad-hoc local names.
|
|
202
210
|
|
|
203
211
|
---
|
|
204
212
|
|
|
@@ -281,6 +289,8 @@ Each D3FEND technique below maps an offensive API-security finding to a defensiv
|
|
|
281
289
|
| D3-MFA | Multi-Factor Authentication (auth hardening at the API gateway) | Identity layer — phishing-resistant FIDO2 / WebAuthn passkeys for human-fronted APIs; service identities for machine-to-machine | Per-principal MFA enrolment; passkey-only for privileged routes | Every interactive authentication challenge is AiTM-resistant; TOTP / SMS insufficient for privileged API surfaces | Applies — AI-assisted phishing kits compress time-to-weaponise; passkey-mandatory for any human accessing AI-API management consoles (key rotation, budget setting) |
|
|
282
290
|
| D3-CBAN | Certificate-Based Authentication | Service-to-service and high-value gateway boundaries — mTLS per RFC 8446 with appropriate cipher choice | Per-service workload identity (SPIFFE/SPIRE-class); no shared service certificate | Workload identity verified at every hop; certificate revocation honoured (OCSP stapling / short-lived certificates per ACME) | Applies to MCP transport — mTLS at the gateway-to-MCP-server boundary; AI-API consumption via signed-and-attested workload identity where the AI provider supports it |
|
|
283
291
|
|
|
292
|
+
D3FEND technique IDs above resolve against `data/d3fend-catalog.json`; framework-gap rationales for each layer cross-walk to the matching entries in `data/framework-control-gaps.json` (notably `OWASP-ASVS-v5.0-V14`, `NIST-800-53-AC-2`, `NIST-800-218-SSDF`, `ISO-27001-2022-A.8.28`, `NIS2-Art21-incident-handling`, `UK-CAF-B2`, and `AU-Essential-8-App-Hardening`) so the defensive layer chosen for any finding can be cross-cited to both the offensive ATT&CK / ATLAS technique (`data/attack-techniques.json`, `data/atlas-ttps.json`) and the missing framework control in one operator pass.
|
|
293
|
+
|
|
284
294
|
---
|
|
285
295
|
|
|
286
296
|
## Hand-Off / Related Skills
|
|
@@ -88,7 +88,7 @@ Cloud-IAM compromise has been the dominant cloud-breach root cause across all th
|
|
|
88
88
|
|
|
89
89
|
2. **2024-2025 AWS-key-in-public-repo crypto-mining campaigns.** Scraper bots monitoring the GitHub firehose monetise within ~5 minutes of public exposure. Typical spend pattern: 50-500 USD/hour of GPU instances in an unused region (where the victim has no resources to alert on regional anomalies). Common compromise window: 30 minutes to 4 hours before the victim notices. Even after revocation, the attacker often establishes long-lived persistence by creating their own IAM user with AdministratorAccess inside the compromised account before the original key is revoked.
|
|
90
90
|
|
|
91
|
-
3. **2026 Azure managed-identity token replay (
|
|
91
|
+
3. **2026 Azure managed-identity token replay (design-class issue, not a single CVE).** Attackers with limited code-execution on an Azure VM (often via SSRF in a hosted web application) steal the managed-identity token from the IMDS endpoint at 169.254.169.254. The token is valid for its TTL (default 24h on most managed-identity scopes) and can be replayed from the attacker's infrastructure. Azure Continuous Access Evaluation is the long-term mitigation; rollout is incomplete in most large estates.
|
|
92
92
|
|
|
93
93
|
4. **Scattered Spider AWS-MFA-bypass via help-desk social engineering.** Continuous 2023-2026 pattern. Voice-cloned or socially-engineered help-desk agent resets MFA on a privileged user, attacker logs in, escalates via either (a) creating their own IAM user with AdministratorAccess for persistence, (b) directly assuming a privileged role into a production account, or (c) modifying the federated IdP trust policy to grant ongoing access. Help-desk OOB-callback policy + voice-channel deepfake-resistant verification is the operational mitigation; coverage is fragmentary.
|
|
94
94
|
|
|
@@ -20,7 +20,13 @@ triggers:
|
|
|
20
20
|
- deepfake phishing
|
|
21
21
|
- ai phishing
|
|
22
22
|
- secure email gateway
|
|
23
|
-
data_deps:
|
|
23
|
+
data_deps:
|
|
24
|
+
- atlas-ttps.json
|
|
25
|
+
- attack-techniques.json
|
|
26
|
+
- d3fend-catalog.json
|
|
27
|
+
- dlp-controls.json
|
|
28
|
+
- framework-control-gaps.json
|
|
29
|
+
- rfc-references.json
|
|
24
30
|
atlas_refs: []
|
|
25
31
|
attack_refs:
|
|
26
32
|
- T1566
|
|
@@ -47,7 +53,7 @@ d3fend_refs:
|
|
|
47
53
|
- D3-CSPP
|
|
48
54
|
- D3-IOPR
|
|
49
55
|
- D3-MFA
|
|
50
|
-
last_threat_review: "2026-05-
|
|
56
|
+
last_threat_review: "2026-05-18"
|
|
51
57
|
discovery_mode: "standalone" # v0.13.2: operator-reached via `exceptd brief email-security-anti-phishing` or `exceptd ask`; not chained into any playbook's direct.skill_chain by design
|
|
52
58
|
---
|
|
53
59
|
|
|
@@ -89,7 +95,7 @@ Phishing remained the #1 initial-access vector through 2025 (Verizon DBIR 2025)
|
|
|
89
95
|
| IN CERT-In | Phishing guidance and 6-hour incident reporting rule | Reporting requirement is firm; control specifications lag. |
|
|
90
96
|
| NYDFS | 23 NYCRR 500.14 (training and monitoring) | Annual phishing-aware training required; does not specify FIDO2, DMARC `p=reject`, or deepfake-aware procedures. |
|
|
91
97
|
|
|
92
|
-
Per AGENTS.md Rule #5, this analysis spans EU + UK + AU + JP + IL + SG + IN + NYDFS alongside NIST and ISO.
|
|
98
|
+
Per AGENTS.md Rule #5, this analysis spans EU + UK + AU + JP + IL + SG + IN + NYDFS alongside NIST and ISO. Each framework-gap ID in `framework_gaps` (`NIST-800-53-SI-3`, `ISO-27001-2022-A.8.16`, `SOC2-CC7-anomaly-detection`, `NIS2-Art21-incident-handling`, `UK-CAF-C1`, `AU-Essential-8-App-Hardening`) resolves against `data/framework-control-gaps.json` — operators producing a per-control evidence pack should pull the canonical lag rationale from that catalog rather than transcribing the table above.
|
|
93
99
|
|
|
94
100
|
---
|
|
95
101
|
|
|
@@ -103,7 +109,7 @@ Per AGENTS.md Rule #5, this analysis spans EU + UK + AU + JP + IL + SG + IN + NY
|
|
|
103
109
|
| T1566.003 | Spearphishing via Service | LinkedIn DMs, Teams chat, Slack DMs, SMS, WhatsApp — all email-adjacent channels that DMARC/DKIM/SPF do not protect. Voice-cloned vishing and deepfake video calls land here too. |
|
|
104
110
|
| T1078 | Valid Accounts | Post-phish credential use. The success metric for the program is "no T1078 follow-on," because every successful T1566 that reaches `p=reject` and FIDO2 still has to traverse credential use. |
|
|
105
111
|
|
|
106
|
-
Note: `atlas_refs` is intentionally empty — these are ATT&CK Enterprise TTPs against human/email channels, not ATLAS AI-system TTPs. The AI-augmentation angle is handled via cross-reference to `ai-attack-surface`.
|
|
112
|
+
Note: `atlas_refs` is intentionally empty — these are ATT&CK Enterprise TTPs against human/email channels, not ATLAS AI-system TTPs. The AI-augmentation angle is handled via cross-reference to `ai-attack-surface`. The ATT&CK technique IDs above (`T1566`, `T1566.001`, `T1566.002`, `T1566.003`, `T1078`) resolve against `data/attack-techniques.json`; when an investigation crosses into AI-mediated phishing (LLM-generated lures, deepfake video confirmation, voice cloning), cross-reference `data/atlas-ttps.json` for `AML.T0051` (LLM Prompt Injection — relevant when phishing payloads target the LLM-as-classifier instead of the human), `AML.T0024` (Exfiltration via Cyber Means — applicable where compromised mailbox sessions egress data via the message channel itself), and `AML.T0016` (Develop Capabilities — adversary use of public LLM APIs to author hyperpersonalized lures).
|
|
107
113
|
|
|
108
114
|
---
|
|
109
115
|
|
|
@@ -138,6 +144,8 @@ The procedure threads three foundational principles per AGENTS.md:
|
|
|
138
144
|
|
|
139
145
|
**Cloud-email canonical, on-prem exception** (Rule #9): default scoping assumes Microsoft 365 Exchange Online or Google Workspace Gmail. On-prem Exchange (legacy, regulated enclave, air-gapped) gets an explicit exception path noting which controls (cloud-native sandbox detonation, Microsoft Defender XDR signals, Google Workspace Security Sandbox) have on-prem equivalents and which require compensating controls.
|
|
140
146
|
|
|
147
|
+
Email-authentication RFCs cited throughout the procedure (`RFC-7489` DMARC, `RFC-6376` DKIM, `RFC-7208` SPF, `RFC-8616` BIMI/AuthIndicators DNS encoding, `RFC-8461` MTA-STS, `RFC-8617` ARC, `RFC-8460` TLSRPT) resolve against `data/rfc-references.json`. The DLP exfil-channel mappings invoked by the gateway-and-egress sub-procedures (`DLP-CHAN-EMAIL-OUT` for outbound message exfil, `DLP-CHAN-LLM-PROMPT` for LLM-prompt-as-egress when users paste mailbox content into AI assistants, `DLP-ENFORCE-BLOCK` for hard-block enforcement on confirmed PHI/PCI patterns) resolve against `data/dlp-controls.json` — these are the canonical IDs to cite when handing off to `dlp-gap-analysis`.
|
|
148
|
+
|
|
141
149
|
**Ten-step assessment:**
|
|
142
150
|
|
|
143
151
|
1. **Email authentication posture audit.** For each owned sending domain: pull SPF record, count DNS lookups (≤10), check for `+all` or `?all` (fail open), and check for SPF-flattening or macro-misuse. Pull DKIM selectors and verify key length ≥2048-bit, current rotation cadence. Pull DMARC record and capture policy (`p=`), subdomain policy (`sp=`), `pct=`, `rua=`/`ruf=` aggregate-report destinations, and alignment modes. Pull BIMI record and check VMC/CMC presence. Pull ARC seal status from inbound flow samples. Pull MTA-STS policy and TLSRPT destination.
|
|
@@ -192,6 +200,8 @@ Per AGENTS.md, this skill ships on 2026-05-11 and includes the optional 8th sect
|
|
|
192
200
|
| D3-IOPR (Inbound Operation Restriction) | Restrict inbound operations the message can perform — URL rewriting, click-time re-evaluation, macro neutralization, container-format unpacking, sandbox detonation | Pre-delivery and at click-time | Per-user click policy (privileged users on stricter detonation tier) | No payload is allowed to act on the user's behalf without the gateway's verification | LLM-generated email detection sits here at the gateway-classification layer |
|
|
193
201
|
| D3-MFA (Multi-factor Authentication) | Phishing-resistant authenticator class — FIDO2 / WebAuthn synced passkeys with proper relying-party verification | User authentication layer | Mandatory at 100% for privileged role classes; recovery flow hardened against helpdesk-vishing | Every authentication is verified by possession of the bound authenticator; session tokens are not transferable across origin | Canonical defense — passkeys remove the credential-disclosure win condition that AI-augmented phishing optimizes for |
|
|
194
202
|
|
|
203
|
+
The D3FEND technique IDs above (`D3-NTA`, `D3-CSPP`, `D3-IOPR`, `D3-MFA`) resolve against `data/d3fend-catalog.json`. Operators producing a defence-in-depth map for an email-security finding should chain: offensive technique (`T1566.*` from `data/attack-techniques.json`, plus AI-augmentation context from `data/atlas-ttps.json`) → missing control (entry in `data/framework-control-gaps.json`) → defensive technique (entry in `data/d3fend-catalog.json`) → DLP enforcement channel (`DLP-CHAN-EMAIL-OUT` / `DLP-CHAN-LLM-PROMPT` from `data/dlp-controls.json`) → wire-level RFC anchor (entry in `data/rfc-references.json`). This is the cross-walk pattern the seven-phase playbook expects when packaging anti-phishing evidence for an auditor or jurisdiction notification.
|
|
204
|
+
|
|
195
205
|
---
|
|
196
206
|
|
|
197
207
|
## Hand-Off / Related Skills
|