Excited Hacker

研究者が、HTML 入力から PDF ファイルを生成するために多数のプロジェクトで使用されている人気の Python ライブラリである ReportLab Toolkit に影響を与えるリモート コード実行 (RCE) の欠陥に対する実用的なエクスプロイトを公開しました。

昨日、CVE-2023-33733 として追跡されるこの欠陥の概念実証 (PoC) エクスプロイトが、脆弱性に関する技術的な詳細を提供する記事とともに GitHub で公開されました。野生の搾取。

ReportLab Toolkit は PDF ライブラリとして複数のプロジェクトで使用されており、 PyPI (Python Package Index) では毎月約 350 万ダウンロードされています。

古い修正をバイパスする

この問題は、悪意のあるコードの実行を防ぐ役割を持つ「rl_safe_eval」のサンドボックス制限をバイパスする機能に起因し、攻撃者が潜在的に危険な Python 組み込み関数にアクセスするようになります。

「rl_safe_eval」関数は、2019 年に発見された同様のリモート コード実行の問題を防ぐための対策として導入されました。したがって、研究者はそれを回避することに焦点を当てました。

提示された PoC は、「str」クラスを継承する「Word」という名前の新しいクラスの作成に役立つ組み込みの「type」関数を取得します。これにより、安全性チェックをバイパスして、「code」などの機密属性へのアクセスが可能になります。

次に、引数数の制限に関する安全な eval チェックを回避するために「type」自体が呼び出され、攻撃者が元の組み込みの「type」関数を悪用して新しいクラスやオブジェクトを作成できるようになります。

これにより、コンパイルされた関数のバイトコードから悪意のある関数が構築され、実行されると任意のアクションが実行される可能性があります。研究者の例では、OS コマンドを呼び出して、「/tmp/」ディレクトリに「exploited」というファイルを作成します。

研究者は、エクスプロイト コード全体は 1 つの式で eval を使用して実行する必要があるため、そのように構造化するために「リスト内包表記」トリックを使用していると述べています。

CVE-2023-33733 の悪用
CVE-2023-33733 のエクスプロイト(GitHub)

Cure53 の研究者である Elyas Damej 氏は、CVE-2023-33733 の悪用は、ReportLab ライブラリを使用するソフトウェアで PDF に変換される HTML ファイルに悪意のあるコードを組み込むのと同じくらい簡単であると警告しています。

xhtml2pdf の欠陥を引き起こす悪意のある HTML の例
xhtml2pdf の欠陥を引き起こす悪意のある HTML の例(GitHub)

このライブラリの広範な使用と公開エクスプロイトにより、多くのユーザーが危険にさらされます。このライブラリを使用するソフトウェア ベンダーは、利用可能なセキュリティ アップデートを適用することで、結果として生じるサプライ チェーンのリスクに対処できます。

Damej 氏は、この問題は発見時に ReportLab の開発者に報告され、2023 年 4 月 27 日にリリースされたバージョン 3.6.13で修正が行われたと述べました。

研究者は、この脆弱性がライブラリの以前のすべてのバージョンに影響を与えることを明らかにしました。