CVE-2026-23745 の PoC。これは node-tar(<7.5.2)における高深刻度のパストラバーサル脆弱性です。
このライブラリは、ハードリンクおよびシンボリックリンクの linkpath フィールド内の絶対パスをサニタイズできません。これにより、悪意のある tar アーカイブが抽出ルートをバイパスし、preservePaths: false が設定されている場合でも、ホストシステム上の任意のファイルを上書きできるようになります。
src/unpack.ts に存在します。このライブラリは、サニタイズされていないユーザー入力を path.resolve() で処理します:
// バグ: 2番目の引数が絶対パスの場合、path.resolve は 'cwd' を無視する
const target = path.resolve(this.cwd, String(entry.linkpath))
攻撃者が tar ヘッダーに絶対パス(例: /etc/passwd)を提供すると、node-tar は抽出ディレクトリではなくシステムルートに解決します。
同梱の poc.js は悪意のあるアーカイブを生成し、ローカルの secret.txt ファイルの上書きを試みます。
脆弱なバージョンをインストール:
npm install [email protected]
エクスプロイトジェネレーターを実行:
node poc.js
出力:
[+] VULN CONFIRMED: Hardlink overwrite successful
Target file content changed to: OVERWRITTEN
v7.5.3 でパッチ適用済み。この更新では、解決前にリンクターゲットをサニタイズする stripAbsolutePath() が追加されています。
参照: