[CVE-2024-54160]-Opensearch-HTMLインジェクション + 保存型XSS
Opensearch のプラグイン「reports」が、バージョン 2.18.0 で HTML インジェクションに対して脆弱であることが判明しました。
レポート機能により、ユーザーは新しいレポート定義を作成する際に、ヘッダーとフッターに HTML を保存できました。
以下は、ヘッダー機能に iframe を保存し、ローカルマシンからユーザーが入力したキーを記録する JavaScript キーロガーを取得させた、簡単な概念実証です。
PoC
- keylogger.html ファイルを編集し、python3 http.server が実行されているローカル IP を追加します。
- keylogger.html を保存します。
- keylogger.html ファイルと同じパスで "python3 -m http.server" を使って python3 サーバーを起動します。
- Reports に移動します。
- 必須フィールドを入力します。
- PDF を選択します。
- ヘッダーまたはフッターを有効にします。
- iframe ペイロードを入力します ->
:8000/keylogger.html">
- "Preview" をクリックします - キーロガーが python サーバーから読み込まれるはずです。
- キーボードで何か入力し、python サーバーで応答を確認します。
動作中のPoCのスクリーンショット
- iframe で埋め込まれたコンテンツは左側に表示されます(シンプルで見苦しいのは分かっていますが、PoC としては機能します :))。
- 記録されたキーストロークは右側に表示されます。(このキーロガーの PoC は一部のキーストロークを取りこぼすため、最適とは言えませんでしたが!)

是正措置
これは Opensearch バージョン 2.19 で修正されており、フッター/ヘッダー機能に渡されるデータは DOMpurify でサニタイズされます。
リリースノート
https://github.com/opensearch-project/opensearch-build/blob/main/release-notes/opensearch-release-notes-2.19.0.md
Opensearch からのPR
https://github.com/opensearch-project/dashboards-reporting/pull/476
保存型XSS
バージョン 2.17.9 も、同じ機能(フッター/ヘッダー)において保存型クロスサイトスクリプティングに対して脆弱であることが判明しました。
これもバージョン 2.19.0 で修正されています。
CVE
https://www.cve.org/CVERecord?id=CVE-2024-54160