Summary
KeyCredential nodes set a non-reserved displayName (wrong case) and never set name, and key-material nodes set neither, so nodes render without a label and are not matched by BloodHound name search.
Location
- File(s):
parse.go
- Line(s) / function(s):
ParseResults() — KeyCredential node properties at L60-L69; key-material node properties at L87-L162
Category
functional
Severity
medium
Brief justification: Every emitted node is missing the reserved name property BloodHound uses for the node label, tooltip, and search; key-material nodes have no human-readable label at all.
Reproduction / Evidence
Verified by code analysis.
- For the KeyCredential node, the only label-like property set is
p.SetProperty("displayName", kc.Identifier) at parse.go:62. The reserved property is lowercase displayname; displayName is treated as an arbitrary custom property. name is never set.
- For key-material nodes (
parse.go:87-162), the property set contains only KeyType and key parameters — neither name nor displayname is set, so these nodes are emitted with no label.
The BloodHound OpenGraph schema designates name and displayname (lowercase) as the reserved label/search properties; nodes without name have no searchable label.
Expected Behavior
Every node sets a lowercase name (and displayname) property so it has a label in the UI and is searchable.
Actual Behavior
KeyCredential nodes expose a mis-cased displayName and no name; key-material nodes expose no label property at all.
Root Cause
The reserved property names were written in camelCase (displayName) and the required name property was never assigned.
Summary
KeyCredential nodes set a non-reserved
displayName(wrong case) and never setname, and key-material nodes set neither, so nodes render without a label and are not matched by BloodHound name search.Location
parse.goParseResults()— KeyCredential node properties at L60-L69; key-material node properties at L87-L162Category
functionalSeverity
mediumBrief justification: Every emitted node is missing the reserved
nameproperty BloodHound uses for the node label, tooltip, and search; key-material nodes have no human-readable label at all.Reproduction / Evidence
Verified by code analysis.
p.SetProperty("displayName", kc.Identifier)atparse.go:62. The reserved property is lowercasedisplayname;displayNameis treated as an arbitrary custom property.nameis never set.parse.go:87-162), the property set contains onlyKeyTypeand key parameters — neithernamenordisplaynameis set, so these nodes are emitted with no label.The BloodHound OpenGraph schema designates
nameanddisplayname(lowercase) as the reserved label/search properties; nodes withoutnamehave no searchable label.Expected Behavior
Every node sets a lowercase
name(anddisplayname) property so it has a label in the UI and is searchable.Actual Behavior
KeyCredential nodes expose a mis-cased
displayNameand noname; key-material nodes expose no label property at all.Root Cause
The reserved property names were written in camelCase (
displayName) and the requirednameproperty was never assigned.