TARmageddon という名の脆弱性 CVE-2025-62518:Async-Tar Rust lib の深刻な問題

TARmageddon flaw in Async-Tar Rust library allows to smuggle extra archives when the library is processing nested TAR files

2025/10/22 SecurityAffairs — Rust の async-tar/tokio-tar ライブラリのフォークに存在する、深刻な脆弱性 CVE-2025-62518 (CVSS:8.1) が、Edera チームにより報告された。TARmageddon とも呼ばれる、この脆弱性を悪用するリモート攻撃者は、コード実行の可能性を手にする。


Edera のアドバイザリには、「astral-tokio-tar は、非同期 Rust 用の tar アーカイブ Read/Write ライブラリである。astral-tokio-tar のバージョン 0.5.6 以下には、境界解析の脆弱性が存在する。それを悪用する攻撃者は、PAX/ustar ヘッダー処理の一貫性の欠如を突くことで、追加のアーカイブ・エントリをスマグリングできる」と記されている。

研究者たちは、「アーカイブを処理する際に、PAX 拡張ヘッダーがサイズ・オーバーライドを含む場合には、ustar ヘッダーサイズ (多くの場合ゼロ) をベースにした計算が行われてしまう。その結果として、ストリーム位置が誤って計算され、PAX で指定されたサイズとは異なるファイルの内容が、正当な tar ヘッダーとして解釈されてしまう」と述べている。

この脆弱性は、async-tar/tokio-tar の非同期化実装に起因するバグである。したがって、PAX ヘッダーと ustar ヘッダーの不一致 (PAX は実際のサイズ/ustar は 0) を悪用する攻撃者は、ネストされた TAR ファイルから抽出ファイルへのスマグリングを達成できる。

研究者のレポートには、「0 バイト進めても、パーサーは実際のファイル・データ (ネストされた TAR アーカイブ) をスキップできずに、ネストされたアーカイブの先頭にある有効な TAR ヘッダーに遭遇する。そして、内側のアーカイブのヘッダーを、外側のアーカイブに属する正当なエントリとして誤って解釈する」と付け加えられている。

パーサーが ustar ヘッダーのサイズ (0) を読み取り、その分だけストリームを進める構造になっているため、ネストされたアーカイブをスキップできない。その結果として、ネスト内のヘッダーを、外側のアーカイブに属する正当なエントリとして扱ってしまう。

この脆弱性の悪用により可能になる操作には、抽出中のファイル上書き/サプライチェーン・ポイズニング/セキュリティ・スキャナや BOM (bill-of-materials) チェックのバイパスなどがある。

実際の攻撃シナリオでは、ビルド・バックエンドを置き換える悪意の Python パッケージを介した、インストール中のリモート・コード実行 (RCE) や、改竄されたコンテナ・イメージ・レイヤーによるテスト環境へのファイル注入などの可能性が生じる。

別の攻撃シナリオでは、脆弱性のある抽出ツールが内側の TAR から隠された未スキャンのファイルを取得して、外部 TAR として承認するケースなどが考えられる。

つまり、ヘッダー処理の不一致によりストリームに不整合が発生し、ネストされた TAR に隠されたペイロードの存在により、サプライチェーンとデプロイメントに深刻なリスクが生じる可能性がある。

Edera のレポートは、「TARmageddon の発見は、Rust が万能薬ではないことを改めて認識させる重要な事例である。Rust の保証により、メモリの安全性に関するバグ (バッファ・オーバーフローや解放後使用など) の混入は大幅に低減されるが、ロジックに関するバグを完全に排除できるわけではない。そして、今回のパーサー処理の不整合は、根本的にロジック上の欠陥である。開発者は、使用する言語に関わらず、あらゆる種類の脆弱性に対して常に警戒を怠ってはならない」と結論付けている。