GitHub Advisory Databaseに、ammoniaのXSS脆弱性「CVE-2026-63430」が掲載されています。特定のタグ設定が重なると、攻撃者がブラウザーで任意のJavaScriptを実行できるため、独自に許可するタグを増やしている利用側は確認が必要です。資料では公表日を確認できませんが、修正版はリリース済みです。
影響はタグと属性の設定の組み合わせで決まる
XSSは、ブラウザー上で意図しないスクリプトを実行される脆弱性です。今回の原因は、MathMLに関わるannotation-xmlの扱いにあります。名前空間に適合しないタグの除去が不十分でした。
影響するかを判断するには、ammoniaを使っているという情報だけでは足りません。アドバイザリーが示す成立条件は、次の組み合わせです。
mathとannotation-xmlの両タグを許可している。
encoding属性を許可していない。
- HTMLで生テキストとして解析されるタグを、少なくとも1つ許可している。
最後の条件に当たるタグとして、textarea、iframe、style、scriptなどが挙げられています。これらの必要な生テキストのタグは、既定ではいずれも許可されていません。アドバイザリーは、成立条件が限られることから、影響を「低」と評価しています。
確認の焦点は、許可するタグと属性を独自に変更しているかです。タグの一覧と属性の一覧を別々に見るだけでなく、同じ処理で上記の条件がそろっていないかを確認してください。
修正版は3つ、annotation-xmlを除去する回避策も
修正版として、4.1.3、4.0.2、3.3.2がリリースされています。一方、資料には影響を受ける版の範囲が示されていません。利用中の版を記録し、修正版への更新方針を開発担当者と確認する必要があります。修正版の日本での提供は発表には書かれていません。
回避策は、builder.add_clean_content_tags("annotation-xml")を呼び出すことです。この処理は、annotation-xmlだけでなく、その全子要素も除去します。
そのため、回避策を入れる場合は、実際に扱うコンテンツで表示結果を確認する作業も組み合わせてください。単に特定のタグだけを取り除く変更として扱わず、配下の要素も消えることを開発担当者に伝えるのが重要です。
影響する会社・しない会社
- 影響する: ammoniaを利用し、
mathとannotation-xmlを許可し、encoding属性を許可せず、さらに必要な生テキストのタグを1つ以上許可している会社です。
- 影響しない: 必要な生テキストのタグを既定どおり許可していない利用環境は、今回示された攻撃の成立条件を満たしません。
- 影響しない: ammoniaを利用していない会社は、今回の確認対象外です。ただし、利用の有無が不明な場合は、開発担当者や委託先への確認を先に行ってください。
情シスが今日やること
以下は社内で進めるための手順です。対応期限は発表には書かれていません。
- 利用箇所と版を確認する。 開発担当者や委託先に、ammoniaの利用有無、利用しているシステム名、導入版の回答を依頼します。今日のうちに確認担当者を決め、未確認のシステムも一覧に残してください。
- タグと属性の設定を突き合わせる。 開発担当者に、ammoniaの設定を定義しているコードで、
math、annotation-xml、encodingと生テキストのタグの許可状況を確認してもらいます。版の確認だけで調査を終えないようにします。
- 更新か回避策かを決める。 成立条件に当てはまる場合は、4.1.3、4.0.2、3.3.2への更新方針を確認します。回避策を使う場合は、全子要素も除去することを担当者に共有し、反映前に表示を確認してください。
- 判断の根拠と予定を残す。 システムの管理責任者に、設定条件への該当・非該当、選んだ対処、反映予定日を知らせます。非該当の場合も、確認した設定を記録しておくと、後の設定変更時に再確認できます。