SCW アイコン
ヒーロー背景(区切りなし)
ブログ

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

ローラ・ベルヘイデ
2022年10月03日 掲載
最終更新日: 2026年3月9日

最近、あるセキュリティ研究者グループが、Pythonのtarファイル展開機能に15年間存在していた欠陥を発見したと発表した。この脆弱性は2007年に初めて報告され、CVE-2007-4559として追跡されている。Pythonの公式ドキュメントには注記が追加されたが、欠陥自体は修正されていない。

この脆弱性は数千ものソフトウェアプロジェクトに影響を及ぼす可能性がありますが、多くの人はその状況や対処方法に精通していません。だからこそ、セキュリティコードウォリアーズでは、この脆弱性を自らシミュレートして悪用する機会を提供し、その影響を直接目撃し、この持続的な欠陥のメカニズムを体感していただくことで、アプリケーションをより効果的に保護できるよう支援します!

今すぐミッションをシミュレートしてみよう。

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

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

この脆弱性はPythonのtarfileモジュールに存在します。tar(テープアーカイブ)ファイルは単一のファイル(アーカイブ)であり、複数のファイルとそのメタデータをまとめて格納します。通常、.tar.gzまたは .tgz拡張子で識別されます。アーカイブ内の各メンバーは、ファイル名、最終更新日時、所有権などのメタデータを含むTarInfoオブジェクトで表現できます。

リスクは、ファイルを再度抽出できることに起因する。

抽出時には、各メンバーに対して書き込み先パスを指定する必要があります。この位置は、基本パスとファイル名を連結することで作成されます:

Pythonからのスニペット Tarfile.py


このパスを作成すると、それは tarfile.extra または tarfile.extall の抽出を実行する関数に渡されます:

Pythonからのスニペット Tarfile.py

問題点はファイル名の検証が不十分であることです。攻撃者はパストラバーサル文字(例:../)を含むようにファイル名を変更でき、これによりファイルが本来あるべきディレクトリから移動し、任意のファイルを上書きします。これは最終的にリモートコード実行につながる可能性があり、攻撃の機会はすでに熟しています。

この脆弱性を特定する方法を知っているなら、他のシナリオでも同様の脆弱性が存在する可能性があります。Pythonのtarファイル処理以外にも、zipファイルの展開処理にもこの脆弱性は存在します。別の名称で知られている可能性もあります——例えば「圧縮ファイル脆弱性」として、Python以外の言語でも既に確認されています!

タスクへのリンク 

リスクをどのように低減するか?

この脆弱性は長年知られていたにもかかわらず、Pythonのメンテナンス担当者は抽出機能が意図した動作をしていると考えていました。この状況では「これは機能であってバグではない」と主張する者もいるかもしれません。残念ながら、開発者は未知のソースからのtarやzipファイルの抽出を常に回避できるわけではありません。安全な開発プラクティスの一環として、パストラバーサル脆弱性を防ぐため、信頼できない入力のクリーンアップを行う責任があります。

Python を使用して安全なコードを書き、リスクを軽減する方法についてさらに詳しく知りたいですか?

当社の無料Pythonチャレンジをお試しください

無料のプログラミングガイドをもっと入手したい場合は、安全なコーディング慣行を習得するのに役立つ「安全コードコーチ」をご覧ください。

リソースを確認する
リソースを確認する

最近、あるセキュリティ研究者グループが、Pythonのtarファイル展開機能に15年も前から存在する欠陥を発見したと発表した。この脆弱性は2007年に初めて報告され、CVE-2007-4559として追跡された。Pythonの公式ドキュメントには注記が追加されたが、欠陥自体は修正されていない。

もっと知りたいですか?

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

デモを予約する
共有する:
リンクトインのブランドソーシャルx ロゴ
作者
ローラ・ベルヘイデ
2022年10月03日発行

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

共有する:
リンクトインのブランドソーシャルx ロゴ

最近、あるセキュリティ研究者グループが、Pythonのtarファイル展開機能に15年間存在していた欠陥を発見したと発表した。この脆弱性は2007年に初めて報告され、CVE-2007-4559として追跡されている。Pythonの公式ドキュメントには注記が追加されたが、欠陥自体は修正されていない。

この脆弱性は数千ものソフトウェアプロジェクトに影響を及ぼす可能性がありますが、多くの人はその状況や対処方法に精通していません。だからこそ、セキュリティコードウォリアーズでは、この脆弱性を自らシミュレートして悪用する機会を提供し、その影響を直接目撃し、この持続的な欠陥のメカニズムを体感していただくことで、アプリケーションをより効果的に保護できるよう支援します!

今すぐミッションをシミュレートしてみよう。

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

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

