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