You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consume BloodHound's attack-path analytics — distance to Tier Zero, node exposure, reachable high-value targets, ADCS ESC findings, choke points — and surface them as risk findings on principals/identities. This is the attack-path plugin already named as "framework-ready, not built here" in docs/architecture/risk-scoring-plugins.md (§ Future plugins, flagged needsExternalData).
This is 2 of 3 companion feature requests from a feasibility study (docs/architecture/bloodhound-integration-feasibility.md).`` The three are related but independently buildable.
This belongs to the risk-scoring plugin tier being introduced in #672 ("[Refactor] Re-architect risk scoring into a plugin tier — findings + explainability + override"). It's a concrete needsExternalData plugin that fits that framework's finding + reason-context shape. Build order isn't strict, but this plugin lands cleanest on top of#672's plugin substrate.
This was the original motivation
Worth recording: the earlier BloodHound exploration was specifically about pulling risk metrics (attack paths) — not data-source ingestion. That instinct was right; this issue is the clean home for it. The two other companion issues (data ingestion #939, reverse feed) grew out of realizing BloodHound could be more than a risk source — but this remains the place where BloodHound is irreplaceable.
Why BloodHound is irreplaceable here (unlike #939)
The feasibility study sorts BloodHound's graph into three buckets:
(C) Derived attack computations — ESC classifications, shortest-path-to-Tier-Zero, choke-point scores. This is bucket C, and it is BloodHound's unique layer — analytics computed over the graph, not raw data. This issue consumes bucket C as findings.
Bucket C is exactly what a governance product cannot easily compute itself and what makes BloodHound worth talking to.
Read via BloodHound CE's /api/v2 REST API — auth by JWT or HMAC-signed request — and/or the raw Cypher endpoint POST /api/v2/graphs/cypher, or the official SDKs (SpecterOps/bloodhound-python-sdk, bloodhound-go-sdk).
Summary
Consume BloodHound's attack-path analytics — distance to Tier Zero, node exposure, reachable high-value targets, ADCS ESC findings, choke points — and surface them as risk findings on principals/identities. This is the
attack-pathplugin already named as "framework-ready, not built here" indocs/architecture/risk-scoring-plugins.md(§ Future plugins, flaggedneedsExternalData).Plugs into #672
This belongs to the risk-scoring plugin tier being introduced in #672 ("[Refactor] Re-architect risk scoring into a plugin tier — findings + explainability + override"). It's a concrete
needsExternalDataplugin that fits that framework's finding + reason-context shape. Build order isn't strict, but this plugin lands cleanest on top of #672's plugin substrate.This was the original motivation
Worth recording: the earlier BloodHound exploration was specifically about pulling risk metrics (attack paths) — not data-source ingestion. That instinct was right; this issue is the clean home for it. The two other companion issues (data ingestion #939, reverse feed) grew out of realizing BloodHound could be more than a risk source — but this remains the place where BloodHound is irreplaceable.
Why BloodHound is irreplaceable here (unlike #939)
The feasibility study sorts BloodHound's graph into three buckets:
GenericAll,AdminTo,WriteDacl, …). These are data → companion issue [Feature] BloodHound collector file ingestion — one crawler, three dialects (AD / Entra / GitHub / AWS) #939 ingests them.Bucket C is exactly what a governance product cannot easily compute itself and what makes BloodHound worth talking to.
How
/api/v2REST API — auth by JWT or HMAC-signed request — and/or the raw Cypher endpointPOST /api/v2/graphs/cypher, or the official SDKs (SpecterOps/bloodhound-python-sdk,bloodhound-go-sdk).RiskFinding-shaped records (score/severity + rationale + structured evidence), consistent with [Refactor] Re-architect risk scoring into a plugin tier (findings + explainability + override) #672's plugin contract. Findings, neverResourceAssignments.SpecterOps/BloodHound#79) — validate large/whole-graph queries early.Relationship to the other two issues
Acceptance criteria
attack-pathrisk plugin registered in the risk-plugin tier ([Refactor] Re-architect risk scoring into a plugin tier (findings + explainability + override) #672),needsExternalData./api/v2/ Cypher / SDK and emits findings on principals/identities with rationale + evidence.ResourceAssignments.References
docs/architecture/risk-scoring-plugins.md(§ Future plugins →attack-path).Related feature requests (BloodHound integration set — independent, not interdependent)
Cross-links in a comment below.