Уязвимость (компьютерная безопасность)
В компьютерной безопасности, термин уязвимость (англ. vulnerability) используется для обозначения недостатка в системе, используя который, можно нарушить её целостность и вызвать неправильную работу. Уязвимость может быть результатом ошибок программирования, недостатков, допущенных при проектировании системы, ненадежных паролей, вирусов и других вредоносных программ, скриптовых, а также SQL-инъекций. Некоторые уязвимости известны только теоретически, другие же активно используются и имеют известные эксплойты.
Обычно уязвимость позволяет атакующему «обмануть» приложение — заставить его совершить действие, на которое у того не должно быть прав. Это делается путем внедрения каким-либо образом в программу данных или кода в такие места, что программа воспримет их как «свои». Некоторые уязвимости появляются из-за недостаточной проверки данных, вводимых пользователем, и позволяют вставить в интерпретируемый код произвольные команды (SQL-инъекция, XSS). Другие уязвимости появляются из-за более сложных проблем, таких как запись данных в буфер без проверки его границ (переполнение буфера).
Метод информирования об уязвимостях является одним из пунктов спора в сообществе компьютерной безопасности. Некоторые специалисты отстаивают немедленное полное раскрытие информации об уязвимостях, как только они найдены. Другие советуют сообщать об уязвимостях только тем пользователям, которые подвергаются наибольшему риску, а полную информацию публиковать лишь после задержки или не публиковать совсем. Такие задержки могут позволить тем, кто был извещён, исправить ошибку при помощи разработки и применения патчей, но также могут и увеличивать риск для тех, кто не посвящён в детали.
Существуют инструментальные средства, которые могут помочь в обнаружении уязвимостей в системе. Хотя эти инструменты могут обеспечить аудитору хороший обзор возможных уязвимостей, существующих в системе, они не могут заменить участие человека в их оценке.
Для обеспечения защищённости и целостности системы необходимо постоянно следить за ней: устанавливать обновления, и использовать инструменты, которые помогают противодействовать возможным атакам. Уязвимости обнаруживались во всех основных операционных системах, включая Microsoft Windows, Mac OS, различные варианты UNIX (в том числе GNU/Linux) и OpenVMS. Так как новые уязвимости находят непрерывно, единственный путь уменьшить вероятность их использования против системы — постоянная бдительность.
Примеры уязвимостей
Распространённые типы уязвимостей включают в себя:
- Нарушения безопасности доступа к памяти, такие как:
- Ошибки проверки вводимых данных, такие как:
- ошибки форматирующей строки
- Неверная поддержка интерпретации метасимволов командной оболочки
- SQL-инъекция
- Инъекция кода
- E-mail инъекция
- Обход каталогов
- Межсайтовый скриптинг в веб-приложениях
- Состояния гонки, такие как:
- Ошибки путаницы привилегий, такие как:
- Подделка межсайтовых запросов в веб-приложениях
- Эскалация привилегий, такие как:
См. также
Ссылки
- Open Source Vulnerability Database homepage (англ.)
- Security Focus Vulns Archive (англ.)
- Packet Storm (vulnerability and tool archives) (англ.)
- Vigil@nce vulnerability archive (англ.) (фр.)
- NIST Software Assurance Metrics and Tool Evaluation (SAMATE) project (англ.)
- Живой поиск по базе уязвимостей (рус.)
- База уязвимостей на русском языке с 1997 года (рус.)
- Определение понятия уязвимость. Словарь Глоссарий.ру (рус.)
- Классификаторы и метрики компьютерных уязвимостей
- Блог о уязвимостях и защите
- Безопасность Windows
- Проверка уязвимостей браузера и плагинов