この脆弱性はPythonのtarfileモジュールに存在します。tar(テープアーカイブ)ファイルは単一のファイル(アーカイブ)であり、複数のファイルとそのメタデータをまとめて格納します。通常、.tar.gzまたは .tgz拡張子で識別されます。アーカイブ内の各メンバーは、ファイル名、最終更新日時、所有権などのメタデータを含むTarInfoオブジェクトで表現できます。

リスクは、ファイルを再度抽出できることに起因する。

抽出時には、各メンバーに対して書き込み先パスを指定する必要があります。この位置は、基本パスとファイル名を連結することで作成されます:

Pythonからのスニペット Tarfile.py


このパスを作成すると、それは tarfile.extra または tarfile.extall の抽出を実行する関数に渡されます:

Pythonからのスニペット Tarfile.py

問題点はファイル名の検証が不十分であることです。攻撃者はパストラバーサル文字(例:../)を含むようにファイル名を変更でき、これによりファイルが本来あるべきディレクトリから移動し、任意のファイルを上書きします。これは最終的にリモートコード実行につながる可能性があり、攻撃の機会はすでに熟しています。

この脆弱性を特定する方法を知っているなら、他のシナリオでも同様の脆弱性が存在する可能性があります。Pythonのtarファイル処理以外にも、zipファイルの展開処理にもこの脆弱性は存在します。別の名称で知られている可能性もあります——例えば「圧縮ファイル脆弱性」として、Python以外の言語でも既に確認されています!

タスクへのリンク 

リスクをどのように低減するか?

この脆弱性は長年知られていたにもかかわらず、Pythonのメンテナンス担当者は抽出機能が意図した動作をしていると考えていました。この状況では「これは機能であってバグではない」と主張する者もいるかもしれません。残念ながら、開発者は未知のソースからのtarやzipファイルの抽出を常に回避できるわけではありません。安全な開発プラクティスの一環として、パストラバーサル脆弱性を防ぐため、信頼できない入力のクリーンアップを行う責任があります。

Python を使用して安全なコードを書き、リスクを軽減する方法についてさらに詳しく知りたいですか?

当社の無料Pythonチャレンジをお試しください

無料のプログラミングガイドをもっと入手したい場合は、安全なコーディング慣行を習得するのに役立つ「安全コードコーチ」をご覧ください。

リソースを確認する
リソースを確認する

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

当社は、当社の製品および/または関連するセキュリティコードに関する情報を送信するため、お客様の許可を得たいと考えております。お客様の個人情報は常に慎重に取り扱い、マーケティング目的で他社に販売することは決してありません。

提出
SCW成功アイコン
SCWエラーアイコン
フォームを送信するには、「分析」Cookieを有効にしてください。完了後、いつでも再度無効にできます。

最近、あるセキュリティ研究者グループが、Pythonのtarファイル展開機能に15年間存在していた欠陥を発見したと発表した。この脆弱性は2007年に初めて報告され、CVE-2007-4559として追跡されている。Pythonの公式ドキュメントには注記が追加されたが、欠陥自体は修正されていない。

この脆弱性は数千ものソフトウェアプロジェクトに影響を及ぼす可能性がありますが、多くの人はその状況や対処方法に精通していません。だからこそ、セキュリティコードウォリアーズでは、この脆弱性を自らシミュレートして悪用する機会を提供し、その影響を直接目撃し、この持続的な欠陥のメカニズムを体感していただくことで、アプリケーションをより効果的に保護できるよう支援します!

今すぐミッションをシミュレートしてみよう。

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

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

この脆弱性はPythonのtarfileモジュールに存在します。tar(テープアーカイブ)ファイルは単一のファイル(アーカイブ)であり、複数のファイルとそのメタデータをまとめて格納します。通常、.tar.gzまたは .tgz拡張子で識別されます。アーカイブ内の各メンバーは、ファイル名、最終更新日時、所有権などのメタデータを含むTarInfoオブジェクトで表現できます。

リスクは、ファイルを再度抽出できることに起因する。

抽出時には、各メンバーに対して書き込み先パスを指定する必要があります。この位置は、基本パスとファイル名を連結することで作成されます:

Pythonからのスニペット Tarfile.py


このパスを作成すると、それは tarfile.extra または tarfile.extall の抽出を実行する関数に渡されます:

Pythonからのスニペット Tarfile.py

問題点はファイル名の検証が不十分であることです。攻撃者はパストラバーサル文字(例:../)を含むようにファイル名を変更でき、これによりファイルが本来あるべきディレクトリから移動し、任意のファイルを上書きします。これは最終的にリモートコード実行につながる可能性があり、攻撃の機会はすでに熟しています。

この脆弱性を特定する方法を知っているなら、他のシナリオでも同様の脆弱性が存在する可能性があります。Pythonのtarファイル処理以外にも、zipファイルの展開処理にもこの脆弱性は存在します。別の名称で知られている可能性もあります——例えば「圧縮ファイル脆弱性」として、Python以外の言語でも既に確認されています!

