# axe-core@4.13.0 security report (npm)

- Verdict: **Needs review** (risk level: medium)
- Scanned: 2026-10-06T14:13:50.000Z
- Files reviewed: 1
- Findings: 3 medium, 1 low severity findings
- Report: https://security.togoder.click/npm/axe-core
- Source: Togoder Security (https://security.togoder.click), AI source-code review

## Summary

Togoder Security scanned the npm package axe-core@4.13.0 on Oct 6, 2026. An AI review of 1 source file produced 3 medium, 1 low severity findings. The overall verdict is medium: the findings flag risky but common patterns (dynamic code, unsafe defaults, broad file or network access) rather than confirmed malware.

## Findings

### [medium] DOM enumeration and internal state extraction

Finding ID: `NPS-BA518750FD6F`

File: `gather-internals.js`

The code walks the entire DOM tree (including shadow roots) and attempts to extract ElementInternals objects from custom elements using multiple property and symbol name guesses. This could be used to gather accessibility internals, form associations, roles, and labels for all elements on a page. While not directly exfiltration, this is a systematic information-gathering routine that could be used for fingerprinting or scraping page structure and semantics.

### [medium] Cross-shadow-root traversal

Finding ID: `NPS-3D2BA396A849`

File: `gather-internals.js`

The walkTree function recursively traverses shadow roots, allowing inspection of encapsulated DOM content. This breaks encapsulation assumptions and can expose otherwise hidden component internals.

### [medium] Sensitive internal property access

Finding ID: `NPS-D24F8CD5AE7C`

File: `gather-internals.js`

The getElementInternals function probes properties named '_internals', 'internals', and 'internals_', as well as symbols with descriptions 'internals' and 'privateInternals'. These are typically private implementation details. Accessing them may expose framework- or component-specific internal state that shouldn't be publicly readable.

### [low] Global state pollution / side effects at import

Finding ID: `NPS-6F5FAD821A76`

File: `gather-internals.js`

The module immediately invokes walkTree() at load time via require_main(), scanning the entire document and populating a global-ish array (elementInternalsMap). This runs side effects on import, which can be used to silently collect data without an explicit function call by the consumer.

## Files reviewed

- `gather-internals.js` (medium): This code systematically scans the DOM (including shadow DOM) to harvest accessibility-related ElementInternals data from custom elements, which is not overtly malicious but constitutes a privacy-invasive information-gathering routine with side effects at import time.

AI analysis is guidance, not a guarantee. Methodology: https://security.togoder.click/methodology
