Уязвимость (компьютерная безопасность)
Материал из Википедии — свободной энциклопедии
- У этого термина существуют и другие значения, см. уязвимость.
В компьютерной безопасности, термин уязвимость (англ. vulnerability) используется для обозначения слабозащищённого или открытого места в системе. Уязвимость может быть результатом ошибок программирования или недостатков, допущенных при проектировании системы. Уязвимость может существовать либо только теоретически, либо иметь известный эксплойт.
Уязвимости часто являются результатом беззаботности программиста, но, также, могут иметь и другие причины. Уязвимость обычно позволяет атакующему обмануть приложение, например, с помощью внедрения данных каким-нибудь незапланированным способом, выполнения команды на системе, на которой выполняется приложение, или путем использования упущения, которое позволяет получить непредусмотренный доступ к памяти для выполнения кода на уровне привилегий программы. Некоторые уязвимости появляются из-за недостаточной проверки данных, вводимых пользователем; часто это позволяет напрямую выполнить команды SQL (SQL-инъекция). Другие уязвимости появляются из-за более сложных проблем, таких как запись данных в буфер, без проверки его границ, в результате буфер может быть переполнен, что может привести к исполнению произвольного кода.
Метод информирования об уязвимостях является одним из пунктов спора в сообществе компьютерной безопасности. Некоторые специалисты отстаивают немедленное полное раскрытие информации об уязвимостях, как только они найдены. Другие советуют сообщать об уязмимостях только тем пользователям, которые подвергаются наибольшему риску, а полную информацию публиковать лишь после задержки, или не публиковать совсем. Такие задержки могут позволить тем, кто был извещён, исправить ошибку при помощи разработки и применения заплаток, но также могут и увеличивать риск для тех, кто не посвящён в детали. Такие споры имеют длинную историю (см. полное раскрытие и безопасность через скрытие).
Существуют инструментальные средства, которые могут помочь в обнаружении уязвимостей в системе. Хотя эти инструменты могут обеспечить аудитору хороший обзор возможных уязвимостей, существующих в сети, они не могут заменить участие человека в их оценке.
Для обеспечения защищённости и целостности системы, необходимо постоянно следить за ней, устанавливать обновления, и использовать инструменты, которые помогают противодействовать возможным атакам. Уязвимости обнаруживались во всех основных операционных системах, включая Windows, MacOS, различные варианты UNIX (в том числе Linux) и OpenVMS. Так как новые уязвимости находят непрерывно, единственный путь уменьшить вероятность их использования против системы — постоянная бдительность.