AIを駆使したサイバー攻撃:インテリジェントな脅威を検知、予防、防御する方法

今すぐ読む
サイト翻訳には人工知能を利用しており、正確性を追求しておりますが、必ずしも100%正確とは限りません。ご了承ください。

Dompdfライブラリの脆弱性の発見と修正OPSWAT MetaDefender Core 

By OPSWAT
この記事を共有する
情報科学大学の学生、タイ・チャンとハイ・ダン・ブイ。
OPSWAT フェローシップ・プログラムに学生が参加

テクノロジーの急速な発展は、熟練した開発者に対する高い需要を生み出している。オープンソースソフトウェア(OSS)は、この成長する労働力にとって不可欠なツールとなっている。現在、さまざまなプログラミング言語にわたって、何十万もの確立されたOSSパッケージが存在している。90%以上の開発者が、自社独自のアプリケーションの中でこれらのオープンソースコンポーネントを活用しており、OSSの効率性と価値提案を浮き彫りにしている。その重要性をさらに強調するように、世界のオープンソースソフトウェア市場は2030年までに807億ドルに達すると予想されており、年間16.7%の成長率が予測されている。 

Software 世界中の事業運営に不可欠なものであり、それゆえに脅威行為者に頻繁に狙われている。2023年のアプリケーション・セキュリティへの支出は約57億6,000万ドルで、2024年には66億7,000万ドルに達すると予測されている。AppSecの中でも、ソフトウェアサプライチェーンセキュリティは過去3年間で注目を集め、最も急成長している攻撃カテゴリーであり、大規模な侵害や悪用が定期的に見出しを飾っている。 

組織はしばしば、ほとんどのリスクは一般向けのウェブ・アプリケーションから発生すると考える。しかし、この考え方は近年変わってきています。どのアプリケーションにも小さなコンポーネントが何十個もあり、リスクはコードベースのどこからでも発生する可能性があります。組織にとって、ソフトウェア開発ライフサイクルにおける既存のセキュリティ欠陥や新たなセキュリティ欠陥に精通することは、これまで以上に重要なことです。このブログ記事では、HTML と CSS から PDF 文書を動的に生成する強力な PHP ツールである dompdf ライブラリで発見された重大なセキュリティ欠陥、CVE-2023-23924 について、フェローが詳しく解説します。 

包括的な分析を通じて、この脆弱性の技術的な複雑さ、重要な役割を果たす関連技術、そして悪用プロセスのシミュレーションを探ります。また OPSWAT MetaDefender Core特にその Software Bill of Materials (SBOM)エンジンは、この脆弱性を検出し緩和するために活用することができ、ソフトウェア開発者とセキュリティチームに潜在的な脅威の一歩先を行く力を与えます。 

CVE-2023-23924の背景 

dompdfのバージョン2.0.1にセキュリティの脆弱性が発見され、2023年の初めに公開された:

  • dompdf 2.0.1のURIバリデーションは、SVGパース時に次のように渡すことで回避できます。 <image> タグを大文字で使用することができます。この脆弱性により、攻撃者は任意の URL を任意のプロトコルで呼び出すことが可能となり、 PHP バージョン 8.0.0 より前のバージョンでは、任意のオブジェクトのシリアライズを解除される可能性があります。 PHAR URL ラッパーを経由することで、この脆弱性は任意のファイルの削除や、 利用可能なクラスによってはリモートでのコード実行を引き起こす可能性があります。 
  • NVD アナリストは、CVE-2023-23924 に CVSS スコア9.8 CRITICALを割り当てました。 
セキュリティ脆弱性の深刻度とベクター文字列を含む、CVSS バージョン 3.x のメトリクスを示す有益な図

Dompdf脆弱性を理解する 

dompdfの脆弱性CVE-2023-23924を完全に理解するためには、密接に関連する2つの技術に精通することが不可欠です:スケーラブル・ベクター・グラフィックス(SVG)とPHARファイルです。 

SVG (スケーラブル・ベクター・グラフィックス) 

SVG(Scalable Vector Graphics)は、軽量でスケーラブルでありながら、ウェブ上で高品質なグラフィックをレンダリングできることから、広く普及している汎用性の高い画像フォーマットです。ラスター画像とは異なり、SVGはXMLマークアップに基づいているため、線、図形、テキストなどの要素を正確に制御することができます。SVG の主な利点の一つは、画質を損なうことなくシームレスに拡大縮小できることであり、レスポンシブ・ウェブデザインや高解像度ディスプレイに最適です。  

複数のポリゴンを異なる色で表示するSVGのコード・スニペット。
PHARファイル 

PHAR (PHP Archive) は JAR ファイルの概念に似ていますが、PHP 用です。すべてのPHPコードとリソースファイルを単一のアーカイブファイルにバンドルすることで、デプロイを容易にします。  

