BDU:2024-03781
Высокий уровень опасности (базовая оценка CVSS 2.0 составляет 9) Высокий уровень опасности (базовая оценка CVSS 3.0 составляет 8,6) CVSS 8.600000381469727 · AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:HУязвимость набора компиляторов для различных языков программирования GNU Compiler Collection (GCC), связанная с некорректной обработкой суммы указателя и целого числа, позволяющая нарушителю вызвать отказ в обслуживании или оказать иное воздействие
Отчёты сканеров говорят на языке CVE, требования регуляторов — на языке БДУ. Перевести список из отчёта →
Описание
Уязвимость набора компиляторов для различных языков программирования GNU Compiler Collection (GCC) связана с некорректной обработкой суммы указателя и целого числа как большую или равную указателю без использования преобразований, что может привести к непреднамеренному удалению кода проверки длины. Эксплуатация уязвимости может позволить нарушителю, действующему удаленно, вызвать отказ в обслуживании или оказать иное воздействие
Способ устранения
Установка обновлений из доверенных источников. В связи со сложившейся обстановкой и введенными санкциями против Российской Федерации рекомендуется устанавливать обновления программного обеспечения только после оценки всех сопутствующих рисков. Компенсирующие меры: 1. Использование предупреждений: Активация предупреждений с помощью опции -Wstrict-overflow=N (где N >= 3), что позволяет выявить потенциально уязвимые места в коде. 2. Настройка оптимизаций: Контроль оптимизаций с использованием опций -fstrict-overflow и -fno-strict-overflow для настройки поведения компилятора в отношении переполнения указателей. Опция -fstrict-overflow позволяет включить оптимизации переполнений на уровне -O1, что повышает производительность, но с риском возникновения ошибок. Опция -fno-strict-overflow, наоборот, отключает эти оптимизации для уровней -O2 и выше, что делает компиляцию более безопасной за счет отказа от рискованных оптимизаций. 3. Приведение объектов типа char* к uintptr_t перед сравнением. Пример: #include <stdint.h> [...] if((uintptr_t)buf + len < (uintptr_t)buf) { [...] } Приведение указателей к целочисленному типу uintptr_t позволяет избежать некорректных сравнений, связанных с переполнением. Использование uintptr_t гарантирует, что сравнение будет корректным, даже если сумма указателя и длины приведет к переполнению. 4. Использование типа size_t на платформах, где uintptr_t недоступен. #include <stddef.h> [...] if((size_t)buf + len < (size_t)buf) { [...] } Тип size_t предназначен для представления размеров объектов. На платформах без поддержки uintptr_t, использование size_t позволяет избежать ошибок, связанных с переполнением указателей, обеспечивая корректное сравнение. 5. Следование правилам безопасного кодирования, описанным в руководстве CERT C Secure Coding, в частности, правилу ARR38-C. Использование рекомендаций производителя: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26763
Сведения записи
Уязвимое программное обеспечение
| Производитель | Название | Версия | Платформа |
|---|---|---|---|
| GNU General Public License | GNU Compiler Collection | от 4.2.0 до 4.3.0 включительно | Не указана |
Чтобы такие записи находились не вручную, ведите реестр программного обеспечения: в личном кабинете уязвимости сопоставляются с вашим ПО, а работы по устранению попадают в план. Завести кабинет →
Источник: Банк данных угроз безопасности информации ФСТЭК России. Данные выгружены 17.08.2026, записей в справочнике — 92920. Справочник не является официальным ресурсом ФСТЭК России: сверяйте сведения с первоисточником.