つみかさね

CVE-2026-3087

High(7.5)

CVE-2026-3087 — Python shutil.unpack_archive() Windows パストラバーサル

公開日: 2026-06-06データソース: NVD, GitHub Advisory

影響を受けるソフトウェア

製品ベンダー影響バージョン
Python(CPython)Python Software Foundation修正コミット適用前(Windows 環境のみ)

対応ガイド

high|推奨セキュリティ修正影響: 限定的

推奨アクション

  1. 1Windows 環境で shutil.unpack_archive() を使用しているコードを確認する
  2. 2信頼できないソースからのアーカイブを展開している場合は展開後のパス検証を実装する
  3. 3修正済みバージョンの Python へアップデートする

影響対象

Python(Windows 環境)でアーカイブ展開処理を行うアプリケーション

補足

  • -Linux/macOS では影響なし。Windows 固有の問題。
CVEPythonshutilパストラバーサルWindowsZipSlip

概要

Python 標準ライブラリの shutil.unpack_archive() 関数において、Windows ドライブレター付き絶対パス(C:\... 形式)を含む ZIP アーカイブを処理すると、指定した展開先ディレクトリ外にファイルが書き出されるパストラバーサル脆弱性です(CWE-22)。

Unix 系OS(Linux/macOS)では同様の動作は発生しません。Windows 環境でのみ再現する問題です。

「Zip Slip」系の脆弱性: ユーザーからアップロードされたアーカイブを展開する処理で悪用された場合、攻撃者が任意のファイルをシステム上の予期しない場所に書き込める可能性があります。

CVSSベクトル

項目
CVSS バージョン3.1
ベクトルAV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
攻撃経路(AV)ネットワーク
攻撃の複雑さ(AC)
必要な権限(PR)不要
ユーザーインタラクション(UI)不要
機密性への影響(C)なし
完全性への影響(I)
可用性への影響(A)なし

影響を受けるソフトウェア

製品ベンダー影響バージョン
Python(CPython)Python Software Foundation修正コミット適用前のバージョン(Windows 環境)

修正バージョンと回避策

修正: CPython の修正コミット(65b255416ae8e13025747e)を含むバージョンへアップデートしてください。

回避策:

  • Windows 環境で信頼できないアーカイブファイルを shutil.unpack_archive() で展開しない
  • 展開後に各ファイルのパスが意図した展開先ディレクトリ内に収まっているか検証する
import os
import shutil

def safe_unpack(archive_path, extract_to):
    shutil.unpack_archive(archive_path, extract_to)
    # 展開後の検証
    for root, dirs, files in os.walk(extract_to):
        for file in files:
            full_path = os.path.realpath(os.path.join(root, file))
            if not full_path.startswith(os.path.realpath(extract_to)):
                raise ValueError(f"不正なパス: {full_path}")

関連リンク


データソース: NVD (NIST) AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。

Xでシェアはてブ
データソース: NVD (NIST), OSV (Google), GitHub Advisory Database, JVN iPedia (IPA/JPCERT/CC)
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。