Highcharts Dashboardsに脆弱性、設定次第で悪意あるスクリプトが実行されるおそれ
Summary
Highcharts Dashboardsの1.0.0から4.2.1までには、chartConstructorの検証不足により、ダッシュボードの設定を操作できる攻撃者がHTMLやイベントハンドラーを実行できる脆弱性があります。ボードを表示するだけで成立し、利用者による操作は必要ありません。修正版は4.2.2で、最新の情報を確認して更新してください。
AI summary
Written by an external AI model and may contain mistakes. Check the original description and references below before acting on it.
Highcharts Dashboardsの1.0.0から4.2.1までには、chartConstructorの検証不足により、ダッシュボードの設定を操作できる攻撃者がHTMLやイベントハンドラーを実行できる脆弱性があります。ボードを表示するだけで成立し、利用者による操作は必要ありません。修正版は4.2.2で、最新の情報を確認して更新してください。
Affected packages
| Ecosystem | Package | Affected | Fixed |
|---|---|---|---|
| highcharts | highcharts | — | — |
| @highcharts | dashboards | — | — |
| npm | @highcharts/dashboards |
≥ 1.0.0, < 4.2.2 |
4.2.2 |
Original description The description as published by the source.
Impact
The Highcharts component uses the value of chartConstructor to select a function from the Highcharts namespace and invokes it with the component's container element and its chartOptions, without checking the value against the supported chart constructors. An attacker who controls the dashboard configuration can therefore name any other public member of that namespace; utility functions in that namespace copy the supplied options onto the container element as properties or attributes, so markup and event handlers carried in chartOptions land in the page and run in the origin of the page hosting the dashboard. Exploitation requires that untrusted data reach the Dashboards component configuration. No user interaction is required beyond rendering the board.
Workarounds
If your board configuration comes from a source you do not fully control, paste this snippet right after importing libraries:
(function () {
const HighchartsComponent =
Dashboards && Dashboards.HighchartsComponent;
if (!HighchartsComponent || !HighchartsComponent.prototype.createChart) {
return; // HighchartsComponent not loaded
}
const allowedConstructors = [
'chart',
'stockChart',
'mapChart',
'ganttChart'
];
const originalCreateChart = HighchartsComponent.prototype.createChart;
HighchartsComponent.prototype.createChart = function () {
if (allowedConstructors.indexOf(this.chartConstructor) === -1) {…
Source: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
References
- advisory nvd.nist.gov
- package github.com
- web github.com
- web github.com
- web github.com
- web github.com