Уязвимость (компьютерная безопасность)
В компьютерной безопасности термин «уязвимость» (англ. vulnerability, на сленге — дыра) используется для обозначения недостатка в системе, используя который, можно намеренно нарушить её целостность и вызвать неправильную работу. Уязвимость может быть результатом ошибок программирования, недостатков, допущенных при проектировании системы, ненадежных паролей, вирусов и других вредоносных программ, скриптовых и SQL-инъекций. Некоторые уязвимости известны только теоретически, другие же активно используются и имеют известные эксплойты.
Обычно уязвимость позволяет атакующему «обмануть» приложение — выполнить непредусмотренные создателем действия или заставить приложение совершить действие, на которое у того не должно быть прав. Это делается путём внедрения каким-либо образом в программу данных или кода в такие места, что программа воспримет их как «свои». Некоторые уязвимости появляются из-за недостаточной проверки данных, вводимых пользователем, и позволяют вставить в интерпретируемый код произвольные команды (SQL-инъекция, XSS, SiXSS). Другие уязвимости появляются из-за более сложных проблем, таких как нарушение безопасности при работе с памятью, например переполнение буфера. Поиск уязвимостей иногда называют зондированием, например когда говорят о зондировании удалённого компьютера — подразумевают, поиск открытых сетевых портов и наличии уязвимостей, связанных с приложениями, использующими эти порты.[1]
Метод информирования об уязвимостях является одним из пунктов спора в сообществе компьютерной безопасности. Некоторые специалисты отстаивают немедленное полное раскрытие информации об уязвимостях, как только они найдены. Другие советуют сообщать об уязвимостях только тем пользователям, которые подвергаются наибольшему риску, а полную информацию публиковать лишь после задержки или не публиковать совсем. Такие задержки могут позволить тем, кто был извещён, исправить ошибку при помощи разработки и применения патчей, но также могут и увеличивать риск для тех, кто не посвящён в детали.
Существуют инструментальные средства, которые могут помочь в обнаружении уязвимостей в системе. Хотя эти инструменты могут обеспечить аудитору хороший обзор возможных уязвимостей, существующих в системе, они не могут заменить участие человека в их оценке.
Для обеспечения защищённости и целостности системы необходимо постоянно следить за ней: устанавливать обновления, использовать инструменты, которые помогают противодействовать возможным атакам. Уязвимости обнаруживались во всех основных операционных системах, включая Microsoft Windows, Mac OS, различные варианты UNIX (в том числе GNU/Linux) и OpenVMS. Так как новые уязвимости находят непрерывно, единственный путь уменьшить вероятность их использования против системы — постоянная бдительность и использование обновленных версий ПО.
Выявление уязвимостей
Для выявления уязвимостей проводятся пентесты, в ходе которых обычно определяется перечень проверяемых систем и конкретная цель, а затем анализируется доступная информация и подбираются средства для достижения этой цели. Целью теста на проникновение может быть "белый ящик" (о котором предварительная и системная информация предоставляется тестировщику заранее) или "черный ящик" (о котором предоставляется только основная информация - если таковая имеется - кроме названия компании).
Система управления информационной безопасностью
Набор политик, относящихся к системе менеджмента информационной безопасности (ISMS), был разработан для управления контрмерами, чтобы стратегия безопасности была реализована в соответствии с правилами и положениями, применимыми к данной организации.[2]
Модели уязвимости и факторов риска
Ресурс (физический или логический) может иметь одну или несколько уязвимостей, которыми может воспользоваться злоумышленник. Результат может потенциально поставить под угрозу конфиденциальность, целостность или доступность ресурсов, принадлежащих организации и / или другим вовлеченным сторонам (клиентам, поставщикам).[3]
Примеры уязвимостей
Распространённые типы уязвимостей включают в себя:
- Нарушения безопасности доступа к памяти, такие как:
- Ошибки проверки вводимых данных, такие как:
- Ошибки форматирующей строки
- Неверная поддержка интерпретации метасимволов командной оболочки
- SQL-инъекция
- Инъекция кода
- Инъекция E-mail
- Обход каталогов
- Межсайтовый скриптинг в веб-приложениях
- Межсайтовый скриптинг при наличии SQL-инъекции
- Состояния гонки, такие как:
- Ошибки времени-проверки-ко-времени-использования
- Гонки символьных ссылок
- Ошибки путаницы привилегий, такие как:
- Подделка межсайтовых запросов в веб-приложениях
- Эскалация привилегий, такие как:
- Уязвимость нулевого дня
Примечания
- Justin Seitz. Black Hat Python: Python Programming for Hackers. — No Starch Press, 2021-04-14.
- Wright, Joe. 15 // Computer and Information Security Handbook / Joe Wright, Jim Harmening. — Elsevier Inc, 2009. — P. 257. — ISBN 978-0-12-374354-1.
- Ric Messier. CEH v11 Certified Ethical Hacker Study Guide. — 2021.
Ссылки
- 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 года (рус.)
- Классификаторы и метрики компьютерных уязвимостей //15.05.2009, Андрей «skvz» Комаров, Xakep
- Безопасность, безопасность! А вы её тестируете? // Андрей Карпов, 07.11.2012, Viva64
- Vulners (vulnerability database) (англ.) - база уязвимостей Kirill Ermakov (Qiwi) на основе CVE, Debian patches, CentOS bulletins, ExploitDB и др.