Дополнение байтов может содержать уязвимую информацию
Информационная утечка через дополнение структуры происходит, когда вы не инициализируете дополнительные данные структуры или объединения прежде, чем передать его через доверительный контур. Компилятор добавляет дополнительные байты в структуру или объединение, чтобы гарантировать соответствующее выравнивание памяти ее участников. Битовые поля устройств хранения данных могут также иметь дополнительные биты.
Информационная утечка через дополнение структуры повышает дефект когда:
Вы вызываете недоверяемую функцию со структурой или аргументом типа указателя объединения, содержащим неинициализированные дополнительные данные.
Все внешние функции рассматриваются недоверяемыми.
Вы копируете или присваиваете структуру или объединение, содержащее неинициализированные дополнительные данные к недоверяемому объекту.
Вся внешняя структура или объекты объединения, выходные параметры всех внешне соединенных функций и указатель возврата всех внешних функций рассматриваются недоверяемыми объектами.
Дополнительные байты переданной структуры или объединения могут содержать уязвимую информацию, к которой может получить доступ недоверяемый источник.
Предотвратите сложение дополнения байтов для выравнивания памяти при помощи прагмы 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