Summary
src/components/ui/chart.tsx uses dangerouslySetInnerHTML to inject SVG with content derived from runtime data.
Affected area
src/components/ui/chart.tsx line ~83
Steps to reproduce / impact
If the chart ever accepts a non-trusted string (via theme config, user-defined dashboard, extension override), it becomes an XSS vector.
Expected behaviour
Render the SVG via React. If absolutely necessary, use DOMPurify with an SVG profile.
Acceptance criteria
Summary
src/components/ui/chart.tsxusesdangerouslySetInnerHTMLto inject SVG with content derived from runtime data.Affected area
src/components/ui/chart.tsxline ~83Steps to reproduce / impact
If the chart ever accepts a non-trusted string (via theme config, user-defined dashboard, extension override), it becomes an XSS vector.
Expected behaviour
Render the SVG via React. If absolutely necessary, use DOMPurify with an SVG profile.
Acceptance criteria