Операция может привести к уязвимостям безопасности или отказу системы
Этот дефект возникает, когда вы не проверяете, ссылается ли параметр имени файла на файл устройства, прежде чем вы передадите его этим функциям:
fopen()
fopen_s()
freopen()
remove()
rename()
CreateFile()
CreateFileA()
CreateFileW()
_wfopen()
_wfopen_s()
Файлы устройств являются файлами в файловой системе, которые обеспечивают интерфейс для драйверов устройств. Можно использовать эти файлы для взаимодействия с устройствами.
Неподходящая операция ввода-вывода на файлах устройства не вызывает дефекта, когда:
Вы используете stat
или lstat
- семейство функции, чтобы проверить параметр файла имени перед вызовом ранее перечисленных функций.
Вы используете функцию сравнения строк, чтобы сравнить имя файла со списком имен файлов устройств.
Операции, подходящие только для обычных файлов, но выполняемые на файлах устройства, могут привести к атакам отказа в обслуживании, другим уязвимостям безопасности или отказам.
Перед выполнением операции ввода-вывода для файла:
Использование stat()
, lstat()
или эквивалентную функцию, чтобы проверить, ссылается ли параметр имени файла на обычный файл.
Используйте функцию сравнения строк, чтобы сравнить имя файла со списком имен файлов устройств.
Группа: Безопасность |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки
: INAPPROPRIATE_IO_ON_DEVICE |
Влияние: Средний |
ИДЕНТИФИКАТОР CWE : 67 |
File access between time of check and use (TOCTOU)
| Find defects (-checkers)
| Opening previously opened resource
| Resource leak
| Returned value of a sensitive function not checked
| Vulnerable path manipulation