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 の保証により、メモリの安全性に関するバグ (バッファ・オーバーフローや解放後使用など) の混入は大幅に低減されるが、ロジックに関するバグを完全に排除できるわけではない。そして、今回のパーサー処理の不整合は、根本的にロジック上の欠陥である。開発者は、使用する言語に関わらず、あらゆる種類の脆弱性に対して常に警戒を怠ってはならない」と結論付けている。
TARmageddon に関する報告は分かりやすく、その原因が明確です。問題の核心は async 化/非同期パーサーのロジック不備により、PAX と ustar ヘッダーのサイズ不一致が生じ、ストリーム位置が誤計算され、ネストされた TAR のヘッダーを外側の正当エントリと誤認してしまう点にあります。そのため、抜け道としてファイル上書きやサプライチェーン注入、ビルド時の RCE などが現実的に発生し得る構造となります。ご利用のチームは、ご注意ください。よろしければ、Rust で検索を、ご参照ください。
You must be logged in to post a comment.