Входные параметры от независимых компонентов должны быть подтверждены.
Входные параметры от независимых компонентов должны быть подтверждены.
Когда входные параметры от независимых компонентов непосредственно используются в исходном коде, атакующие могут получить полный или частичный контроль буфера приложений. Это управление позволяет атакующему отключить программу, просмотреть содержимое стека, получить доступ к содержимому памяти, изменить память в случайных местах и выполнить нежелательный код, замаскированный как исходный код программы.
Чтобы предотвратить такие уязвимости, подтвердите вход от независимых компонентов. Это правило применяется к входным параметрам, полученным от внешних источников, таких как:
Входные параметры получены от сетей
Входные параметры получили от других процессов и программного обеспечения посредством межпроцессного взаимодействия (IPC)
Входные параметры получены от API компонентов
Polyspace® повышает флаг, когда входные параметры от независимых компонентов используются без валидации. Отмеченное использование включает:
Стандартные программы, такие как sethostid (Linux®) или SetComputerName Windows®) использование внешне управляло аргументами, чтобы изменить идентификатор хоста. Смотрите Host change using externally controlled elements.
Функционирует, такие как putenv и setenv получите новые значения переменной окружения или из небезопасных источников. Смотрите Use of externally controlled environment variable.
Функционирует, такие как printf используйте спецификатор формата, который создается из небезопасных источников. Смотрите Tainted string format.
Массивы или указатели используют индекс, который получен из небезопасных источников. Смотрите Array access with tainted index.
Программа получает путь к команде из внешнего небезопасного источника. Смотрите Command executed from externally controlled path.
Программа выполняет команду, которая полностью или частично создается из внешне управляемого входа. Смотрите Execution of externally controlled command.
Библиотеки загрузок программы от фиксированных или внешне управляемых небезопасных путей, которыми могут частично или полностью управлять атакующие. Смотрите Library loaded from externally controlled path.
Цикл использует значения, полученные из небезопасных источников как его контур. Смотрите Loop bounded with tainted value.
Функции выделения памяти, такие как calloc или malloc, используйте аргумент размера из небезопасного источника. Смотрите Size argument to memory function is from an unsecure source.
Указатель разыменовывает, использует переменную смещения из неизвестного или небезопасного источника. Смотрите Pointer dereference with tainted offset.
Один или оба целочисленных операнда в операции деления прибывают из небезопасных источников. Смотрите Tainted division operand.
Один или оба целочисленных операнда в операции остатка (%) прибывает из небезопасных источников. Смотрите Tainted modulo operand.
Функции обработки строк, которые неявно разыменовывают буфер строки, такой как strcpy или sprintf используйте строки из небезопасных источников. Смотрите Tainted NULL or non-null-terminated string.
Значения из небезопасных источников неявно или явным образом преобразованы от со знаком до значений без знака. Смотрите Tainted sign change conversion.
Программа разыменовывает указатель из небезопасного источника, который может быть NULL или указать на неизвестную память. Смотрите Use of tainted pointer.
Polyspace рассматривает эти входные параметры как вход от независимого компонента или испорченный:
Энергозависимые объекты
Объект, которые взаимодействуют с пользователем
Объекты, которые взаимодействуют с оборудованием
Объекты, которые используют случайные числа или текущую дату и время
Чтобы рассмотреть весь вход снаружи текущего аналитического периметра как небезопасный, используйте -consider-analysis-perimeter-as-trust-boundary. Смотрите источники заражения в анализе Polyspace.
Когда вход от независимого компонента используется без валидации многократно в коде, Polyspace отмечает первое использование.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
| Группа: библиотека ввода/вывода |
| Категория: необходимый, неавтоматизированный |