PDF.js/React-PDF の脆弱性 CVE-2024-4367/34342 が FIX:ただちにアップデートを!

CVE-2024-4367 & CVE-2024-34342: JavaScript Flaws Threaten Millions of PDF.js and React-PDF Users

2024/05/07 SecurityOnline — HTML5 で開発され Mozilla がサポートする PDF ビューア PDF.js と、React アプリケーション内で PDF を表示する npm パッケージ React-PDF に、深刻なセキュリティ上の欠陥が確認された。これらの人気ソフトウェアの脆弱性は、任意の JavaScript コードの実行を可能にするものであり、数百万人のユーザーを危険にさらしている。

脆弱性の概要

PDF.js では CVE-2024-4367 として、React-PDF では CVE-2024-34342 として指定されている脆弱性は、PDF ファイル内の JavaScript の不適切な処理に起因するものだ。PDF.js/React-PDF が悪意のある PDF を読み込んだ場合に、isEvalSupported 設定が有効 (デフォルト true) になっていると、ホスティング・ドメインのコンテキスト下で、JavaScript が無制限の実行される可能性が生じる。

この脆弱性を発見したセキュリティ研究者 Thomas Rinsma は、それらを攻撃者が悪用することで、クッキーやセッショントークンの窃取および、ユーザーを装ったアクションの実行が可能になることを強く指摘している。

影響と統計

PDF.js は Web 標準ベースの PDF レンダリングにおける基盤であり、GitHub で 46,000以上のスターを誇り、npm からは毎週のように 200万近くダウンロードされている。同様に React-PDF も、週に 60万件以上のダウンロードがあるため、それらの脆弱性の影響は極めて深刻なものとなる。

影響を受けるバージョンと、パッチ適用バージョン

PDF.js:バージョン 4.1.392までが影響を受ける。この問題は、バージョン 4.2.67 で修正され、文字列として表現されたコードを実行できる、JavaScript 関数 “eval” の使用が削除されている (Patch #18015)。

React-PDF:この脆弱性は、バージョン 7.7.2 以下、および、バージョン 8.0.0〜8.0.1 に影響する。パッチが適用されたバージョンは、7.7.38.0.2 である。

回避策と緩和策

どちらの脆弱性も、isEvalSupported を false に設定することで緩和される。PDF.js では、この設定はグローバルに設定されるが、React-PDFでは Document コンポーネントの options prop 内で指定する必要がある。また、関数 “eval” を無効化することで、ユーザーは PDF ファイルを介した悪意のスクリプトの実行から、身を守ることが可能になる。

より広範な影響

CVE-2024-4367/CVE-2024-34342 の発見は、Web アプリケーション内に複雑なドキュメント・レンダリング機能を組み込む際の安全性に関して、重大な懸念を提起している。isEvalSupported を有効化するなどの、セキュリティよりも機能性を優先するデフォルト設定は、ユーザビリティとサイバーセキュリティの間の、継続的な緊張を浮き彫りにしている。

2024/05/21:PDF.js の脆弱性 CVE-2024-4367:PoC エクスプロイトが提供