「PDF.js」に任意コード実行の脆弱性 ~多くのWebサイト・アプリに影響/「Firefox」内蔵PDFビューワーでも用いられているPDF表示ライブラリ

by 樽井 秀人

Codean Labs、「PDF.js」に任意のJavaScriptコードを実行できる脆弱性(CVE-2024-4367)があることを明らかに

オランダのセキュリティベンダーCodean Labsは5月20日(現地時間)、「PDF.js」に任意のJavaScriptコードを実行できる脆弱性(CVE-2024-4367)があることを明らかにした。

「PDF.js」は、HTML5で構築されたPDFビューワー。「Firefox 19」以降に搭載されている内蔵PDFビューワーなどに用いられている。

PDF形式は複雑なことで有名で、これまでも攻撃のターゲットになってきた。しかし、その多くはC/C++実装のメモリ破壊バグを狙ったものであり、低レベルなメモリアクセスを扱わないJavaScriptで構築された「PDF.js」はそれと無縁に思える。

しかし、Codean Labsによると「PDF.js」でフォントをレンダリングするコードには見落としがあるという。「PDF.js」はパフォーマンスに最適化するために、すべてのグリフがあらかじめパス生成関数であらかじめコンパイルされているが、それをトランスフォーム(変形)させる関数は暗黙的に数値配列が入力されることを想定しており、データのチェックが不十分だ。そのため、悪意あるカスタムフォントを読み込ませることで、実行可能なコードを注入できてしまう可能性がある。

実証コード(PoC)が成功した様子

この問題は4月26日にMozillaへ報告され、3日後の29日に修正された。修正は5月14日にリリースされた「Firefox 126」、「Firefox ESR 115.11」、「Thunderbird 115.11.0」に含まれており、最新版へアップデートしていれば脆弱性の影響を受けることはない。ちなみに、Mozillaによる深刻度の評価は、4段階中2番目の「High」だ。

しかし、「PDF.js」はMozilla製品だけでなく、Webサイトや「Electron」ベースのデスクトップアプリでも広く用いられている。Webサイトの運営者やアプリの開発者は注意したい。ユーザーは利用しているPDFアプリにアップデートがあれば、できるだけ早めにそれを適用すべきだ。

© 株式会社インプレス