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