Что такое уязвимость и эксплоит и почему это очень опасно

чилавеку свойствина ашыбацца

Современные программы имеют десятки тысяч строк когда и огромное количество взаимодействующих модулей. Вполне нормально, что в программах иногда появляются ошибки. Они могут быть разные - от простых "глюков" до серьезных ошибок, приводящих к серьезным сбоям. Вот как раз такие и называются уязвимостями.

Большая часть ошибок выявляется на этапе тестирования. Но бывает так, что некоторые ошибки проявляются только в каких-то очень редких условиях. Даже высочайшее качество тестирования не гарантирует отсутствия ошибок.

Например, известны случаи когда навигационное оборудование истребителей выходило из строя при пересечении "нулевого меридиана" или когда высота становилась ниже уровня океана (над Мертвым морем).

Уязвимости могут быть абсолютно во всех программах, включая наши любимые Windows, Office, Internet Explorer, Adobe Flash Player... И это подвергает всех нас опасности что нас взломают, воспользовавшись этими уязвимостями.

Самое опасное, что есть такие ошибки, которые ведут не просто к отказу программы, а к перехвату управления: программа начинает выполнять то, что нужно злоумышленнику. Так он может получить контроль над компьютером.
Вредоносные программы зачастую распространяются именно так: они "знают", как использовать одну или несколько уязвимостей, и наугад пытаются их использовать где только могут.

Эксплоит - это специальная программа (файл, сайт, параметр, входные данные - что угодно), эксплуатирующая уязвимость, то есть создающая условия чтобы произошла ошибка. Если калькулятор взрывается при делении на 0, эксплоитом для него будет дробь с 0 в знаменателе.

А вот отличный пример уязвимости и эксплоита от советского кинематографа:

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

Откуда появляется информация об уязвимостях? Так или иначе они проявляются в ходе работы программы. И есть специальные исследователи, которые изучают работу программ и аномалии в ходе их работы. Проведя скрупулезную работу, они находят ошибку и понимают к чему она приводит.
Дальше все зависит от исследователя. Если он честный человек, он сообщает об этом производителю и как правило получает награду (она называется bug bounty). Если он мошенник, он продает информацию хакерам. Такие уязвимости очень ценятся, поскольку о них не знает даже сам производитель. Их называют "уязвимость нулевого дня", или 0-day.

Что же делать? Как защититься?

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

Этот отрезок времени, когда уязвимость и эксплоит уже известны, а патча еще нет - самый критический. Безопасность продукта и уровень производителя определяется сроком в который производитель может устранить уязвимость.
Правопорядок в стране определяется не наличием воров, а умением властей их обезвреживать!
Правопорядок в стране определяется не наличием воров, а умением властей их обезвреживать!

Перефразируя Глеба Жеглова, можно сказать что безопасность программы определяется не наличием уязвимостей, а умением производителя их устранять.

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

Вот пример из того же фильма, как ведет себя программа после установки обновления (эксплоит уже не действует):