ブログ

Pythonのtarfileモジュールにおけるパストラバーサルバグを理解する

ローラ・ベルヘイデ
2022年10月03日発行

最近、セキュリティ研究者のチームが、Pythonのtarファイル抽出機能における15年前のバグを発見したと発表しました。この脆弱性は2007年に初めて公開され、CVE-2007-4559として追跡されました。Pythonの公式ドキュメントに注意書きが追加されましたが、バグそのものは未パッチのままでした。

この脆弱性は、何千ものソフトウェアプロジェクトに影響を与える可能性がありますが、多くの人がこの状況や対処法についてよく知らないままです。そのため、このたび Secure Code Warriorこの脆弱性がどのような影響を及ぼすかを実際に体験し、この根強いバグのメカニズムを理解することで、あなたのアプリケーションをより良く保護することができます。

今すぐシミュレーションミッションを体験してください。

脆弱性:tarファイル抽出時のパストラバーサル

パスまたはディレクトリのトラバーサルは、未分析のユーザー入力がファイルパスの構築に使用された場合に発生し、攻撃者がファイルへのアクセスや上書き、さらには任意のコードを実行することを可能にします。 

この脆弱性は、Pythonのtarfileモジュールに存在します。tar(テープアーカイブ)ファイルは、アーカイブと呼ばれる1つのファイルです。これは、複数のファイルをそのメタデータとともにパッケージ化したもので、通常、.tar.gzまたは.tgzという拡張子を持っていることで認識されます。アーカイブ内の各メンバーはTarInfoオブジェクトで表すことができ、ファイル名、変更時間、所有者などのメタデータを含んでいます。

リスクは、アーカイブが再び取り出される可能性があることに起因する。

展開する際、各メンバーには書き込むためのパスが必要です。この場所は、ベースパスとファイル名を結合することで作成される。 

Pythonのスニペット のスニペットです。


このパスが作成されると、そのパスは tarfile.extractまたは tarfile.extractall関数に渡され,抽出が行われます。 

Pythonのスニペット のスニペットです。

ここで問題となるのは、ファイル名のサニタイズが行われていないことです。攻撃者は、ドット・スラッシュ(../)のようなパス・トラバーサル文字を含むようにファイル名を変更し、ファイルが意図したディレクトリの外にトラバースして、任意のファイルを上書きすることができます。これは最終的にリモートでのコード実行につながり、悪用される可能性があります。 

この脆弱性は、特定する方法を知っていれば、他のシナリオでも出現します。Python の tar ファイルの取り扱いに加えて、zip ファイルの抽出にも脆弱性が存在します。これは、Python 以外の言語でも顕在化しているzip slip 脆弱性のような別の名前で知られているかもしれません!

ミッションへのリンク 

リスクを軽減する方法は?

この脆弱性は何年も前から知られていたにもかかわらず、Pythonのメンテナは、抽出機能が想定通りに動作していると考えています。この場合、"バグではなく、機能だ "と言う人もいるかもしれません。残念ながら、開発者は未知のソースからtarやzipファイルを展開することを常に避けることはできません。安全な開発手法の一部として、パストラバーサル脆弱性を防ぐために信頼できない入力をサニタイズすることは、開発者次第です。

Pythonで安全なコードを書き、リスクを軽減する方法についてもっと知りたいですか?

Pythonの課題を無料でお試しいただけます。

コーディングガイドラインを無料で入手したい場合は、Secure Code Coachをチェックして、セキュアコーディングの実践に役立ててください。

リソースを見る
リソースを見る

最近、セキュリティ研究者のチームが、Pythonのtarファイル抽出機能における15年前のバグを発見したことを発表しました。この脆弱性は2007年に初めて公開され、CVE-2007-4559として追跡されました。Pythonの公式ドキュメントに注意書きが追加されましたが、バグそのものは未パッチのままでした。

ご興味がおありですか?

Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。

デモを予約する
シェアする
著者
ローラ・ベルヘイデ
2022年10月03日発行

Laura Verheyde はSecure Code Warrior のソフトウェア開発者で、脆弱性のリサーチとMissions および Coding labs のコンテンツ作成に注力している。

シェアする

最近、セキュリティ研究者のチームが、Pythonのtarファイル抽出機能における15年前のバグを発見したと発表しました。この脆弱性は2007年に初めて公開され、CVE-2007-4559として追跡されました。Pythonの公式ドキュメントに注意書きが追加されましたが、バグそのものは未パッチのままでした。

この脆弱性は、何千ものソフトウェアプロジェクトに影響を与える可能性がありますが、多くの人がこの状況や対処法についてよく知らないままです。そのため、このたび Secure Code Warriorこの脆弱性がどのような影響を及ぼすかを実際に体験し、この根強いバグのメカニズムを理解することで、あなたのアプリケーションをより良く保護することができます。

今すぐシミュレーションミッションを体験してください。

脆弱性:tarファイル抽出時のパストラバーサル

