注目★★★★★GitHub Advisory
pnpm にパストラバーサル脆弱性、configDependencies で node_modules 外にシンボリックリンク生成
30秒で把握
- 1pnpm の configDependencies でパストトラバーサル可能・node_modules 外へのシンボリックリンク生成に成功
- 2不正な pnpm-lock.yaml を commit するだけで発動・スクリプト実行不要で任意パス書き込み可能
- 3clone したリポジトリの pnpm install 実行時に外部位置へのリンク生成リスクを評価・必要に応じて install 検証を強化
要約
pnpm は env ロックファイル内の configDependencies セクションからパッケージ名を読み込み、バリデーションなしにシンボリックリンク作成時に使用している。`../../PWNED_CFGDEP` のようなトラバーサル文字列を含む不正な pnpm-lock.yaml をリポジトリにコミットすると、pnpm install 時に意図した node_modules/.pnpm-config ディレクトリ外の任意の位置にシンボリックリンクが生成される可能性がある。v11.5.1 の検証では node_modules の外側にリンクが作成されることが確認されており、--ignore-scripts オプション使用時も発生する。
あなたへの影響
pnpm を使用するプロジェクトは lockfile の commit 前にチェックを厳格化するか。
推奨:非信頼ソースのリポジトリ clone 後の install を検証環境で実施する価値がある。