Использование после освобождения памяти
Use After Free
CWE-416 — использование после освобождения памяти: к блоку памяти обращаются после вызова free(). Ошибка возникает в C и C++ при работе с указателями, когда освобождённый блок используется в обработчике ошибки, деструкторе или отложенной задаче. Через такой указатель злоумышленник читает и меняет чужие данные и добивается выполнения произвольного кода.
Как защититься от CWE-416
Чтобы защититься от CWE-416, выбирайте язык с автоматическим управлением памятью, а в коде на C и C++ сразу после вызова free() присваивайте освобождённому указателю NULL. Учитывайте, что в сложных структурах данных и при наличии ссылок обнуление указателя срабатывает не во всех случаях, поэтому отслеживайте область владения блоком и время жизни ссылок вручную.
Уязвимости с типом CWE-416 (50)
Отслеживайте уязвимости автоматически
КиберОснова SGRC: учёт уязвимостей CWE-416 и других типов из БДУ ФСТЭК, задачи на устранение с плановым сроком.

