
2025年6月、Pythonの標準ライブラリ「tarfile」に新たな脆弱性(CVE-2024-12718)が報告されました。この脆弱性は、Python 3.12以降に導入されたfilter
パラメータの設計不備に起因し、アーカイブファイルを展開する際に、意図したディレクトリ外のファイルに対してメタデータの変更(タイムスタンプやパーミッションの書き換え)が可能になるというものです。
脆弱性の対象バージョン
バージョン3.12以降
Python 3.14 以降では filter=”data” がデフォルトなので注意が必要です。
パッチはリリース済みなので、アップグレードする事をお勧めします。
脆弱性の概要
この脆弱性は、Python 3.12以降に導入されたfilter
パラメータの設計不備に起因し、アーカイブファイルを展開する際に、意図したディレクトリ外のファイルに対してメタデータの変更(タイムスタンプやパーミッションの書き換え)が可能になるというものです。
Python 3.12から導入されたtarfileのfilter
パラメータは、安全性を高めるための新機能ですが、filter="data"
やfilter="tar"
を使用した場合、アーカイブ展開時に不正なパス指定により、以下のような事態が発生します。
-
filter="data"
:任意のファイルのタイムスタンプ(mtime)を変更可能 -
filter="tar"
:任意のファイルのアクセス権限(chmod)を変更可能
つまり、アーカイブを展開しているつもりが、全く別のディレクトリにある重要ファイル(例:/etc/shadow
など)に影響を与えてしまう恐れがあるということです。
特にPython 3.14では、filter="data"
がデフォルトになっているため、無意識のうちにこの挙動に陥る危険性があります。
セキュリティが懸念される場合は、 filter=”data”またはfilter=”tar”を避け、代わりに安全なカスタム フィルターを実装してください。