SpecterOps / SpecterOps/SharpHoundCommon

Missing Detection of ADCS ESC10a Due to Incomplete "Write Property" Collection on UPN

Open
#249 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
104
Forks
56
Avg merge
3d 23h
Merged PRs (30d)
2

Description

SharpHound currently fails to detect potential vulnerabilities related to ADCS ESC10a when there is no GenericWrite or more permissions on the target object. Specifically, it does not collect the correct "Write Property" rights on the userPrincipalName (UPN) attribute, which is critical for identifying this attack path.

According to the BloodHound documentation on ESC10a, an attacker can exploit WriteProperty rights on the UPN to impersonate users via certificate requests. However, SharpHound does not currently enumerate these rights unless GenericWrite is present, leading to incomplete visibility in BloodHound graphs.

The list of currently collected edge types is defined in EdgeNames.cs, and it appears that WriteProperty on UPN is not explicitly handled for this scenario. WriteProperty on UPN can also be given through the Public-Information property set.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with EdgeNames.cs and the linked ESC10a documentation to understand the edge types currently collected. Trace how WriteProperty permissions on userPrincipalName are handled, including rights granted through the Public-Information property set. Done means SharpHound exposes the relevant ESC10a attack path when WriteProperty exists without GenericWrite.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
authorization, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.