Yelp の脆弱性 CVE-2025-3155:URI スキームを悪用する情報窃取 PoC

PoC Released for CVE-2025-3155: Yelp Flaw Can Expose SSH Keys on Ubuntu Systems

2025/04/08 SecurityOnline — Ubuntu デスクトップにプリインストールされる GNOME ユーザーのための、ヘルプ・アプリケーション Yelp に脆弱性 CVE-2025-3155 が発見された。この脆弱性は、Yelp が URIスキームである “ghelp://” を処理する方法に起因している。

まず URI スキームについて説明する。URI スキームとは、URI で識別されるリソースを処理するプロトコル、または、特定のアプリケーション (steam://run/1337 ) を指定するための、Uniform Resource Identifier (URI) の一部である。さらに言えば、コロン “://” の前の部分である。

Yelp は、”ghelp://” のスキーム・ハンドラーとして登録されている。しかし、研究者たちは、このスキームに関するオンライン・リソースが限られていることを指摘し、その使用例として “$ yelp ghelp:///usr/share/help/C/gnome-calculator/” を示している。

この脆弱性は、Yelp による “.page” ファイルの処理に起因する。この “.page” ファイルは、Mallard スキーマを用いる XML ファイルである。そして、これらのファイルは、XML 埋め込みメカニズムである XInclude を使用できる。研究者である parrot409 は、「ここで興味深いのは、legal.xml の内容を文書に埋め込むために、XInclude が使用されていることだ。つまり、XInclude 処理が有効化されていることだ」と指摘している。

この研究者が実証するのは、”/etc/passwd” の内容を含むサンプル “.page” ファイルを提供することで、XInclude を悪用する手順である。

Yelp は、XSLT アプリケーション (yelp-xsl) を使用することで “.page” ファイルを HTML ファイルに変換し、WebKitGtk によりレンダリングする。この XSLT に関しては、”XML 文書の変換に使用される XML ベースの言語” と説明されている。

XInclude を利用する攻撃者は、悪意のスクリプトを取り込んだファイルからコンテンツを挿入することで、出力 HTML ページに悪意のクリプトを挿入できる。ただし、GitHub の記事では、「入力 XML に < script > タグまたは on* 属性を追加するだけでは機能しない」と指摘されている。これらのタグは、yelp-xsl アプリケーションでは処理されないためである。

その一方で研究者たちは、XSLT アプリケーションが特定の要素と、その子要素を変更せずに、出力にコピーできることを発見した。その一例が、SVG タグの処理である。このアプリケーションは、タグと内容を出力にコピーするため、タグ内のタグを使用して任意のスクリプトを挿入できてしまう。

GitHub の記事では、”~/.ssh/id_rsa”ファイルを盗み出すための、PoC エクスプロイトが提供されている。

この攻撃シナリオでは、悪意の “index.page” ファイルを被害者のダウンロード・フォルダに追加し、そのフォルダを指す “ghelp” URL へとユーザーをリダイレクトする。

研究者は、この攻撃シナリオにおける制限事項を指摘している:

  • 攻撃者は、被害者の Unix ユーザー名を知っている必要がある。
  • カスタム・スキームへのリダイレクトについて、ブラウザがユーザーに許可を求める場合がある。

ただし、GNOME (Chrome/Firefox) により起動されるアプリケーションの、CWD (current working directory) の大半は、ユーザーのホーム・ディレクトリであると説明されている。したがって、この動作を悪用すると、正確なユーザー名を必要とせずに、被害者のダウンロード・フォルダへと誘導される可能性がある。

推奨される主な対策は、信頼できないカスタム・スキームのリンクを開かないことである。

GNOME のデフォルトのヘルプビューアである Yelp に、脆弱性が発見されました。PoC エクスプロイトが提供されたことで、悪用の可能性も高まります。ご利用のチームは、お気をつけください。よろしければ、GNOME で検索も、ご参照ください。