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