Vulnerable-Web-Application CVE semgrep_id:PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec:25:25
Improper control of generation of code ('Code Injection')
Ссылка на строку:
Описание уязвимости
Тип: Code Injection (CWE-94)
Категория: SAST
Уровень серьёзности: Критический
Сканер: Semgrep
Местоположение: repo/CommandExecution/CommandExec-2.php, строка 25
Описание: Выполнение неконстантных команд может привести к внедрению команд (Command Injection).
Исправление уязвимости
-
Использование безопасных функций: Вместо
shell_exec()
рекомендуется использовать более безопасные альтернативы, такие какproc_open()
, которые позволяют более строго контролировать входные данные и выходные потоки.$descriptors = [ 0 => ['pipe', 'r'], // stdin is a pipe the child will read from 1 => ['pipe', 'w'], // stdout is a pipe the child will write to 2 => ['file', 'error-output.txt', 'a'] // stderr is a file we want to append to ]; $process = proc_open('ls -l', $descriptors, $pipes); if (is_resource($process)) { fclose($pipes[0]); echo stream_get_contents($pipes[1]); fclose($pipes[1]); proc_close($process); }
-
Валидация и очистка входных данных: Перед передачей данных в функции выполнения команд необходимо тщательно проверять и очищать входные данные, чтобы предотвратить внедрение вредоносных команд.
function validateInput($input) { // Пример простой валидации return preg_match('/^[a-zA-Z0-9]+$/', $input); } if (validateInput($_GET['typeBox'])) { // Безопасное использование данных } else { echo 'Invalid input'; }
-
Использование параметризованных запросов и подготовленных операторов: В случае работы с базами данных или другими системами, поддерживающими параметризованные запросы, это может помочь предотвратить внедрение кода.
Ссылки на статьи
- CWE-94: Improper Control of Generation of Code ('Code Injection')
- OWASP Injection Prevention Cheat Sheet
Описание:
Executing non-constant commands. This can lead to command injection.Исходный JSON:
{
"id": "26ae2401d4458561ff1c7fcbd2eb6dedb02c01583fed62293770229cf57a34f8",
"category": "sast",
"name": "Improper control of generation of code ('Code Injection')",
"description": "Executing non-constant commands. This can lead to command injection.",
"cve": "semgrep_id:PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec:25:25",
"severity": "Critical",
"scanner": {
"id": "semgrep",
"name": "Semgrep"
},
"location": {
"file": "repo/CommandExecution/CommandExec-2.php",
"start_line": 25
},
"identifiers": [
{
"type": "semgrep_id",
"name": "PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec",
"value": "PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec"
},
{
"type": "cwe",
"name": "CWE-94",
"value": "94",
"url": "https://cwe.mitre.org/data/definitions/94.html"
},
{
"type": "owasp",
"name": "A03:2021 - Injection",
"value": "A03:2021"
},
{
"type": "owasp",
"name": "A1:2017 - Injection",
"value": "A1:2017"
},
{
"type": "phpcs_security_audit_source",
"name": "PHPCS Security Audit Test ID PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec",
"value": "PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec"
}
]
}
```