引数を配列で渡してシェル注入を防いでも、値が下流の別インタプリタにリテラル展開されれば二次注入が残る
セキュリティ
レビュー
知識
運用
コマンド引数を配列(execFileSync など argv 直渡し)で渡すとシェルの単語分割を経由しないためシェル注入は防げる。しかしその引数値がさらに下流の別インタプリタ(AppleScript の文字列リテラル、SQL、テンプレートエンジンなど)にリテラルとして埋め込まれる場合、そのインタプリタ内部の二次注入は防げない。
例: アプリ名を execFileSync の argv で osascript に渡しても、その名前を AppleScript の文字列リテラルに無エスケープで連結すれば、引用符や改行を含む名前で構文が壊れ、細工された名前で任意の AppleScript 文を差し込める。
レビュー観点: 外部入力が通る経路では「シェルに安全か」だけでなく、その値が最終的に展開されるインタプリタ境界ごとに個別にエスケープされているかを確認する。