何が起きたか
NVD REST APIで検証済み(公開日2026-10-14、CVSS 8.1、CWE-22/59、GHSA-qvrm-3x4c-rcxf)。修正(0.17.8)はデータセットアーカイブ抽出パスでエスケープするリンクメンバーを拒否します。
なぜ重要か
MLトレーニングパイプラインは日常的にリモート/ホスト型ソースからデータセットアーカイブを取得します。侵害されたアーカイブは、フレームワークがオーケストレーターの権限で実行されている間にファイル(例:config、cache、モデルディレクトリ内)を仕掛けることができます — MLビルドへの実用的なポイズニング/上書き経路です。トレーナーは固定・検証済みソースから抽出し、サンドボックス化/最小権限コンテキストで抽出を実行する必要があります。
攻撃経路
extract_archive()はTarFile.extractall()の前にtarメンバー名を検証しますが、シンボリックリンク/ハードリンクメンバーは検証しません。巧妙に細工されたアーカイブは抽出ディレクトリからエスケープするリンクを作成し、後続のメンバーを介して任意のファイルシステムパスに書き込みます(CWE-22/59)。commonprefix包含チェックは、宛先の文字プレフィックスを共有する兄弟パスも許可します。Python 3.14は免疫(デフォルトのtarデータフィルター)。
影響を受けるシステム
ludwig-ai/ludwig < 0.17.8(Python 3.12/3.13)
緩和策
ludwig >= 0.17.8にアップグレード。抽出前にアーカイブの出所を検証。ファイルシステムアクセスが制限されたコンテナでのデータセット取り込みを推奨。