Webのアプリで、利用者が入れたHTMLから危ないスクリプトを取り除く(無害化する)ために広く使われるJavaScriptの部品「DOMPurify」で、勧告が3件出ました。GitHubの勧告のデータベースに載ったのは10月22日(協定世界時)です。深刻度はCritical、High、Lowが1件ずつで、どれも10月12日に出た3.4.17で直っています。
どの勧告も、DOMPurifyの特定の設定や使い方のときに起きるものです。社内で作ったWebのアプリでDOMPurifyを使っているなら、版と設定を確かめます。

3件の中身
| 勧告 | 深刻度 | 起きる条件 | 対象の版 |
|---|---|---|---|
| GHSA-cg2g-xh64-v4q7 | Critical(CVSS 4.0で9.2) | テンプレートの式を消す設定(SAFE_FOR_TEMPLATES)と、DOMを返す使い方(RETURN_DOM・RETURN_DOM_FRAGMENT・IN_PLACE)を組み合わせたとき。シャドウルートの中に分けて置いたテンプレートの式(二重の波かっこで囲む式など)が、無害化のあとにつながって残り、後ろのテンプレートの仕組みが実行してしまう | 3.4.4以上3.4.16以下 |
| GHSA-mrv2-3pqr-j5jr | High(CVSS 4.0で7.6) | 元の要素をその場で書き換えるIN_PLACEで、フックが処理中の要素の親や、まだ見ていない兄弟の要素を外したとき。外れた部分のイベントの処理(画像の読み込みの失敗のときに動く処理など)が残り、無害化のあとに動いてしまう。3.4.16の修正(GHSA-p98j-92pf-mc4p)が足りなかったもの | 3.4.16以下 |
| GHSA-c6gr-qvv4-5v3f | Low | XHTMLの扱い(PARSER_MEDIA_TYPEの指定)のときに、SMILの属性の確かめが飛ばされる | 3.4.16以下 |
3.4.17のリリースノートも、IN_PLACEとSAFE_FOR_TEMPLATESとシャドウルートの問題、IN_PLACEでフックなどが触れた要素の扱い、XHTMLのときのSMILの属性の確かめを直したとしています。あわせて、READMEでIN_PLACEの使い方の危険をはっきり書いたとしています。












