MapLibre の XSS 脆弱性 CVE-2026-85061 が FIX:サニタイザーの不備によるゼロクリック攻撃

MapLibre Vulnerability Exposes 2.7M Users to Zero-Click Attacks

2026/09/09 CyberSecurityNews — MapLibre GL JS ライブラリの新たなクロスサイト・スクリプティング (XSS) 脆弱性 CVE-2026-85061 (CVSS:10.0) により、推定 270 万人のアプリケーション・ユーザーがゼロクリック攻撃にさらされている。この脆弱性は maplibre-gl バージョン 6.4.0 以下に影響し、GitHub Security Advisory GHSA-jrc7-96c5-q579 として追跡されている。

MapLibre GL JS は、Web サイト/Web アプリケーションでインタラクティブな地図を描画するために使用される、オープンソースの JavaScript 地図ライブラリである。コンテンツをページへ挿入する前に、安全ではない HTML 属性を削除する DOM.sanitize() 関数に、この脆弱性は存在する。

研究者が発見したのは、ブラウザ上の動的な NamedNodeMap オブジェクトを介して、サニタイザーが要素の属性を処理していることである。この関数は属性を順番に処理すると同時に、elem.removeAttribute() を使用して危険な属性を削除する。

MapLibre のゼロクリック脆弱性

この処理により、ある属性を削除すると、その次の属性が削除された位置へ移動する一方で、ループ自体は次のインデックスへ進むため、インデックスにズレが発生し得る。その結果、別の安全ではない属性の直後に配置された悪意の属性を、サニタイザーが見逃す可能性がある。

攻撃者は、危険な属性を連続して取り込んだ HTML を提供することで、この問題を悪用する可能性があり、GitHub のアドバイザリでは、open/onload/ontoggle などの属性を含む details 要素の例が示されている。

つまり、サニタイザーが悪意の属性の 1 つを削除しても、隣接するイベント・ハンドラを検査できず、削除できない可能性があり、その後に MapLibre が Attribution Control を介して残ったペイロードを innerHTML へ挿入すると、そのイベント・ハンドラが自動的に実行される可能性がある。

この攻撃にはユーザー操作/認証情報/特別な権限が必要ないため、第三者から提供される地図スタイル/Attribution Text などの地図データを読み込むサービスにおいて、きわめて重大な問題が生じる。また、ユーザーが Attribution を指定できるアプリケーションにおいても、その値を独自に検証/無害化せずに MapLibre へ渡している場合には問題が生じる。

この脆弱性を悪用する攻撃者は、被害者のブラウザのセキュリティ・コンテキストで JavaScript を実行する可能性を得て、影響を受けるアプリケーションに応じて、アカウント・セッションの窃取/権限のない操作/機密データへのアクセス/フィッシングページへのリダイレクト/表示される地図コンテンツの改竄などを引き起こす可能性がある。

この問題は CVSS v3.1 で Critical と評価されており、ベクターは CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N で、ネットワーク経由での悪用/低い攻撃複雑性/権限不要/ユーザー操作不要という特性を示している。なお、アドバイザリは、この脆弱性を CWE-79「Web ページ生成時の入力の不適切な無害化」に分類しているが、一般にはクロスサイト・スクリプティング (XSS)として知られるものである。

すでに MapLibre のメンテナは、maplibre-gl バージョン 6.4.1 をリリースし、この脆弱性を修正している。このパッチでは、最初に Array.from(elem.attributes) を使用して要素の属性の静的コピーを作成する形に、サニタイザーの動作が変更されている。これにより、現在処理している属性のコレクション自体を変更することなく、安全に属性を検査/削除できる。

MapLibre GL JS を使用している組織に推奨されるのは、バージョン 6.4.1 以降のバージョンへ速やかにアップグレードすることである。一方、セキュリティチームに求められるのは、信頼できない地図スタイルのメタデータ、第三者の Attribution 文字列、ユーザーが制御できる独自の Attribution フィールドなどを処理するアプリケーションを特定することである。

一時的な緩和策は、Attribution に関連する入力を MapLibre へ渡す前に無害化する方法であるが、脆弱なロジックはライブラリ内部の DOM 無害化処理に含まれているため、アップグレードが最も確実な対策である。