CyberGlossary

Уязвимости

Разыменование нулевого указателя

Также известно как: Null deref

Определение

Ошибка, при которой программа читает или пишет через указатель со значением null (или иным образом некорректным), обычно вызывая аварийное завершение и иногда давая возможность эксплуатации.

Разыменование нулевого указателя (CWE-476) происходит, когда код обращается к указателю, который не был инициализирован, был обнулён после free или возвращён функцией, тихо завершившейся ошибкой. В большинстве современных систем это приводит к segmentation fault и падению процесса, то есть к отказу в обслуживании. В отдельных ограниченных средах — старых ядрах, где нулевой адрес можно мапить, встраиваемых системах без MMU, некоторых JIT-компиляторах — разыменование нуля можно превратить в примитив повреждения памяти. Защита: строгая проверка нулей, возможности языков (Optional/Maybe, нестрогие nullable-ссылки), статический анализ, тестирование с санитайзерами и средства ОС вроде mmap_min_addr, запрещающие маппинг младших адресов.

Примеры

  • Веб-сервер, падающий при отсутствии необязательного заголовка.
  • Исторические null-deref-уязвимости ядра Linux, эксплуатируемые при mmap_min_addr = 0.

Связанные термины