We use Checkmarx
to check our project.
The result show Environment.GetCommandLineArgs()
may get an untrusted string and could allow an attacker to inject an arbitrary command.
var args = Environment.GetCommandLineArgs();
var ls = new List<string>(args.Skip(1).Select(arg => QuoteDotNetCommandLineArg(arg)));
Process.Start(new ProcessStartInfo()
{
FileName = args[0],
Arguments = string.Join(" ", ls.ToArray()),
UseShellExecute = false
});
how to prevent it?