Skip to content

docs: improve esc14 texts#2960

Open
JonasBK wants to merge 1 commit into
mainfrom
esc14-fix
Open

docs: improve esc14 texts#2960
JonasBK wants to merge 1 commit into
mainfrom
esc14-fix

Conversation

@JonasBK

@JonasBK JonasBK commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Description

Improve the abuse text for new edges

Motivation and Context

Resolves BED-6155

How Has This Been Tested?

Locally with this dataset:

20250611101235_BloodHound.zip

Screenshots (optional):

image

Types of changes

  • Chore (a change that does not modify the application functionality)

Checklist:

Summary by CodeRabbit

  • Documentation
    • Improved several help text screens with clearer paragraph spacing and more structured typography.
    • Refined headings and section flow in the ADCS ESC14 scenario guidance for easier reading.
    • Updated related Windows and Linux abuse guidance to present the same information in a cleaner, more consistent format.

@JonasBK JonasBK self-assigned this Jul 6, 2026
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 209b7806-704a-4f6d-b0e0-6cee79351cc5

📥 Commits

Reviewing files that changed from the base of the PR and between f78f8d1 and 4692051.

📒 Files selected for processing (5)
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/AdcsEsc14ScenarioA/AdcsEsc14ScenarioA.tsx
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/LinuxAbuse.tsx
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/WindowsAbuse.tsx
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/LinuxAbuse.tsx
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/WindowsAbuse.tsx
 ___________________________________________
