Highcharts ダッシュボード:`chartConstructor` は、Highcharts の名前空間へのチェックされていない参照です。

### 影響
Highcharts コンポーネントは、`chartConstructor` の値を使用して、Highcharts の名前空間から関数を選択し、コンポーネントのコンテナ要素と、その `chartOptions` を引数として呼び出します。ただし、この値がサポートされているチャートのコンストラクタに対して検証されるわけではありません。したがって、ダッシュボードの設定を制御する攻撃者は、その名前空間の他の公開メンバーを任意に指定することができます。その名前空間内のユーティリティ関数は、提供されたオプションをコンテナ要素のプロパティまたは属性としてコピーするため、`chartOptions` に含まれるマークアップやイベントハンドラがページに挿入され、ダッシュボードをホストするページのオリジンで実行されます。この脆弱性を悪用するには、信頼できないデータがダッシュボードコンポーネントの設定に到達する必要があります。ダッシュボードのレンダリング以外に、ユーザーの操作は必要ありません。

### 対策
ダッシュボードの設定が完全に制御できないソースから取得される場合は、ライブラリのインポート直後に、以下のコードを貼り付けてください。
```ts
(function () {
const HighchartsComponent =
Dashboards && Dashboards.HighchartsComponent;

if (!HighchartsComponent || !HighchartsComponent.prototype.createChart) {
return; // HighchartsComponent がロードされていない
}

const allowedConstructors = [
'chart',
'stockChart',
'mapChart',
'ganttChart'
];
const originalCreateChart = HighchartsComponent.prototype.createChart;

HighchartsComponent.prototype.createChart = function () {
if (allowedConstructors.indexOf(this.chartConstructor) === -1) {
this.chartConstructor = 'chart';
}

return originalCreateChart.apply(this, arguments);
};
}());
```

### パッチが適用されたバージョンの入手方法
パッチが適用されたバージョンは、通常の配布チャネルから入手できます。npmを使用している場合は、影響を受けるパッケージを上記のパッチが適用されたバージョンにアップグレードしてください。例えば、`npm install @highcharts/dashboards@4.2.2`と入力します。Highcharts DashboardsをCDNから読み込んでいる場合は、バージョン番号付きのURLを使用してください。例えば、`https://code.highcharts.com/dashboards/4.2.2/dashboards.js`です。各インストール方法の詳細については、[インストールガイド](https://www.highcharts.com/docs/dashboards/installation)を参照してください。

影響を受けるパッケージ:
- npm (JavaScript) @highcharts/dashboards: 影響を受けるバージョンは1.0.0以上、4.2.1以下。4.2.2で修正済み。