Командная инъекция (OS Command Injection)
Выполнение произвольных команд ОС через подстановку ввода в системный вызов.
Сигнатура
OS Command InjectionКомандная инъекция возникает, когда приложение передаёт пользовательский ввод в системную оболочку. Через символы вроде ;, && или | злоумышленник может выполнить посторонние команды на сервере.
Как защититься: избегайте вызова shell вообще; передавайте аргументы списком, а не строкой; используйте встроенные функции языка вместо внешних команд; валидируйте ввод по белому списку.
import subprocess
# Опасно: shell=True и склейка строки
name = request.get("host")
subprocess.run("ping " + name, shell=True) # host: 8.8.8.8; rm -rf /
# Безопасно: аргументы списком, без shell
name = request.get("host")
subprocess.run(["ping", "-c", "1", name], shell=False)