< Sending Skynet back to the drawing board. >
 -------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch esc14-fix

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@packages/javascript/bh-shared-ui/src/components/HelpTexts/AdcsEsc14ScenarioA/AdcsEsc14ScenarioA.tsx`:
- Around line 33-39: The AdcsEsc14ScenarioA component is rendering nested
paragraph tags because Typography with variant='body2' defaults to a p element
while the inner content also uses p blocks. Update the affected Typography
wrappers in AdcsEsc14ScenarioA to use component='div' or replace the inner p
elements with non-paragraph containers, and apply the same fix to all other
body2 sections in this file.

In
`@packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/LinuxAbuse.tsx`:
- Around line 24-29: The LinuxAbuse help text nests a <p> inside MUI Typography,
which already renders a paragraph by default. Update the Typography wrapper in
LinuxAbuse so it does not produce nested paragraphs by either setting component
to div or removing the inner paragraph element, while keeping the
AdcsEsc14ScenarioALinux content unchanged.

In
`@packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/WindowsAbuse.tsx`:
- Around line 25-30: The Typography usage in WindowsAbuse is producing invalid
nested paragraph markup because body2 already renders a p element. Update the
Typography wrapper in the WriteAltSecurityIdentities/WindowsAbuse component to
avoid a p inside p, either by changing Typography to render as a div via its
component prop or by removing the inner paragraph element while keeping the same
text and AdcsEsc14ScenarioAWindows content.

In
`@packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/LinuxAbuse.tsx`:
- Around line 25-40: The HelpTexts/WritePublicInformation/LinuxAbuse component
is using Typography variant='body2' as a paragraph wrapper while also nesting
multiple <p> elements, which creates invalid markup around the WriteSPN content.
Update the Typography usage in LinuxAbuse to render a non-paragraph element by
setting component to div (or another non-p tag) and keep the existing paragraphs
and Link structure inside it.

In
`@packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/WindowsAbuse.tsx`:
- Around line 25-40: The Typography wrapper in WindowsAbuse is rendering as a
paragraph by default, which makes the nested paragraph blocks invalid and can
disrupt spacing around the WriteSPN link. Update the Typography component in
this block to render as a div by setting component="div" so the existing inner p
elements remain valid and layout stays consistent.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 209b7806-704a-4f6d-b0e0-6cee79351cc5

📥 Commits

Reviewing files that changed from the base of the PR and between f78f8d1 and 4692051.

📒 Files selected for processing (5)
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/AdcsEsc14ScenarioA/AdcsEsc14ScenarioA.tsx
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/LinuxAbuse.tsx
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/WindowsAbuse.tsx
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/LinuxAbuse.tsx
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/WindowsAbuse.tsx

Comment on lines 33 to 39
<Typography variant='body2'>
An attacker can add an explicit certificate mapping in the AltSecurityIdentities of the target referring to
a certificate in the attacker's possession, and then use this certificate to authenticate as the target.
<p className='my-4'>
An attacker can add an explicit certificate mapping in the AltSecurityIdentities of the target referring
to a certificate in the attacker's possession, and then use this certificate to authenticate as the
target.
</p>
</Typography>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== File outline ==\n'
ast-grep outline packages/javascript/bh-shared-ui/src/components/HelpTexts/AdcsEsc14ScenarioA/AdcsEsc14ScenarioA.tsx --view expanded || true

printf '\n== Relevant source excerpt ==\n'
sed -n '1,320p' packages/javascript/bh-shared-ui/src/components/HelpTexts/AdcsEsc14ScenarioA/AdcsEsc14ScenarioA.tsx

printf '\n== Typography imports/usages in nearby help text components ==\n'
rg -n "from '`@mui/material/Typography`'|<Typography|component='div'|component=\"div\"" packages/javascript/bh-shared-ui/src/components/HelpTexts -g '*.tsx'

Repository: SpecterOps/BloodHound

Length of output: 50378


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== AdcsEsc14ScenarioA.tsx excerpt =='
nl -ba packages/javascript/bh-shared-ui/src/components/HelpTexts/AdcsEsc14ScenarioA/AdcsEsc14ScenarioA.tsx | sed -n '1,320p'

echo
echo '== Typography variantMapping/theme override search =='
rg -n "variantMapping|MuiTypography|Typography" packages/javascript/bh-shared-ui/src -g '*.ts' -g '*.tsx' -g '*.js' -g '*.jsx' | sed -n '1,240p'

Repository: SpecterOps/BloodHound

Length of output: 236


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== AdcsEsc14ScenarioA.tsx excerpt =='
sed -n '1,320p' packages/javascript/bh-shared-ui/src/components/HelpTexts/AdcsEsc14ScenarioA/AdcsEsc14ScenarioA.tsx | cat -n

echo
echo '== MuiTypography / variantMapping references =='
rg -n "MuiTypography|variantMapping|createTheme|Typography" packages/javascript/bh-shared-ui/src -g '*.ts' -g '*.tsx' -g '*.js' -g '*.jsx' | sed -n '1,220p'

Repository: SpecterOps/BloodHound

Length of output: 47953


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== theme / typography setup =='
rg -n "MuiTypography|variantMapping|createTheme\\(|ThemeProvider|typography:" packages/javascript/bh-shared-ui -g '*.ts' -g '*.tsx' -g '*.js' -g '*.jsx' | sed -n '1,220p'

echo
echo '== likely theme files =='
fd -a "theme.*|Theme.*|mui.*|palette.*" packages/javascript/bh-shared-ui/src packages/javascript/bh-shared-ui -t f | sed -n '1,120p'

Repository: SpecterOps/BloodHound

Length of output: 1076


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== doodle-ui Typography source/exports =='
fd -a "Typography.*|index.*" packages/javascript -t f | rg "doodle-ui|Typography" -n || true

echo
echo '== useTheme.tsx =='
sed -n '1,220p' packages/javascript/bh-shared-ui/src/hooks/useTheme.tsx | cat -n

echo
echo '== utils/theme.ts =='
sed -n '1,240p' packages/javascript/bh-shared-ui/src/utils/theme.ts | cat -n

echo
echo '== constants typography =='
sed -n '340,430p' packages/javascript/bh-shared-ui/src/constants.ts | cat -n

Repository: SpecterOps/BloodHound

Length of output: 16085


🌐 Web query:

MUI Typography default variantMapping body1 body2 p documentation

💡 Result:

In Material UI, the Typography component uses the variantMapping prop to map typography variants to specific semantic HTML elements [1][2][3]. By default, both the body1 and body2 variants are mapped to the paragraph (

) HTML element [2][3][4]. The default variantMapping object is defined as follows [2][3][4]: { h1: 'h1', h2: 'h2', h3: 'h3', h4: 'h4', h5: 'h5', h6: 'h6', subtitle1: 'h6', subtitle2: 'h6', body1: 'p', body2: 'p', inherit: 'p' } You can override these default mappings globally by updating the theme's MuiTypography defaultProps [5][4]: const theme = createTheme({ components: { MuiTypography: { defaultProps: { variantMapping: { body1: 'span', body2: 'span', }, }, }, }, }); Alternatively, you can override the element for a specific instance of the Typography component by using the component prop (e.g., ) [2][3].

Citations:


Avoid nested <p> elements here Typography variant='body2' renders as <p> by default, so the inner <p className='my-4'> blocks create invalid nesting. Use component='div' on the affected wrappers, or replace the block children with non-p elements. Also applies to the other body2 sections in this file.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/javascript/bh-shared-ui/src/components/HelpTexts/AdcsEsc14ScenarioA/AdcsEsc14ScenarioA.tsx`
around lines 33 - 39, The AdcsEsc14ScenarioA component is rendering nested
paragraph tags because Typography with variant='body2' defaults to a p element
while the inner content also uses p blocks. Update the affected Typography
wrappers in AdcsEsc14ScenarioA to use component='div' or replace the inner p
elements with non-paragraph containers, and apply the same fix to all other
body2 sections in this file.

