Дополнение байтов может содержать уязвимую информацию
Этот дефект происходит, когда вы не инициализируете дополнительные данные структуры или объединения прежде, чем передать его через доверительный контур. Компилятор добавляет дополнительные байты в структуру или объединение, чтобы гарантировать соответствующее выравнивание памяти ее членов. Битовые поля устройств хранения данных могут также иметь дополнительные биты.
Информационная утечка через дополнение структуры повышает дефект когда:
Вы вызываете недоверяемую функцию со структурой или аргументом типа указателя объединения, содержащим неинициализированные дополнительные данные.
Все внешние функции рассматриваются недоверяемыми.
Вы копируете или присваиваете структуру или объединение, содержащее неинициализированные дополнительные данные к недоверяемому объекту.
Вся внешняя структура или объекты объединения, выходные параметры всех внешне соединенных функций и указатель возврата всех внешних функций рассматриваются недоверяемыми объектами.
Дополнительные байты переданной структуры или объединения могут содержать уязвимую информацию, к которой может получить доступ недоверяемый источник.
Предотвратите сложение дополнения байтов для выравнивания памяти при помощи pack
прагма или атрибут поддержаны вашим компилятором.
Явным образом объявите и инициализируйте дополнительные байты как поля в структуре или объединении.
Явным образом объявите и инициализируйте соответствие битовых полей дополнению битов, даже если вы используете pack
прагма или атрибут поддержаны вашим компилятором.
Группа: безопасность |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки:
PADDING_INFO_LEAK |
Удар: низко |
Find defects (-checkers)
| Invalid assumptions about memory organization
| Large pass-by-value argument
| Memory comparison of padding data
| Sensitive heap memory not cleared before release
| Uncleared sensitive data in stack
| Use of memset with size argument zero