Vegaは、対話型の視覚化デザインを作成、保存、共有するための宣言型フォーマットである視覚化文法です。バージョン6.1.2および5.6.3以前では、2つの条件を満たすアプリケーションが任意のJavaScriptコードを実行されるリスクがあります。たとえ「セーフモード」のexpressionInterpreterを使用していても危険です。第一に、`vega`ライブラリとVegaエディターに類似した`vega.View`インスタンスの両方をグローバルな`window`にアタッチするアプリケーション、またはグローバルスコープに他の満足できる関数ガジェットを持つものが該当します。第二に、ソースコードを通じてのみ提供されるJSONではなく、ユーザー定義のVega `JSON`定義を許可している場合です。この脆弱性は、ライブラリの使用方法によって保存型および反射型のDOMベースのXSSを引き起こす可能性があります。脆弱性を悪用するには、ユーザーがページと対話する必要があります。攻撃者はユーザーを騙して悪意のあるVega仕様を開かせることでこの問題を悪用できます。成功すると、攻撃者はアプリケーションのドメインコンテキストで任意のJavaScriptを実行可能になります。これにより、認証トークンなどの機密情報を窃取し、ユーザーに表示されるデータを改ざんし、被害者に代わって不正な操作を実行することが可能となります。この攻撃は、影響を受けるアプリケーションの機密性と完全性を侵害します。修正済みバージョンはVega v6向けの`vega-selections@6.1.2`(ESMが必要)およびVega v5向けの`vega-selections@5.6.3`(ESM不要)で利用可能です。回避策としては、Vega/Vega-lite定義が信頼できない提供元から来る可能性がある状況では、エディターが従来行っていたように`vega`または`vega.View`インスタンスをグローバル変数やwindowにアタッチしないことが推奨されます。これは開発時のデバッグ目的のみの手法であり、本番環境での使用は避けるべきです。
|