30秒で判断
- 対応すべき人: node-tar 7.5.3 以前を利用し、信頼できない tar アーカイブをプログラム的に展開している(特に macOS APFS / HFS+ 上)
- 対応不要な人: node-tar を使っていない、または 7.5.4 以降を使用中。信頼できるアーカイブのみを展開している
- 確認コマンド:
npm ls tar(直接・間接依存の tar バージョンを確認)
概要
node-tar は Node.js 向けの tar 実装で、npm CLI 内部でも利用される非常に広く使われるライブラリです。バージョン 7.5.3 以前において、path-reservations システムの Unicode パス衝突処理に不備があります。
大文字小文字や Unicode 正規化を区別しないファイルシステム(macOS の APFS など)では、ß と ss のように衝突するパスに対してロックが正しく機能せず、並行して処理されてしまいます。これにより、パスごとの処理を直列化する内部の並行制御(PathReservations)がバイパスされ、競合状態を悪用したシンボリックリンク汚染(Symlink Poisoning)による任意ファイル上書きが可能になります(CWE-367 / CWE-176)。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSS v3 スコア | 8.8(High) |
| 攻撃元区分(AV) | ネットワーク(悪意ある tar の取得・展開経由) |
| 必要な特権(PR) | 不要 |
| ユーザー関与(UI) | 要(悪意あるアーカイブの展開) |
| 主な影響 | 任意ファイル上書き(完全性) |
| CWE | CWE-367(TOCTOU 競合状態)、CWE-176(Unicode 処理不備)、CWE-352 |
影響を受けるソフトウェア
| 製品 | パッケージ | 影響バージョン | 修正バージョン |
|---|---|---|---|
| node-tar | tar (npm) | 7.5.3 以前(<= 7.5.3) | 7.5.4 |
- 特に macOS(APFS / HFS+) など、大文字小文字・Unicode 正規化を区別しないファイルシステム上で影響が顕在化します。
修正バージョンと回避策
- 修正: node-tar 7.5.4 へアップデート。
path-reservations.jsが対象ファイルシステムの挙動に合わせた正規化(NFKD+toLocaleLowerCase('en')/toLocaleUpperCase('en'))を行うよう修正されています。 - 回避策: すぐに更新できない場合、arbitrary な tar データをプログラム的に展開する際に、すべての
SymbolicLinkエントリを除外する(npm と同様の防御)ことで任意ファイル書き込みを緩和できます。 - 確認方法:
npm ls tarで直接・間接依存を含めた tar のバージョンを確認します。
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