パスまたはディレクトリのトラバーサルは、未分析のユーザー入力がファイルパスの構築に使用された場合に発生し、攻撃者がファイルへのアクセスや上書き、さらには任意のコードを実行することを可能にします。 

この脆弱性は、Pythonのtarfileモジュールに存在します。tar(テープアーカイブ)ファイルは、アーカイブと呼ばれる1つのファイルです。これは、複数のファイルをそのメタデータとともにパッケージ化したもので、通常、.tar.gzまたは.tgzという拡張子を持っていることで認識されます。アーカイブ内の各メンバーはTarInfoオブジェクトで表すことができ、ファイル名、変更時間、所有者などのメタデータを含んでいます。

リスクは、アーカイブが再び取り出される可能性があることに起因する。

展開する際、各メンバーには書き込むためのパスが必要です。この場所は、ベースパスとファイル名を結合することで作成される。 

Pythonのスニペット のスニペットです。


このパスが作成されると、そのパスは tarfile.extractまたは tarfile.extractall関数に渡され,抽出が行われます。 

Pythonのスニペット のスニペットです。

ここで問題となるのは、ファイル名のサニタイズが行われていないことです。攻撃者は、ドット・スラッシュ(../)のようなパス・トラバーサル文字を含むようにファイル名を変更し、ファイルが意図したディレクトリの外にトラバースして、任意のファイルを上書きすることができます。これは最終的にリモートでのコード実行につながり、悪用される可能性があります。 

この脆弱性は、特定する方法を知っていれば、他のシナリオでも出現します。Python の tar ファイルの取り扱いに加えて、zip ファイルの抽出にも脆弱性が存在します。これは、Python 以外の言語でも顕在化しているzip slip 脆弱性のような別の名前で知られているかもしれません!

ミッションへのリンク 

リスクを軽減する方法は?

この脆弱性は何年も前から知られていたにもかかわらず、Pythonのメンテナは、抽出機能が想定通りに動作していると考えています。この場合、"バグではなく、機能だ "と言う人もいるかもしれません。残念ながら、開発者は未知のソースからtarやzipファイルを展開することを常に避けることはできません。安全な開発手法の一部として、パストラバーサル脆弱性を防ぐために信頼できない入力をサニタイズすることは、開発者次第です。

Pythonで安全なコードを書き、リスクを軽減する方法についてもっと知りたいですか?

Pythonの課題を無料でお試しいただけます。

コーディングガイドラインを無料で入手したい場合は、Secure Code Coachをチェックして、セキュアコーディングの実践に役立ててください。

リソースを見る
リソースを見る

以下のフォームに記入し、レポートをダウンロードしてください。

弊社製品や関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

送信
フォームを送信するには、「Analytics」のCookieを有効にしてください。完了したら、再度無効にしてください。

最近、セキュリティ研究者のチームが、Pythonのtarファイル抽出機能における15年前のバグを発見したと発表しました。この脆弱性は2007年に初めて公開され、CVE-2007-4559として追跡されました。Pythonの公式ドキュメントに注意書きが追加されましたが、バグそのものは未パッチのままでした。

この脆弱性は、何千ものソフトウェアプロジェクトに影響を与える可能性がありますが、多くの人がこの状況や対処法についてよく知らないままです。そのため、このたび Secure Code Warriorこの脆弱性がどのような影響を及ぼすかを実際に体験し、この根強いバグのメカニズムを理解することで、あなたのアプリケーションをより良く保護することができます。

今すぐシミュレーションミッションを体験してください。

脆弱性:tarファイル抽出時のパストラバーサル

パスまたはディレクトリのトラバーサルは、未分析のユーザー入力がファイルパスの構築に使用された場合に発生し、攻撃者がファイルへのアクセスや上書き、さらには任意のコードを実行することを可能にします。 

この脆弱性は、Pythonのtarfileモジュールに存在します。tar(テープアーカイブ)ファイルは、アーカイブと呼ばれる1つのファイルです。これは、複数のファイルをそのメタデータとともにパッケージ化したもので、通常、.tar.gzまたは.tgzという拡張子を持っていることで認識されます。アーカイブ内の各メンバーはTarInfoオブジェクトで表すことができ、ファイル名、変更時間、所有者などのメタデータを含んでいます。

リスクは、アーカイブが再び取り出される可能性があることに起因する。

展開する際、各メンバーには書き込むためのパスが必要です。この場所は、ベースパスとファイル名を結合することで作成される。 

Pythonのスニペット のスニペットです。


このパスが作成されると、そのパスは tarfile.extractまたは tarfile.extractall関数に渡され,抽出が行われます。 

Pythonのスニペット のスニペットです。

ここで問題となるのは、ファイル名のサニタイズが行われていないことです。攻撃者は、ドット・スラッシュ(../)のようなパス・トラバーサル文字を含むようにファイル名を変更し、ファイルが意図したディレクトリの外にトラバースして、任意のファイルを上書きすることができます。これは最終的にリモートでのコード実行につながり、悪用される可能性があります。 