Comment on lines 24 to 29
<Typography variant='body2'>
The write access to the AltSecurityIdentities may enable an ADCS ESC14 Scenario A attack.
<p className='my-4'>
The write access to the AltSecurityIdentities may enable an ADCS ESC14 Scenario A attack.
</p>
</Typography>
<AdcsEsc14ScenarioALinux />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== File contents ==\n'
sed -n '1,120p' packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/LinuxAbuse.tsx

printf '\n== Typography usage in nearby help text components ==\n'
rg -n "from '`@mui/material/Typography`'|<Typography|component='div'|component=\"div\"" packages/javascript/bh-shared-ui/src/components/HelpTexts -g '*.tsx'

printf '\n== Any theme or style overrides for MuiTypography defaultComponent ==\n'
rg -n "MuiTypography|defaultProps|defaultComponent|variantMapping" packages/javascript -g '*.{ts,tsx,js,jsx}'

printf '\n== Package versions for MUI ==\n'
rg -n '"`@mui/material`"| "`@mui/material`"' packages/javascript -g 'package.json'

Repository: SpecterOps/BloodHound

Length of output: 50378


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/LinuxAbuse.tsx =="
sed -n '1,80p' packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/LinuxAbuse.tsx

echo
echo "== Typography default/component overrides in packages/javascript/bh-shared-ui =="
rg -n "variantMapping|MuiTypography|defaultProps|component='div'|component=\"div\"" packages/javascript/bh-shared-ui -g '*.{ts,tsx,js,jsx}' | head -n 200

echo
echo "== MUI package version declaration(s) =="
rg -n '"`@mui/material`"' packages/javascript -g 'package.json' | head -n 20

Repository: SpecterOps/BloodHound

Length of output: 4964