タスクへのリンク 

リスクをどのように低減するか?

この脆弱性は長年知られていたにもかかわらず、Pythonのメンテナンス担当者は抽出機能が意図した動作をしていると考えていました。この状況では「これは機能であってバグではない」と主張する者もいるかもしれません。残念ながら、開発者は未知のソースからのtarやzipファイルの抽出を常に回避できるわけではありません。安全な開発プラクティスの一環として、パストラバーサル脆弱性を防ぐため、信頼できない入力のクリーンアップを行う責任があります。

Python を使用して安全なコードを書き、リスクを軽減する方法についてさらに詳しく知りたいですか?

当社の無料Pythonチャレンジをお試しください

無料のプログラミングガイドをもっと入手したい場合は、安全なコーディング慣行を習得するのに役立つ「安全コードコーチ」をご覧ください。

ウェビナーを視聴する
始めましょう
もっと詳しく

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

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

レポートを確認するデモを予約する
PDFをダウンロード
リソースを確認する
共有する:
リンクトインのブランドソーシャルx ロゴ
もっと知りたいですか?

共有する:
リンクトインのブランドソーシャルx ロゴ
作者
ローラ・ベルヘイデ
2022年10月03日発行

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

共有する:
リンクトインのブランドソーシャルx ロゴ

最近、あるセキュリティ研究者グループが、Pythonのtarファイル展開機能に15年間存在していた欠陥を発見したと発表した。この脆弱性は2007年に初めて報告され、CVE-2007-4559として追跡されている。Pythonの公式ドキュメントには注記が追加されたが、欠陥自体は修正されていない。

この脆弱性は数千ものソフトウェアプロジェクトに影響を及ぼす可能性がありますが、多くの人はその状況や対処方法に精通していません。だからこそ、セキュリティコードウォリアーズでは、この脆弱性を自らシミュレートして悪用する機会を提供し、その影響を直接目撃し、この持続的な欠陥のメカニズムを体感していただくことで、アプリケーションをより効果的に保護できるよう支援します!

今すぐミッションをシミュレートしてみよう。

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

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

この脆弱性はPythonのtarfileモジュールに存在します。tar(テープアーカイブ)ファイルは単一のファイル(アーカイブ)であり、複数のファイルとそのメタデータをまとめて格納します。通常、.tar.gzまたは .tgz拡張子で識別されます。アーカイブ内の各メンバーは、ファイル名、最終更新日時、所有権などのメタデータを含むTarInfoオブジェクトで表現できます。

リスクは、ファイルを再度抽出できることに起因する。

抽出時には、各メンバーに対して書き込み先パスを指定する必要があります。この位置は、基本パスとファイル名を連結することで作成されます:

Pythonからのスニペット Tarfile.py


このパスを作成すると、それは tarfile.extra または tarfile.extall の抽出を実行する関数に渡されます:

Pythonからのスニペット Tarfile.py

問題点はファイル名の検証が不十分であることです。攻撃者はパストラバーサル文字(例:../)を含むようにファイル名を変更でき、これによりファイルが本来あるべきディレクトリから移動し、任意のファイルを上書きします。これは最終的にリモートコード実行につながる可能性があり、攻撃の機会はすでに熟しています。

この脆弱性を特定する方法を知っているなら、他のシナリオでも同様の脆弱性が存在する可能性があります。Pythonのtarファイル処理以外にも、zipファイルの展開処理にもこの脆弱性は存在します。別の名称で知られている可能性もあります——例えば「圧縮ファイル脆弱性」として、Python以外の言語でも既に確認されています!

タスクへのリンク 

リスクをどのように低減するか?

この脆弱性は長年知られていたにもかかわらず、Pythonのメンテナンス担当者は抽出機能が意図した動作をしていると考えていました。この状況では「これは機能であってバグではない」と主張する者もいるかもしれません。残念ながら、開発者は未知のソースからのtarやzipファイルの抽出を常に回避できるわけではありません。安全な開発プラクティスの一環として、パストラバーサル脆弱性を防ぐため、信頼できない入力のクリーンアップを行う責任があります。

Python を使用して安全なコードを書き、リスクを軽減する方法についてさらに詳しく知りたいですか?

当社の無料Pythonチャレンジをお試しください

無料のプログラミングガイドをもっと入手したい場合は、安全なコーディング慣行を習得するのに役立つ「安全コードコーチ」をご覧ください。

目次

PDFをダウンロード
リソースを確認する
もっと知りたいですか?

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

デモを予約するダウンロード
共有する:
リンクトインのブランドソーシャルx ロゴ
リソースセンター

入門に役立つリソース

さらに多くの投稿
リソースセンター

入門に役立つリソース

さらに多くの投稿