PHARファイルは4つのセクションからなる:  

  • スタブ:アーカイブをブートストラップするコードを含む。 
  • マニフェスト:アーカイブのメタデータを含む。このメタデータはシリアライズされた形式で保存されており、悪意のあるPHARファイルでPHPのデシリアライズ攻撃を引き起こすために使用される可能性があります。 
  • ファイルの内容:PHPコードやリソースファイルなど、アーカイブの内容が含まれます。 
  • 署名(オプション):ファイルの完全性を検証するためのデータを含む。 

メタデータがシリアライズされた形式で保存されているため、PHARラッパーとPHARファイルのメタデータの組み合わせは、以下のようなPHP関数の入力として使用された場合、デシリアライズ攻撃を引き起こす可能性があります。 file_get_contents()、fopen()、file()、file_exists()、md5_file()、filemtime()、 または ファイルサイズ.このセキュリティ上の見落としは、攻撃者が PHAR ファイルを介してリモートでコードを実行することを可能にする可能性がある。 

バイト単位のサイズと各パートの説明を含む、Phar アーカイブ マニフェストの基本的なファイル形式の詳細。

DompdfがPDFファイルを生成する方法

HTMLファイルをPDFフォーマットに変換するプロセスを示すフローチャート。

分析を通じて、OPSWAT Graduate Fellowsは、dompdfの変換プロセスには3つの段階があることを突き止めた。HTMLファイルをPDF形式に変換するために、dompdfライブラリはまず入力ファイルをDOMツリーに解析し、各オブジェクトの位置とレイアウト情報を保存する。次に、CSSスタイルが解析され、各オブジェクトに適用されます。最後に、オブジェクトがページに収まるように再編成され、最終的なPDFファイルにレンダリングされます。  

Dompdfのセキュリティ脆弱性

セキュリティを強化するために、dompdfは次のステップに進む前にURI入力の安全性を保証するバリデーションを実装している。この検証処理は、SVGファイルの処理中に xlink:href 属性を持つ。 

SVGファイルを扱うためのPHPコード例。SVGコンテンツの解析と検証のための関数を示す。

SVG入力ファイルに <image> タグの下に <svg> タグのような特定のプロトコルのみを許可する条件が実装されています。 http://, https:// そして file://のためのものである。 xlink:href フィールド

ユーザーがHTMLまたはSVGファイルをアップロードしてPDFに変換できるPDF ConverterサービスのWebインターフェース

について resolve_url() 関数は、URIを drawImage() 関数を使用する。URIのスキームが許可されたプロトコルの中にない場合 resolve_url() 関数はアプリケーションに例外を返す。 

データURIの扱い方を示すPHPスクリプト、ウェブアプリケーションにおけるエラー処理とプロトコル検証の説明

URIがバリデーションに合格すると、そのURIは次のように渡される。 drawImage() 関数を使用する。 file_get_contents() 関数を使用して xlink:href 属性のデシリアライズ攻撃を引き起こす可能性がある。もし攻撃者がバリデーションをバイパスしてURIにPHARラッパーを渡すことができれば、PHARデシリアライズ攻撃が引き起こされる可能性があります。 

分析の結果、検証は正確な名前の画像を持つタグに対してのみ実施されることが判明した。 

PHPによる画像操作の例。データのURLから画像を描画したり、ファイルの内容を処理したりする関数を詳しく説明する。

その結果、Image のようなタグ名の1文字以上を大文字にすることで簡単に回避できる。その結果、特別に細工された SVG ファイルが image の代わりに Image を使えば、この検証を回避できる。 

続くステップでは drawImage() 関数が呼び出され、SVG ファイルの URI を file_get_contents() 関数を使用する。従って、検証バイパスと PHAR ファイルへのデシリアライズ攻撃の組み合わせにより、攻撃者はリモートコード実行を行うことができる。この脆弱性は、SVG ファイルが脆弱なバージョンの dompdf で扱われた場合、悪意のある攻撃者が SVG ファイルを通してアプリケーションサーバを侵害する可能性を開く。 

Dompdf Exploitationシミュレーション

脆弱なアプリケーション

この悪用を実際のシナリオとしてシミュレートするために、OPSWAT 大学院フェローは、dompdf ライブラリ バージョン 2.0.1 を使用して HTML から PDF への変換を特徴とするウェブアプリケーションを開発した。このアプリケーションでは、ユーザーがHTML、XML、SVGなどのファイルタイプをアップロードし、PDFファイルに変換することができます。 

人型のアバターが特徴的な、ファイルアップロードと変換機能を強調したウェブベースのPDF変換ツールのスクリーンショット