Avoid nesting <p> inside Typography
packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/LinuxAbuse.tsx:24-29 — Typography variant="body2" renders a <p> by default in MUI, so the inner paragraph creates invalid nested paragraphs and can affect spacing/semantics. Use component="div" on the wrapper or move the <p> outside.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/LinuxAbuse.tsx`
around lines 24 - 29, The LinuxAbuse help text nests a <p> inside MUI
Typography, which already renders a paragraph by default. Update the Typography
wrapper in LinuxAbuse so it does not produce nested paragraphs by either setting
component to div or removing the inner paragraph element, while keeping the
AdcsEsc14ScenarioALinux content unchanged.

Comment on lines 25 to 30
<Typography variant='body2'>
The write access to the AltSecurityIdentities may enable an ADCS ESC14 Scenario A attack.
<p className='my-4'>
The write access to the AltSecurityIdentities may enable an ADCS ESC14 Scenario A attack.
</p>
</Typography>
<AdcsEsc14ScenarioAWindows />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== file context =="
sed -n '1,120p' packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/WindowsAbuse.tsx

echo
echo "== package refs =="
rg -n '"`@mui/material`"|`@mui/material`' packages/javascript/bh-shared-ui/package.json package.json pnpm-lock.yaml yarn.lock package-lock.json 2>/dev/null || true

echo
echo "== Typography defaults in repo =="
rg -n "component='div'|component=\"div\"|<Typography[^>]*variant='body2'|<Typography[^>]*variant=\"body2\"" packages/javascript/bh-shared-ui/src -g '*.tsx' -g '*.ts' | sed -n '1,120p'

Repository: SpecterOps/BloodHound

Length of output: 19185


🌐 Web query:

MUI Typography variant body2 default component p nested p invalid HTML documentation

💡 Result:

In HTML, the p element is a phrasing-content container that cannot contain other block-level elements, including other p elements [1][2]. Attempting to nest a p element inside another p element is invalid HTML [3][4]. When browsers encounter this, they typically auto-close the parent p element before the nested one, resulting in siblings rather than true nesting, which can lead to unexpected layout issues [4]. In Material UI (MUI), the Typography component defaults to rendering as a p element for variants like body2 [5][6]. If you nest another Typography component (which also defaults to p) inside it, you will trigger a validation error or warning (e.g., validateDOMNesting) [7]. To resolve this while maintaining the desired visual styling: 1. Change the semantic element of the nested Typography component to span by using the component prop [5][8]: Parent text Nested text 2. Alternatively, if the parent Typography component itself does not need to be a p element, you can change its semantic component to a span or div as well [5][6]. 3. For complex layouts or global adjustments, you can use the theme's variantMapping to change the default HTML tag for specific variants (e.g., changing body2 to span) [5][9]. Using span as the nested component is the standard, valid HTML approach because span elements are allowed inside p elements and can be styled to behave like block elements if necessary [10][3].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
from pathlib import Path
p = Path('packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/WindowsAbuse.tsx')
print(p.read_text())
PY

Repository: SpecterOps/BloodHound

Length of output: 1363


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Look for the MUI Typography implementation or type declarations if vendored in repo.
fd -H "Typography" . 2>/dev/null | sed -n '1,80p'

Repository: SpecterOps/BloodHound

Length of output: 450


Avoid nesting a <p> inside Typography. body2 renders a <p> here, so this creates invalid HTML and can trigger DOM-nesting warnings; switch the wrapper to component="div" or remove the inner paragraph.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/javascript/bh-shared-ui/src/components/HelpTexts/WriteAltSecurityIdentities/WindowsAbuse.tsx`
around lines 25 - 30, The Typography usage in WindowsAbuse is producing invalid
nested paragraph markup because body2 already renders a p element. Update the
Typography wrapper in the WriteAltSecurityIdentities/WindowsAbuse component to
avoid a p inside p, either by changing Typography to render as a div via its
component prop or by removing the inner paragraph element while keeping the same
text and AdcsEsc14ScenarioAWindows content.

Comment on lines 25 to 40
<Typography variant='body2'>
The write access to the AltSecurityIdentities may enable an ADCS ESC14 Scenario A attack.
</Typography>
<Typography variant='body2'>
Alternatively, the write access to the SPN enable a targeted Kerberoasting attack against user accounts
with a weak password. See the{' '}
<Link
target='_blank'
rel='noopener noreferrer'
href='https://bloodhound.specterops.io/resources/edges/write-spn'>
WriteSPN
</Link>{' '}
edge for more details.
<p className='my-4'>
The write access to the AltSecurityIdentities may enable an ADCS ESC14 Scenario A attack.
</p>
<p className='my-4'>
Alternatively, the write access to the SPN enable a targeted Kerberoasting attack against user
accounts with a weak password. See the{' '}
<Link
target='_blank'
rel='noopener noreferrer'
href='https://bloodhound.specterops.io/resources/edges/write-spn'>
WriteSPN
</Link>{' '}
edge for more details.
</p>
</Typography>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== File ==\n'
cat -n packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/LinuxAbuse.tsx

