Найти в Дзене

РБПО-023. Термин: уязвимость программы

Недостаток программы, который может быть использован для реализации угроз безопасности информации. (ГОСТ Р 56939-2016, п. 3.22) Следует разделять понятие потенциальная уязвимость и уязвимость. Уязвимость — это когда дефектом безопасности точно можно воспользоваться или кто-то уже им воспользовался. А когда в коде кто-то нашёл, например, выход за границу массива, это баг или потенциальная уязвимость. Но ещё не уязвимость, пока не будет доказано, что эту проблему можно эксплуатировать. Это код может быть недостижим или же ошибка может приводить к неправильной работе программы, но это никак не связано с вопросом безопасности. Меня бомбит, когда пишут, что кто-то нашёл 100 уязвимостей в таком-то проекте с помощью инструмента X. Не 100 уязвимостей он нашёл, а 100 ошибок в лучшем случае. Какая-то из них, возможно, действительно является уязвимостью. Но, скорее всего, нет. Найти настоящую уязвимость ещё постараться надо. Понятно, что "нашли много уязвимостей" звучит пугающе, но стоит понимать
Недостаток программы, который может быть использован для реализации угроз безопасности информации. (ГОСТ Р 56939-2016, п. 3.22)

Следует разделять понятие потенциальная уязвимость и уязвимость. Уязвимость — это когда дефектом безопасности точно можно воспользоваться или кто-то уже им воспользовался. А когда в коде кто-то нашёл, например, выход за границу массива, это баг или потенциальная уязвимость. Но ещё не уязвимость, пока не будет доказано, что эту проблему можно эксплуатировать. Это код может быть недостижим или же ошибка может приводить к неправильной работе программы, но это никак не связано с вопросом безопасности.

Меня бомбит, когда пишут, что кто-то нашёл 100 уязвимостей в таком-то проекте с помощью инструмента X. Не 100 уязвимостей он нашёл, а 100 ошибок в лучшем случае. Какая-то из них, возможно, действительно является уязвимостью. Но, скорее всего, нет. Найти настоящую уязвимость ещё постараться надо. Понятно, что "нашли много уязвимостей" звучит пугающе, но стоит понимать, что, скорее всего, перед вами жёлтый заголовок. Подобный случай я рассматривал в статье "GPT-3 нашёл 213 Security Vulnerabilities... Или не нашёл".

Кстати, в рамках разработки безопасного ПО вовсе не ставится задача найти у устранить уязвимости. Необходимо выявить критические ошибки (потенциальные уязвимости) и исправить их ещё на этапе разработки. Бессмысленно выяснить, может конкретный баг эксплуатироваться или нет, его надо просто пофиксить и продолжить заниматься полезными делами.

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

P.S. Та уязвимость, которая только что была обнаружена, называется уязвимость нулевого дня. Термин означает, что у разработчиков было 0 дней на исправление дефекта: уязвимость или атака становится публично известна до момента выпуска производителем ПО исправлений ошибки.