攻撃者は、脆弱性のあるdompdfのバージョン(バージョン2.0.1)を使用するアプリケーションにおいて、この脆弱性を悪用するために以下の手順を踏む: 

HTMLを横長フォーマットのPDFファイルに変換するDompdfライブラリの使用を示すPHPコードスニペット
PHPプロジェクトでDompdfライブラリ・バージョン2.0.1の要件を指定するComposer.jsonファイルのスニペット
搾取の流れ
Dompdfの脆弱性を利用してSVGファイルを悪用し、リバース・シェルを実行する4つのステップを説明する図解

まず攻撃者は、デストラクタが呼ばれたときにリバースシェルを作成する悪意のあるオブジェクトを生成する。 

リバースシェル経由でリモートコード実行につながるPHPのオブジェクトのデシリアライズの脆弱性を示すPHPコード例

次に、攻撃者は悪意のあるメタデータオブジェクトを含む PHAR ファイルを作成する。このPHARファイルが、PHARラッパーによって file_get_content() 関数を呼び出すと、メタデータはデシリアライズされ、指定されたオブジェクトが処理される。このデシリアライズ処理中に、デストラクタがトリガされ、リバースシェルが実行されます。 

リモートコマンドを実行するためのシリアル化されたオブジェクトデータを含むPharアーカイブの作成を実演するPHPスクリプト

最終的に、攻撃者はPHARラッパーを含むURIリンクを xlink:href 属性を使って検証を回避し、悪意のあるコードを実行し、この悪意のあるファイルをアプリケーションにアップロードします。 

画像参照を通じてリモートのPHPデシリアライズ悪用を埋め込む方法を示すSVGコード・スニペット

アップロードされた悪意のある SVG ファイルの処理中に、アプリケーションは攻撃者との逆接続を確立し、攻撃者がアプリケーション・サーバを侵害できるようにします。 

HTML/SVGファイルをアップロードしてPDFに変換するオプションを表示するPDFコンバータのウェブインターフェース。
成功したTCP逆接続とネットワーク設定の詳細を示すMetasploitコンソールのスクリーンショット
Unixシステムから取得したネットワーク構成と認証情報を表示する端末のスクリーンショット

オープンソースコンポーネントのセキュリティOPSWAT MetaDefender Core 

dompdfの脆弱性CVE-2023-23924を検出・緩和するために、フェローは、SBOMを含む高度なマルウェア防御・検出技術を提供する多層型サイバーセキュリティ製品であるOPSWAT MetaDefender Core を利用しました。 

OPSWAT SBOMは、ソースコードとコンテナの包括的なコンポーネントインベントリを提供することで、ソフトウェアのサプライチェーンを保護します。dompdf ライブラリとその依存関係を分析することで、OPSWAT SBOM は脆弱なバージョン 2.0.1 の存在を迅速に特定し、潜在的なリスクをユーザーに警告することができます。 

さらに、OPSWAT SBOM は、CVE-2023-23924 脆弱性を理解し緩和するために不可欠な SVG や PHAR ファイルなどの関連技術を検出することができます。アプリケーションのソフトウェアコンポーネントのこのような全体的なビューは、セキュリティチームが情報に基づいた決定を下し、特定されたリスクに対処するための適切なアクションを取ることを支援します。 

脆弱性によりブロックされたJavaScriptファイルと詳細な評価結果を表示するセキュリティ分析インターフェース

OPSWAT SBOM は、脆弱性のある dompdf のバージョンを検出するだけでなく、影響を受けるコンポーネント、そのバージョン、利用可能なアップデートやパッチに関する貴重な情報も提供する。この情報によって、セキュリティ・チームは修復作業の優先順位を決め、アプリケーションを安全なバージョンの dompdf に確実に更新し、CVE-2023-23924 脆弱性に効果的に対処することができます。 

JavaScriptオブジェクト表記ファイル内の脆弱性を詳細に表示し、CVE識別子とともにクリティカルリスクとハイセキュリティリスクをリストアップ。

MetaDefender Core 内の SBOM エンジンを活用することで、企業はソフトウェアのサプライチェーンを積極的に監視し、オープンソースコンポーネントの潜在的な脆弱性を特定し、タイムリーな緩和戦略を実施することができ、アプリケーションの全体的なセキュリティと完全性を確保することができる。 

おわりに 

dompdfライブラリにCVE-2023-23924が発見されたことは、アプリケーション・セキュリティのダイナミックな状況における警戒の必要性を強調するものである。このブログ記事で概説されている洞察と戦略を活用することで、セキュリティチームは、このような脆弱性を効果的に検出し、緩和し、アプリケーションを保護することができ、ソフトウェア・エコシステム全体のセキュリティと完全性を確保することができます。 

OPSWATで最新情報をお届けします!

今すぐご登録ください、 ストーリー、イベント情報などをお届けします。