Уязвимость нулевого дня

Уязвимость нулевого дня (0day, zero day) — термин, который используется для обозначения не выявленных на стадии тестирования угроз безопасности, уязвимостей, брешей в программном коде, против которых не существует защиты. Изначально они не известны никому: разработчики, антивирусные компании, пользователи не подозревают об их существовании. Об уязвимости нулевого дня становится известно до того, как производитель выпускает обновления; следовательно, у разработчиков есть 0 дней, чтобы устранить изъян. Устройства, на которых установлена уязвимая программа, находятся в зоне риска, а пользователи не имеют возможности защититься.

Обнаружение и распознавание уязвимостей

Иногда уязвимость нулевого дня выявляют хакеры, которые не хотят использовать ее в злонамеренных целях и сообщают о ней разработчикам. В других случаях ошибку могут найти пользователи или сами разработчики, после чего производителями выпускается новая версия ПО или обновление. Кроме того, антивирусы тоже иногда могут зарегистрировать вредоносные действия.

Впрочем, очевидно, что обнаружить баг могут и хакеры-злоумышленники, преследующие вредоносные цели. Тогда они будут эксплуатировать его сами или продадут другим киберпреступникам.

Для обнаружения уязвимостей злоумышленники используют различные методы:

  • дизассемблирование кода программы и поиск опасных ошибок в коде программного обеспечения;
  • fuzz-тестирование или «стресс-тест» для ПО (программное обеспечение обрабатывает большой объем информации, которая содержит заведомо ложные настройки);
  • реверс-инжиниринг и поиск уязвимостей в алгоритмах работы ПО.

В противоположном случае разработчик знает, что существует баг в коде, но не хочет или не может его устранить, не предупреждая никого об уязвимости.

Атаки на уязвимости нулевого дня

Если произошла атака с использованием уязвимости нулевого дня, то это значит, что злоумышленники знали о баге достаточное количество времени, чтобы написать и активировать вредоносную программу для его эксплуатации. Такие атаки опасны тем, что к ним невозможно подготовиться, а также тем, что постоянное обновление ПО не дает гарантии их предотвращения или снижения риска их возникновения.

Защита от уязвимостей нулевого дня и их устранение

Устранение ошибок входит в обязанности разработчика. Критическая проблема закрывается в течение нескольких дней или недель; все это время системы, использующие уязвимое ПО, будут находиться в опасности.

Для защиты можно использовать традиционные антивирусные технологии, а также проактивные средства:

  • Sandboxing (песочницу);
  • анализ поведения;
  • эмуляцию кода;
  • эвристический анализ;
  • виртуализацию рабочего окружения.