CVE-2026-9277
shell-quote quote() はオブジェクトトークンの形状を検証しないため、.op 内の行終端文字を介したコマンドインジェクションを許容します
- 公開済み
- 2026/05/22
- 更新済み
- 2026/09/14
- CNA の割り当て
- harborist
- 観察された証拠
- 2026/08/17
プライマリ CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X低 · 今後 30 日間
- パーセンタイル
- 56.1%
- モデルの日付
- 2026/09/21
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
shell-quote の `quote()` 関数は、オブジェクトトークン入力を `parse()` で使用される演算子モデルに対して検証していませんでした。`.op` フィールドは `/(.)/g` を使用して文字単位でバックスラッシュエスケープされていましたが、JavaScript ではこの正規表現は行終端文字(\n、\r、U+2028、U+2029)にマッチしません。そのため、`.op` 内の行終端文字はエスケープされずに出力にそのまま渡されていました。POSIX シェルはリテラルの改行をコマンド区切り文字として扱うため、その後の内容は2番目のコマンドとして実行される可能性があります。この脆弱なコードパスには2つの方法で到達できます:(1) 外部入力から `{ op: '...\n...' }` を直接構築する方法、および (2) `envFn` が攻撃者の影響を受ける `.op` を持つオブジェクトトークンを返す場合に `parse(cmd, envFn)` を経由する方法です。どちらも文書化された API サーフェスです。修正は、文字単位のエスケープを厳密な形状検証に置き換えることで行われました:`.op` はパーサーの制御演算子許可リストに一致する必要があります。`{ op: 'glob', pattern }` は `pattern` を検証し、行終端文字を禁止します。`{ comment }` は `comment` を検証し、行終端文字を禁止します。その他のオブジェクト形状は `TypeError` をスローします。
ソース
1CVE-2026-9277の概念実証エクスプロイト。shell-quoteライブラリのコマンドインジェクション脆弱性です。再帰的なJSONトラバーサルと組み合わせ変異を実行してRCEをトリガーし、OOB検証とゼロノイズログをサポートします。
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。