フォロー

多くのプログラミング言語に危険な脆弱性 ~Windows環境の引数エスケープ処理に不備「Rust」「PHP」「Node.js」「Haskell」などに影響 - 窓の杜
forest.watch.impress.co.jp/doc

これなにがなんだかわかんなくてCopilotさんに教えてもらったけど、バッチファイル云々のは、たんに引数に文字列を渡すと、& でコマンドをつなげるやつとかでその後をコマンドとして実行しちゃうのに、それをちゃんとエスケープできてないって問題っぽい><
コマンドプロンプトでは再現できるけど、(Copilot曰く)PowerShellではより安全に振ってるので同じミスを再現できないらしい><

Power Shellでも再現できました!><;(Copilotさん・・・><;)

@orange_in_space
・CreateProcess(あるいはC#ならProcess.Startとか)にバッチファイルを指定すると、勝手にcmd.exe経由で実行されてしまい、必要なエスケープ処理が変わるって話なので、コマンドプロンプトかPowershellかで再現できるできないって話はよくわからない
・Powershell上でバッチファイルを実行すると、やっぱりcmd.exeが起動されている(ProcessExplorerとかで見るとよい)
 ・PS> test.bat | calc ならパイプはPowershellで解釈されていて、今回の話は多分全く関係ない
 ・PS> test.bat "| calc" ならパイプは cmd.exe で解釈されているので、関係あるかも

ログインして会話に参加
:realtek:

思考の /dev/null