Указатель от небезопасного источника может иметь значение NULL или указывать на неизвестную память
Этот дефект возникает в следующих случаях:
Запятнанный указатель NULL - указатель, полученный из небезопасного источника, не проверяется на значение NULL.
Указатель запятнанного размера - размер зоны памяти, на которую указывает небезопасный указатель, не проверен.
Примечание
В одном указателе код может иметь экземпляры Use of lainted pointer, Pointer dereference with tainted offset и Tainted NULL или строку с ненулевым окончанием. Bug Finder поднимает только первый обнаруженный дефект запятнанного указателя.
Чтобы считать все входные данные вне текущего периметра анализа небезопасными, используйте -consider-analysis-perimeter-as-trust-boundary.
Злоумышленник может дать программе указатель, указывающий на неожиданные расположения памяти. Если указатель не используется для записи, злоумышленник может:
Изменение переменных состояния критической программы.
Вызовите сбой программы.
Выполнить нежелательный код.
Если указатель не используется для чтения, злоумышленник может:
Считывание конфиденциальных данных.
Вызовите сбой программы.
Измените значение переменной программы на непредвиденное.
Избегайте использования указателей из внешних источников.
Кроме того, если вы доверяете внешнему источнику, удалите указатель перед отменой привязки. В отдельной функции санации:
Убедитесь, что указатель не имеет значение NULL.
Проверьте размер памяти (если возможно). Эта вторая проверка проверяет, соответствует ли размер данных, указываемых указателем, ожидаемому программой.
Дефект все еще появляется в организме функции санирования. Однако при использовании функции санации вместо нескольких случаев дефект появляется только один раз. Можно выровнять дефект и скрыть его в последующих обзорах с помощью аннотаций кода. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.
| Группа: Запятнанные данные |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: TAINTED_PTR |
| Воздействие: Низкий |
| CWE ID: 690, 822 |
-consider-analysis-perimeter-as-trust-boundary | Find defects (-checkers) | Pointer dereference with tainted offset