Highcharts Dashboardsのフルスクリーン表示に脆弱性、スクリプトを実行されるおそれ
Summary
Highcharts Dashboardsの編集モードで、フルスクリーンの言語ラベルがテキストではなくHTMLとして解釈されるクロスサイトスクリプティングの脆弱性です。1.0.0から4.2.3までが対象で、攻撃者が言語オプションを操作できると、ラベルを表示したときにイベントハンドラーが実行されるおそれがあります。修正版は4.2.3ですので、Highchartsと@highcharts/dashboardsを4.2.3以降に更新してください。
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の編集モードで、フルスクリーンの言語ラベルがテキストではなくHTMLとして解釈されるクロスサイトスクリプティングの脆弱性です。1.0.0から4.2.3までが対象で、攻撃者が言語オプションを操作できると、ラベルを表示したときにイベントハンドラーが実行されるおそれがあります。修正版は4.2.3ですので、Highchartsと@highcharts/dashboardsを4.2.3以降に更新してください。
Affected packages
| Ecosystem | Package | Affected | Fixed |
|---|---|---|---|
| highcharts | highcharts | — | — |
| @highcharts | dashboards | — | — |
| npm | @highcharts/dashboards |
≥ 1.0.0, < 4.2.3 |
4.2.3 |
Original description The description as published by the source.
Impact
The edit mode fullscreen labels are parsed as HTML when the corresponding control is rendered. An attacker who controls the Dashboards language options can supply markup carrying event handlers, which then execute in the origin of the page hosting the dashboard. Exploitation requires that untrusted data reach the Dashboards language configuration and that the affected control be rendered. Script running this way has the same access to page data, storage and session state as the hosting application.
Workarounds
Until you can upgrade, replace Fullscreen.prototype.setButtonText atapplication startup. The replacement is the original method with textContent in place of innerHTML.
If you install Dashboards from npm
Import the module once, before any board is created.
import Fullscreen from '@highcharts/dashboards/es-modules/Dashboards/EditMode/Fullscreen.js';
Fullscreen.prototype.setButtonText = function () {
const editMode = this.board.editMode,
button = editMode?.tools.contextMenu?.items.viewFullscreen;
if (button?.innerElement) {
const lang = editMode.lang;
button.innerElement.textContent =
(this.isOpen ? lang.exitFullscreen : lang.viewFullscreen) || '';
}
};
If you load Dashboards from a `` tag
The same replacement, taking Fullscreen from the global namespace. It must run after modules/layout and before any board is created.
{
const Fullscreen = window.Dashboards…
Source: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
References
- package github.com
- web github.com
- web github.com
- web github.com
- web github.com