セキュリティ · 1 min read · Oct 17, 2025

15歳の未修正Pythonバグが35万プロジェクトでコード実行を許可

35万以上のユニークなオープンソースリポジトリが、Pythonのtarfileモジュールに存在する15年前の未修正の脆弱性により、潜在的なサプライチェーンサイバー攻撃のリスクにさらされていると考えられています。このモジュールは、Pythonを使用するプロジェクトのデフォルトモジュールです。

現在、Pythonのtarfileモジュールは、AWS、Facebook、Google、Intel、Netflixによって作成されたフレームワークに広く見られ、ソフトウェア開発、人工知能/機械学習、コード開発などのいくつかの業界だけでなく、ウェブ開発、セキュリティ、IT管理、メディアなどの多様な分野でも使用されています。

この脆弱性は、CVE-2007-4559(CVSSスコア:6.8)として追跡されており、15年前に発見されました。この欠陥は、2行または3行の簡単なコードで生成された悪意のあるファイルをアップロードすることで悪用され、攻撃者に任意のコード実行やターゲットデバイスの制御を許可します。

今年の初め、CVE-2007-4559は、別のセキュリティ問題を調査している際にTrellixの脆弱性研究者カジミール・シュルツによって再発見されました。

「無関係な脆弱性を調査している際に、Trellixの高度な研究センターはPythonのtarfileモジュールに脆弱性を発見しました。最初は新しいゼロデイ脆弱性を見つけたと思いましたが、問題を掘り下げるうちに、実際にはCVE-2007-4559であることがわかりました」とセキュリティ企業Trellixが発表した投稿には記されています。

「この脆弱性は、tarfileモジュールのextractおよびextractall関数におけるパストラバーサル攻撃であり、攻撃者がTARアーカイブ内のファイル名に「..」シーケンスを追加することで任意のファイルを上書きできるようにします。」

この脆弱性は元々6.8とマークされていましたが、ほとんどの場合、攻撃者はファイル書き込みからコード実行を得ることができます。以下のビデオでは、TrellixがUniversal Radio Hackerを悪用してコード実行を得る方法を示しています。

攻撃者は、悪意のあるtarfileをアップロードすることで、この欠陥を悪用し、抽出される予定のディレクトリを脱出し、コード実行を達成することが可能になり、敵がターゲットデバイスの制御を奪う可能性があります。

「攻撃者がこの脆弱性を利用するには、ファイル名にオペレーティングシステムのセパレーター(「/」または「\」)と共に「..」を追加して、ファイルが抽出される予定のディレクトリを脱出する必要があります。Pythonのtarfileモジュールは、まさにこれを可能にします。」と投稿は続きます。

「tarfileモジュールは、ユーザーがファイルをtarアーカイブに追加する前に、そのメタデータを解析および変更するために使用できるフィルターを追加できるようにします。これにより、攻撃者は上記の6行のコードだけで自分の悪用を作成できます。」

「信頼できないソースからアーカイブを抽出する前に、必ず事前に検査してください」とtarfileのPythonドキュメントには記載されています。「ファイルがパスの外に作成される可能性があります。たとえば、‘/’で始まる絶対ファイル名を持つメンバーや、2つのドット‘..’を含むファイル名などです。」

さらに、TrellixはCVE-2007-4559に脆弱なプロジェクトをスキャンするための無料ツールCreosoteをリリースし、Spyder Python IDEやPolemarchのようなアプリケーションに潜む脆弱性を明らかにするために使用しています。

「この脆弱性は放置されると、世界中の数十万のオープンソースおよびクローズドソースプロジェクトに意図せず追加され、かなりのソフトウェアサプライチェーン攻撃面を作り出します」とTrellixの主任エンジニアで脆弱性研究のディレクターであるダグ・マッキーは指摘しました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。