Chartbrew has a stored DOM XSS via Chart Tooltip innerHTML (ChartDatasetConfig.legend)
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- Required
- Attack complexity
- Low
- Impact type
- Cross-site scripting
- Confidentiality · integrity · availability
- High · Low · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA. Impact type from CWE-79.
Summary
Chartbrew is an open-source web application that can connect directly to databases and APIs and use the data to create charts. In versions 4.9.0 through 5.0.0, an authenticated user with project-editor permissions can store arbitrary HTML/JavaScript in the `ChartDatasetConfig.legend` field. The payload is persisted verbatim in the database, propagated through the Chart.js rendering pipeline, and injected into the tooltip DOM element via an unguarded `innerHTML` assignment in `ChartTooltip.js`. Every unauthenticated viewer of the public dashboard triggers JavaScript execution on page load — no hover interaction is required. Browser-based Playwright verification confirmed `alert('localhost')` fires immediately and `<img src="x" onerror="alert(document.domain)">` is present in the `#chartjs-tooltip` DOM element. Version 5.0.1 contains a fix.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
Remediation
- Fix · CNA chartbrew (chartbrew) Fixed in 5.0.1
Timeline
- 2026-10-02 Threatist record created from CVE-2026-41518
More chartbrew vulnerabilities
- TI-2026-46993 Chartbrew: SQL Injection via Missing Backslash Escaping in ClickHouse Variable Substitution CVSS 4.0HIGH 7.9
- TI-2026-29337 Chartbrew: Missing Authorization in /api/chart/:chart_id/query via team-level refresh toggle CVSS 3.1HIGH 7.5
- TI-2026-29331 Chartbrew: Incorrect Access Control in public chart and export routes via missing onReport and SharePolicy checks CVSS 3.1HIGH 7.5
- TI-2026-29560 Chartbrew: Incorrect Access Control in dataset and dataRequest routes via team-scoped permission checks CVSS 3.1HIGH 8.1
- TI-2026-29336 Chartbrew: Incorrect Access Control in project share policy routes via unbound policy_id CVSS 3.1HIGH 8.1
- TI-2026-24781 Chartbrew Cross-Tenant Template Export and Secret Disclosure in `GET /team/:team_id/template/generate/:project_id` CVSS 3.1HIGH 7.7
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences