Bug report - Undocumented risky behaviour in subprocess module
When using subprocess.Popen with shell=True on Windows and without a COMSPEC environment variable, a cmd.exe is launched. The problem is the cmd.exe full path is not written, Windows will search the executable in the current directory and in the PATH. If an arbitrary executable file is written to the current directory or to a directory in the PATH, it can be run instead of the real cmd.exe.
See the code here and a POC here.
- This risky behaviour can be patched by replacing
cmd.exe string by C:\WINDOWS\system32\cmd.exe.
- If the behavior was chosen by python developers, it should be documented.
Linked PRs
Bug report - Undocumented risky behaviour in subprocess module
When using
subprocess.Popenwithshell=Trueon Windows and without aCOMSPECenvironment variable, acmd.exeis launched. The problem is thecmd.exefull path is not written, Windows will search the executable in the current directory and in the PATH. If an arbitrary executable file is written to the current directory or to a directory in the PATH, it can be run instead of the real cmd.exe.See the code here and a POC here.
cmd.exestring byC:\WINDOWS\system32\cmd.exe.Linked PRs
versionchangedof gh-101283 (3.12 only) #101728