printf '\n== Import context ==\n'
sed -n '1,80p' packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/LinuxAbuse.tsx

printf '\n== Search Typography usages in nearby help texts ==\n'
rg -n "Typography variant='body2'|Typography variant=\"body2\"" packages/javascript/bh-shared-ui/src/components/HelpTexts -g '*.tsx' || true

Repository: SpecterOps/BloodHound

Length of output: 50378


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
from pathlib import Path
p = Path('packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/LinuxAbuse.tsx')
print(p.read_text())
PY

Repository: SpecterOps/BloodHound

Length of output: 1914


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== Search for Typography defaultProps / variantMapping overrides ==\n'
rg -n "MuiTypography|variantMapping|defaultProps" packages/javascript -g '*.ts' -g '*.tsx' -g '*.js' -g '*.jsx' || true

printf '\n== Search for theme creation files ==\n'
fd -a -t f -e ts -e tsx -e js -e jsx packages/javascript | rg 'theme|mui|Mui|palette|createTheme' || true

Repository: SpecterOps/BloodHound

Length of output: 5526


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== bh-shared-ui constants around MuiTypography ==\n'
sed -n '150,240p' packages/javascript/bh-shared-ui/src/constants.ts

printf '\n== Search for MuiTypography usage in bh-shared-ui ==\n'
rg -n "MuiTypography|variantMapping|component:" packages/javascript/bh-shared-ui/src -g '*.ts' -g '*.tsx' || true

Repository: SpecterOps/BloodHound

Length of output: 3841


Use a non-paragraph wrapper here.

Typography variant='body2' renders a <p> by default, so the nested <p> blocks create invalid markup and can change spacing around the WriteSPN link. Switch to component="div" (or another non-paragraph element).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/LinuxAbuse.tsx`
around lines 25 - 40, The HelpTexts/WritePublicInformation/LinuxAbuse component
is using Typography variant='body2' as a paragraph wrapper while also nesting
multiple <p> elements, which creates invalid markup around the WriteSPN content.
Update the Typography usage in LinuxAbuse to render a non-paragraph element by
setting component to div (or another non-p tag) and keep the existing paragraphs
and Link structure inside it.

Comment on lines 25 to 40
<Typography variant='body2'>
The write access to the AltSecurityIdentities may enable an ADCS ESC14 Scenario A attack.
</Typography>
<Typography variant='body2'>
Alternatively, the write access to the SPN enable a targeted Kerberoasting attack against user accounts
with a weak password. See the{' '}
<Link
target='_blank'
rel='noopener noreferrer'
href='https://bloodhound.specterops.io/resources/edges/write-spn'>
WriteSPN
</Link>{' '}
edge for more details.
<p className='my-4'>
The write access to the AltSecurityIdentities may enable an ADCS ESC14 Scenario A attack.
</p>
<p className='my-4'>
Alternatively, the write access to the SPN enable a targeted Kerberoasting attack against user
accounts with a weak password. See the{' '}
<Link
target='_blank'
rel='noopener noreferrer'
href='https://bloodhound.specterops.io/resources/edges/write-spn'>
WriteSPN
</Link>{' '}
edge for more details.
</p>
</Typography>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make the Typography wrapper a div Typography renders as a <p> by default, so the nested <p> blocks here create invalid HTML and can affect spacing around the WriteSPN link. Use component="div" on the wrapper instead.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/javascript/bh-shared-ui/src/components/HelpTexts/WritePublicInformation/WindowsAbuse.tsx`
around lines 25 - 40, The Typography wrapper in WindowsAbuse is rendering as a
paragraph by default, which makes the nested paragraph blocks invalid and can
disrupt spacing around the WriteSPN link. Update the Typography component in
this block to render as a div by setting component="div" so the existing inner p
elements remain valid and layout stays consistent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant