Vulnerable-Web-Application CVE semgrep_id:PHPCS_SecurityAudit.BadFunctions.FilesystemFunctions.WarnFilesystem:25:25
Improper control of filename for include/require statement in PHP program ('PHP Remote File Inclusion')
Ссылка на строку:
Описание уязвимости
Название: Improper control of filename for include/require statement in PHP program ('PHP Remote File Inclusion')
Категория: SAST
Описание: Обнаружен неконстантный вызов функции включения файла. Это может привести к локальной (LFI) или удалённой (RFI) подмене файлов, если пользовательский ввод достигает этого оператора. LFI и RFI могут позволить злоумышленникам получить доступ к конфиденциальным файлам. Вместо этого следует явно указывать, что включать, или тщательно проверять пользовательский ввод.
CVE: semgrep_id:PHPCS_SecurityAudit.BadFunctions.FilesystemFunctions.WarnFilesystem:25:25
Уровень серьёзности: Критический
Сканер: Semgrep
Исправление
-
Явное указание включаемого файла:
// Вместо использования пользовательского ввода напрямую, явно укажите путь к файлу: include('safe_file.php');
-
Валидация пользовательского ввода:
Если необходимо использовать пользовательский ввод, проведите его валидацию:
$file = $_GET['file']; // Проверка, что файл находится в безопасном каталоге и имеет допустимое имя if (preg_match('/^[a-zA-Z0-9_\-]+\.php$/', $file)) { include('safe_directory/' . $file); } else { echo "Invalid file specified."; }
Дополнительная информация
- CWE: CWE-98
- OWASP: A03:2021 - Injection и A1:2017 - Injection
Для более подробной информации и лучших практик по предотвращению подобных уязвимостей, обратитесь к статье о PHP Remote File Inclusion.
Описание:
Detected non-constant file inclusion. This can lead to local file inclusion (LFI) or remote file inclusion (RFI) if user input reaches this statement. LFI and RFI could lead to sensitive files being obtained by attackers. Instead, explicitly specify what to include. If that is not a viable solution, validate user input thoroughly.Исходный JSON:
{
"id": "683bac40023e3aa8003e6654f66c769db775369c45e33213eb90ccdb5e79a3a1",
"category": "sast",
"name": "Improper control of filename for include/require statement in PHP program ('PHP Remote File Inclusion')",
"description": "Detected non-constant file inclusion. This can lead to local file inclusion (LFI) or remote file inclusion (RFI) if user input reaches this statement. LFI and RFI could lead to sensitive files being obtained by attackers. Instead, explicitly specify what to include. If that is not a viable solution, validate user input thoroughly.",
"cve": "semgrep_id:PHPCS_SecurityAudit.BadFunctions.FilesystemFunctions.WarnFilesystem:25:25",
"severity": "Critical",
"scanner": {
"id": "semgrep",
"name": "Semgrep"
},
"location": {
"file": "FileInclusion/pages/lvl1.php",
"start_line": 25
},
"identifiers": [
{
"type": "semgrep_id",
"name": "PHPCS_SecurityAudit.BadFunctions.FilesystemFunctions.WarnFilesystem",
"value": "PHPCS_SecurityAudit.BadFunctions.FilesystemFunctions.WarnFilesystem"
},
{
"type": "cwe",
"name": "CWE-98",
"value": "98",
"url": "https://cwe.mitre.org/data/definitions/98.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.FilesystemFunctions.WarnFilesystem",
"value": "PHPCS_SecurityAudit.BadFunctions.FilesystemFunctions.WarnFilesystem"
}
]
}
```