この脆弱性は、特定する方法を知っていれば、他のシナリオでも出現します。Python の tar ファイルの取り扱いに加えて、zip ファイルの抽出にも脆弱性が存在します。これは、Python 以外の言語でも顕在化しているzip slip 脆弱性のような別の名前で知られているかもしれません!

ミッションへのリンク 

リスクを軽減する方法は?

この脆弱性は何年も前から知られていたにもかかわらず、Pythonのメンテナは、抽出機能が想定通りに動作していると考えています。この場合、"バグではなく、機能だ "と言う人もいるかもしれません。残念ながら、開発者は未知のソースからtarやzipファイルを展開することを常に避けることはできません。安全な開発手法の一部として、パストラバーサル脆弱性を防ぐために信頼できない入力をサニタイズすることは、開発者次第です。

Pythonで安全なコードを書き、リスクを軽減する方法についてもっと知りたいですか?

Pythonの課題を無料でお試しいただけます。

コーディングガイドラインを無料で入手したい場合は、Secure Code Coachをチェックして、セキュアコーディングの実践に役立ててください。

リソースにアクセス

以下のリンクをクリックし、この資料のPDFをダウンロードしてください。

Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。

レポートを見るデモを予約する
PDFをダウンロード
リソースを見る
シェアする
ご興味がおありですか?

シェアする
著者
ローラ・ベルヘイデ
2022年10月03日発行

Laura Verheyde はSecure Code Warrior のソフトウェア開発者で、脆弱性のリサーチとMissions および Coding labs のコンテンツ作成に注力している。

シェアする

最近、セキュリティ研究者のチームが、Pythonのtarファイル抽出機能における15年前のバグを発見したと発表しました。この脆弱性は2007年に初めて公開され、CVE-2007-4559として追跡されました。Pythonの公式ドキュメントに注意書きが追加されましたが、バグそのものは未パッチのままでした。

この脆弱性は、何千ものソフトウェアプロジェクトに影響を与える可能性がありますが、多くの人がこの状況や対処法についてよく知らないままです。そのため、このたび Secure Code Warriorこの脆弱性がどのような影響を及ぼすかを実際に体験し、この根強いバグのメカニズムを理解することで、あなたのアプリケーションをより良く保護することができます。

今すぐシミュレーションミッションを体験してください。

脆弱性:tarファイル抽出時のパストラバーサル

パスまたはディレクトリのトラバーサルは、未分析のユーザー入力がファイルパスの構築に使用された場合に発生し、攻撃者がファイルへのアクセスや上書き、さらには任意のコードを実行することを可能にします。 

この脆弱性は、Pythonのtarfileモジュールに存在します。tar(テープアーカイブ)ファイルは、アーカイブと呼ばれる1つのファイルです。これは、複数のファイルをそのメタデータとともにパッケージ化したもので、通常、.tar.gzまたは.tgzという拡張子を持っていることで認識されます。アーカイブ内の各メンバーはTarInfoオブジェクトで表すことができ、ファイル名、変更時間、所有者などのメタデータを含んでいます。

リスクは、アーカイブが再び取り出される可能性があることに起因する。

展開する際、各メンバーには書き込むためのパスが必要です。この場所は、ベースパスとファイル名を結合することで作成される。 

Pythonのスニペット のスニペットです。


このパスが作成されると、そのパスは tarfile.extractまたは tarfile.extractall関数に渡され,抽出が行われます。 

Pythonのスニペット のスニペットです。

ここで問題となるのは、ファイル名のサニタイズが行われていないことです。攻撃者は、ドット・スラッシュ(../)のようなパス・トラバーサル文字を含むようにファイル名を変更し、ファイルが意図したディレクトリの外にトラバースして、任意のファイルを上書きすることができます。これは最終的にリモートでのコード実行につながり、悪用される可能性があります。 

この脆弱性は、特定する方法を知っていれば、他のシナリオでも出現します。Python の tar ファイルの取り扱いに加えて、zip ファイルの抽出にも脆弱性が存在します。これは、Python 以外の言語でも顕在化しているzip slip 脆弱性のような別の名前で知られているかもしれません!

ミッションへのリンク 

リスクを軽減する方法は?

この脆弱性は何年も前から知られていたにもかかわらず、Pythonのメンテナは、抽出機能が想定通りに動作していると考えています。この場合、"バグではなく、機能だ "と言う人もいるかもしれません。残念ながら、開発者は未知のソースからtarやzipファイルを展開することを常に避けることはできません。安全な開発手法の一部として、パストラバーサル脆弱性を防ぐために信頼できない入力をサニタイズすることは、開発者次第です。

Pythonで安全なコードを書き、リスクを軽減する方法についてもっと知りたいですか?

Pythonの課題を無料でお試しいただけます。

コーディングガイドラインを無料で入手したい場合は、Secure Code Coachをチェックして、セキュアコーディングの実践に役立ててください。

目次

PDFをダウンロード
リソースを見る
ご興味がおありですか?

Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。

デモを予約するダウンロード
シェアする
リソース・ハブ

始めるためのリソース

その他の記事
リソース・ハブ

始めるためのリソース

その他の記事