テクノロジーの急速な発展は、熟練した開発者に対する高い需要を生み出している。オープンソースソフトウェア(OSS)は、この成長する労働力にとって不可欠なツールとなっている。現在、さまざまなプログラミング言語にわたって、何十万もの確立されたOSSパッケージが存在している。開発者の90%以上が、自社独自のアプリケーションにこれらのオープンソースコンポーネントを活用しており、OSSの効率性と価値提案を浮き彫りにしている。その重要性をさらに強調するように、世界のOSS市場は2030年までに807億ドルに達すると予想されており、年間16.7%の成長率が予測されている。
しかし、OSSの普及は、セキュリティの脆弱性という新たな複雑性のレイヤーを導入することにもなる。相互に接続された膨大な数のOSSコンポーネントは、悪意ある行為者が悪用するための攻撃対象領域を広げてしまう。さまざまなOSSパッケージの依存関係を管理することは複雑で、脆弱性を迅速に特定し、パッチを当てることが難しくなります。さらに、OSSのセキュリティは多くの場合、開発者コミュニティの警戒心と貢献に依存しています。このため、特に人気のないプロジェクトでは、脆弱性のパッチ適用が遅れることがあります。
この記事では、OPSWAT Graduate Fellows が、人気のあるオープンソースライブラリ ReportLab で発見されたセキュリティ上の欠陥、CVE-2023-33733 について検証します。彼らの分析は、MetaDefender を活用した模擬攻撃と組み合わされています。 MetaDefender Coreを活用した Software Bill of Materials (SBOM)機能により、脆弱な ReportLab ライブラリを含むアプリケーションの依存関係の脆弱性を特定します。
レポートラボライブラリ紹介
ReportLabは強力でオープンソースのPythonライブラリで、Pythonコードから機能豊富なPDFを生成することができます。柔軟性、使いやすさ、そしてダイナミックなドキュメントを作成するための広範なカスタマイズオプションです。このライブラリは、開発者にPDFの制御を強化し、テキスト、画像、表、グラフを緻密に組み込むことを可能にします。このレベルのカスタマイズにより、ReportLabは請求書やデータドリブンレポートのようなダイナミックドキュメントを作成するための貴重なツールとなります。
CVE-2023-33733 背景
CVE-2023-33733 は、ReportLab ライブラリ内のセキュリティ脆弱性を強調しており、ReportLab ライブラリの複数のバージョンに影響を与えます。
- ReportLabのバージョン3.6.13より前のバージョンには、サンドボックス回避の脆弱性があることが判明しました。
'rl_safe_eval'
関数を使用した。HTMLタグのcolor属性を利用した。eval()
関数を実行し、最終的にリモートでコードが実行される。 - NVD AnalystはCVE-2023-33733にCVSSスコア7.8 HIGHを割り当てた。
ReportLabのセキュリティ脆弱性の分析
OPSWAT フェローは、ReportLabのワークフローを深く分析し、セキュリティ脆弱性CVE-2023-33733の根本原因を特定しました。
ReportLabは開発者にPDFを効率的に作成する力を与えます。ライブラリをインポートし、HTMLコンテンツを定義し、result関数を使用して1行のコードでPDFを生成します。
レポートラボでHTMLからPDFを作成するための5つのステップを、私たちの大学院生が発見しました。
ReportLabでHTMLからPDFを作成する5ステップのプロセスの中で、3つの主要なプロセスが際立っています:段落処理、パラパーサ処理、HTML処理プロセスです。
上の図に示されているように、ReportLab内のHTML処理プロセスは eval()
関数は、色属性に特化している。悪意のあるコードを実行するための焦点として機能する eval()
関数は、アプリケーションを悪用するために、その入力を制御することを研究者に促す。しかし、これは __rl_safe_eval__。
関数を使用します。
というサンドボックスを実装した。 __rl_safe_eval__。
.このサンドボックスは、すべてのPython組み込み関数を除外し、いくつかのオーバーライドされた組み込み関数を含みます。この制限により、悪意のある目的(ファイルシステムへのアクセスやネットワーク通信など)に使用される可能性のある危険な関数やライブラリへのアクセスを防ぎながら、ライブラリ内で安全なコードを実行することができます。
について rl_safe_eval
サンドボックス関数は、Pythonの組み込みの getattr()
関数を使用して取得し、結果を返す。
安全なeval関数は、危険な関数を除外し、悪意のある動作を防止することで、環境の安全を確保することを目的としている。しかし、その条件を迂回して強力な組み込み関数にアクセスする方法が見つかれば、悪用される可能性がある。
このアイデアに基づいて、セキュリティ研究者たちは制限を迂回しようと試みた。最初は、オブジェクト・インジェクションを悪用するために type()
関数を使用してオブジェクトを構築し、その属性とメソッドを再定義する。 __rl_safe_eval__。
.さらに、ReportLab ライブラリは組み込み関数をオーバーライドし、eval コンテキストにグローバルとして作成するため、研究者はこの実装を利用して元の組み込み関数の 1 つにアクセスすることができます。これにより、サンドボックス環境を迂回して悪意のあるコードを実行することができる。
ペイロードは以下のように準備される:
とはいえ、evalコンテキスト内で複数行の式を実行することはできない。しかし、リスト内包のトリックを使うことができ、このCVEを悪用するペイロードは以下の通りである:
レポラボ搾取シミュレーション
研究者は CVE-2023-33733 の概念実証(POC)を公表し、ReportLab の脆弱なバージョンで構築されたアプリケーションがサイバー攻撃を受ける可能性があることを示しました。この潜在的な脅威を評価するために、OSPWATのフェローはウェブアプリケーションに対する模擬攻撃を実施しました。彼らは、SBOM機能を備えたMetaDefender Core 活用して、影響を受けるReportLabライブラリの存在を含む、アプリケーションソフトウェアの依存関係内のセキュリティ脆弱性を特定しました。
この悪用を実際のシナリオとしてシミュレートするために、OPSWAT フェローはPythonとReportLabライブラリの脆弱なバージョンを使ってウェブアプリケーションを開発した。このアプリケーションは典型的なユースケースを模倣しており、ユーザーはHTMLファイルをアップロードし、それをPDFファイルに変換することができる。
攻撃者は、以下を悪用するように設計されたコードを含む悪意のあるHTMLファイルを作成することができる。 33733.このコードはサンドボックスを迂回し、リバースシェルをトリガーすることでウェブサーバを侵害する可能性があります。 eval()
関数である。
悪意のあるファイルのアップロードに成功すると、古いReportLabライブラリの脆弱性により、攻撃者はアプリケーションサーバーを制御できるようになる。
SBOMとプロアクティブ・セキュリティの重要性
OPSWAT Graduate FellowsのCVE-2023-33733に関する研究は、OSSに関連する潜在的なセキュリティリスクを強調しています。OSSは、開発効率や費用対効果の面で否定できない利点を提供する一方で、ReportLabで見つかったような脆弱性は、組織をサイバー攻撃にさらす可能性があります。
OPSWAT SBOMは、ソースコードとコンテナの包括的なコンポーネント・インベントリを提供することで、ソフトウェアのサプライチェーンを保護します。Java、JavaScript、Go、PHP、Pythonを含む10以上の言語、500万以上のサードパーティのオープンソースソフトウェアコンポーネントをサポートし、National Vulnerability Database(NVD)とGitHub(GHSA)から入手した17K以上の脆弱性のデータベースを利用しています。
OPSWAT MetaDefender Core、統合されたSBOM機能により、組織がこれらのリスクにプロアクティブに対処できるようにします。MetaDefender Core 、ソフトウェアアプリケーションと依存関係をスキャンし、リストされたコンポーネント内のCVE-2023-33733のような既知の脆弱性の存在を特定します。これにより、開発者とセキュリティチームは、パッチの適用に優先順位をつけ、悪用される前にセキュリティリスクを軽減することができます。
おわりに
ReportLabの脆弱性(CVE-2023-33733)に関するOPSWAT Graduate Fellowsの研究は、ソフトウェア開発ライフサイクルにおけるプロアクティブなセキュリティ対策の重要性を再認識させる貴重なものとなりました。OPSWAT MetaDefender Coreようなツールを活用することで、組織はソフトウェアの依存関係について重要な洞察を得ることができ、攻撃者に悪用される前に潜在的な脆弱性を特定することができます。
さらにOPSWAT 、脆弱性スキャンにとどまらない包括的なサイバーセキュリティ・ソリューションを提供しています。 これらのソリューションは、リアルタイムの脅威検知、データセキュリティ、エンドポイントプロテクションを提供し、幅広いサイバー脅威から組織を守ります。MetaDefender Coreようなツールを含むレイヤードセキュリティアプローチを採用することで、組織は関連するセキュリティリスクを最小限に抑えながら、OSSの利点を活用することができます。