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 (Static Application Security Testing)
Описание: Обнаружено использование неконстантного имени файла в операторе include/require. Это может привести к локальной (LFI) или удалённой (RFI) загрузке файлов, если пользовательский ввод достигает этого оператора. LFI и RFI могут позволить злоумышленникам получить доступ к конфиденциальным файлам. Рекомендуется явно указывать, что должно быть включено, или тщательно проверять пользовательский ввод.
Уровень серьёзности: Критический
Сканер: Semgrep
Исправление уязвимости
-
Явное указание файлов для включения:
// Вместо использования пользовательского ввода, явно укажите файлы для включения include('safe_file.php');
-
Тщательная проверка пользовательского ввода:
// Проверьте, что файл существует и является безопасным для включения if (isset($_GET['file']) && file_exists($_GET['file'])) { include($_GET['file']); } else { echo "Файл не найден или небезопасен для включения."; }
-
Использование белого списка допустимых файлов:
// Определите белый список допустимых файлов $allowed_files = ['file1.php', 'file2.php']; if (isset($_GET['file']) && in_array($_GET['file'], $allowed_files)) { include($_GET['file']); } else { echo "Файл не найден или не разрешён для включения."; }
Дополнительная информация
- CWE: CWE-98
- OWASP: A03:2021 - Injection, A1:2017 - Injection
- PHP Security Audit Test ID: PHPCS_SecurityAudit.BadFunctions.FilesystemFunctions.WarnFilesystem
Ссылки на статьи
- OWASP: Injection
- CWE: Improper Control of Filename for Include/Require Statement in PHP Program ('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": "2ee92c30b259195e4ab695bb888a68bba7f049fe34c57c535a25b1b5269e45d6",
"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": "repo/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"
}
]
}
```