GHSA-6hgp-fmhr-mrg4
Highcharts Grid: `javascript:` URL in credits.href runs script on click
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @highcharts/dashboards | >= 3.2.0, < 4.0.0 | 4.0.0 |
| npm | @highcharts/grid-pro | >= 2.0.0, < 3.2.0 | 3.2.0 |
Details
As written in the advisory (Markdown source, shown as plain text).
### Impact
An attacker who controls the Grid configuration can set `credits.href` to a `javascript:` URL. The value is not validated against an allowed-scheme list before it is applied to the credits link, so activating that link runs attacker-supplied script in the origin of the page hosting the Grid. Exploitation requires that untrusted data reach the Grid configuration and that a user activate the credits link. Script running this way has the same access to page data, storage and session state as the hosting application.
### Workarounds
Paste in after the Grid Pro module is imported, before a Grid is created.
```javascript
const { AST } = Grid;
function sanitize(options) {
const credits = options && options.credits;
if (credits && typeof credits.href === 'string') {
const filtered = AST.filterUserAttributes({ href: credits.href });
if (!filtered.href) {
delete credits.href;
}
}
return options;
}
// Both Grid.grid() and grid.update() funnel through loadUserOptions, so one
// hook covers both entry points.
const { prototype } = Grid.Grid;
const loadUserOptions = prototype.loadUserOptions;
prototype.loadUserOptions = function (options, ...rest) {
sanitize(options);
return loadUserOptions.call(this, options, ...rest);
};
```
### Obtaining the patched version
The patched releases are available from all the usual distribution channels. With npm, upgrade the affected package to the patched version listed above, for example `npm install @highcharts/[email protected]`. If you load Highcharts Grid from a CDN, use a versioned URL, for example `https://cdn.jsdelivr.net/npm/@highcharts/[email protected]/grid-lite.js`. For more on each installation method, see the [installation guide](https://www.highcharts.com/docs/grid/installation).
References
External links from the advisory. They lead to third-party sites.
- https://github.com/highcharts/highcharts/security/advisories/GHSA-6hgp-fmhr-mrg4
- https://github.com/highcharts/highcharts/pull/25351
- https://github.com/highcharts/highcharts/commit/45b74403acafbe9f621c4a343506721d9129e991
- https://github.com/highcharts/highcharts
- https://github.com/highcharts/highcharts/releases/tag/grid-v3.2.0