В компьютерной безопасности термин «уязвимость» (, на сленге — дыра) используется для обозначения недостатка в системе, используя который, можно намеренно нарушить её целостность и вызвать неправильную работу. Уязвимость может быть результатом ошибок программирования, недостатков, допущенных при проектировании системы, ненадежных паролей, вирусов и других вредоносных программ, скриптовых и SQL-инъекций. Некоторые уязвимости известны только теоретически, другие же активно используются и имеют известные эксплойты.
Уровень опасности уязвимостей делится на пять ступеней по возрастанию своей критичности: недочёт (), несерьёзная уязвимость (), средняя уязвимость (), серьёзная уязвимость () и критическая уязвимость ().
Обычно уязвимость позволяет атакующему «обмануть» приложение — выполнить непредусмотренные создателем действия или заставить приложение совершить действие, на которое у того не должно быть прав. Это делается путём внедрения каким-либо образом в программу данных или кода в такие места, что программа воспримет их как «свои». Некоторые уязвимости появляются из-за недостаточной проверки данных, вводимых пользователем, и позволяют вставить в интерпретируемый код произвольные команды (SQL-инъекция, XSS, SiXSS). Другие уязвимости появляются из-за более сложных проблем, таких как нарушение безопасности при работе с памятью, например переполнение буфера. Поиск уязвимостей иногда называют зондированием, например когда говорят о зондировании удалённого компьютера — подразумевают, поиск открытых сетевых портов и наличии уязвимостей, связанных с приложениями, использующими эти порты.
Метод информирования об уязвимостях является одним из пунктов спора в сообществе компьютерной безопасности. Некоторые специалисты отстаивают немедленное полное раскрытие информации об уязвимостях, как только они найдены. Другие советуют сообщать об уязвимостях только тем пользователям, которые подвергаются наибольшему риску, а полную информацию публиковать лишь после задержки или не публиковать совсем. Такие задержки могут позволить тем, кто был извещён, исправить ошибку при помощи разработки и применения патчей, но также могут и увеличивать риск для тех, кто не посвящён в детали.
Существуют инструментальные средства, которые могут помочь в обнаружении уязвимостей в системе. Хоть эти инструменты могут обеспечить аудитору хороший обзор возможных уязвимостей, существующих в системе, они не могут заменить участие человека в их оценке.
Для обеспечения защищённости и целостности системы необходимо постоянно следить за ней: устанавливать обновления, использовать инструменты, которые помогают противодействовать возможным атакам. Уязвимости обнаруживались во всех основных операционных системах, включая Microsoft Windows, Mac OS, различные варианты UNIX (в том числе GNU/Linux) и OpenVMS. Так как новые уязвимости находят непрерывно, единственный путь уменьшить вероятность их использования против системы — постоянная бдительность и использование обновленных версий ПО.
Выявление уязвимостей Для выявления уязвимостей проводятся пентесты, в ходе которых обычно определяется перечень проверяемых систем и конкретная цель, а затем анализируется доступная информация и подбираются средства для достижения этой цели. Целью теста на проникновение может быть «белый ящик» (о котором предварительная и системная информация предоставляется тестировщику заранее) или «черный ящик» (о котором предоставляется только основная информация — если таковая имеется — кроме названия компании).
Система управления информационной безопасностью Набор политик, относящихся к системе менеджмента информационной безопасности (ISMS), был разработан для управления контрмерами, чтобы стратегия безопасности была реализована в соответствии с правилами и положениями, применимыми к данной организации.
Модели уязвимости и факторов риска Ресурс (физический или логический) может иметь одну или несколько уязвимостей, которыми может воспользоваться злоумышленник. Результат может потенциально поставить под угрозу конфиденциальность, целостность или доступность ресурсов, принадлежащих организации и / или другим вовлеченным сторонам (клиентам, поставщикам).
Примеры уязвимостей
Распространённые типы уязвимостей включают в себя: Нарушения безопасности доступа к памяти, такие как: Переполнения буфера Висячие указатели Ошибки проверки вводимых данных, такие как: Ошибки форматирующей строки Неверная поддержка интерпретации метасимволов командной оболочки SQL-инъекция Инъекция кода Инъекция E-mail Обход каталогов Межсайтовый скриптинг в веб-приложениях Межсайтовый скриптинг при наличии SQL-инъекции Состояния гонки, такие как: Ошибки времени-проверки-ко-времени-использования Гонки символьных ссылок Ошибки путаницы привилегий, такие как: Подделка межсайтовых запросов в веб-приложениях Эскалация привилегий, такие как: Shatter attack Уязвимость нулевого дня
См. также
Недекларированные возможности Деревья атак
Примечания
Ссылки Open Source Vulnerability Database homepage Packet Storm (vulnerability and tool archives) Vigilance vulnerability archive NIST Software Assurance Metrics and Tool Evaluation (SAMATE) project База уязвимостей на русском языке с 1997 года Безопасность, безопасность! А вы её тестируете? // Андрей Карпов, 07.11.2012, Viva64 Vulners (vulnerability database) — база уязвимостей Kirill Ermakov (Qiwi) на основе CVE, Debian patches, CentOS bulletins, ExploitDB и др.
* Категория:Информационная безопасность