В некоторых случаях возникновение уязвимостей обусловлено применением средств разработки различного происхождения, которые увеличивают риск появления в программном коде дефектов диверсионного типа.
Уязвимости появляются вследствие добавления в состав ПО сторонних компонентов или свободно распространяемого кода (open source). Чужой код часто используется «как есть» без тщательного анализа и тестирования на безопасность.
Не стоит исключать и наличие в команде программистов-инсайдеров, которые преднамеренно вносят в создаваемый продукт дополнительные недокументированные функции или элементы.
Уязвимости возникают в результате ошибок, возникших на этапе проектирования или написания программного кода.
В зависимости от стадии появления этот вид угроз делится на уязвимости проектирования, реализации и конфигурации.
Согласно статистике, особенно часто уязвимости обнаруживают в популярных и распространенных продуктах - настольных и мобильных операционных системах, браузерах.
Программы, в которых находят наибольшее число уязвимостей, установлены практически на всех компьютерах. Со стороны киберпреступников имеется прямая заинтересованность в поиске подобных изъянов и написании для них.
Поскольку с момента обнаружения уязвимости до публикации исправления (патча) проходит довольно много времени, существует изрядное количество возможностей заразить компьютерные системы через бреши в безопасности программного кода. При этом пользователю достаточно только один раз открыть, например, вредоносный PDF-файл с эксплойтом, после чего злоумышленники получат доступ к данным.
Заражение в последнем случае происходит по следующему алгоритму:
Исследования, проводимые различными компаниями («Лаборатория Касперского», Positive Technologies), показывают, что уязвимости есть практически в любом приложении, включая антивирусы. Поэтому вероятность установить программный продукт, содержащий изъяны разной степени критичности, весьма высока.
Чтобы минимизировать количество брешей в ПО, необходимо использовать SDL (Security Development Lifecycle, безопасный жизненный цикл разработки). Технология SDL используется для снижения числа багов в приложениях на всех этапах их создания и поддержки. Так, при проектировании программного обеспечения специалисты по ИБ и программисты моделируют киберугрозы с целью поиска уязвимых мест. В ходе программирования в процесс включаются автоматические средства, сразу же сообщающие о потенциальных изъянах. Разработчики стремятся значительно ограничить функции, доступные непроверенным пользователям, что способствует уменьшению поверхности атаки.
Чтобы минимизировать влияние уязвимостей и ущерб от них, необходимо выполнять некоторые правила:
Другой способ взглянуть на эту проблему заключается в том, что компании должны быстро реагировать, когда приложение имеет уязвимость. Это требует, чтобы ИТ-отдел имел возможность окончательно отслеживать установленные приложения, компоненты и патчи с помощью средств автоматизации и стандартных инструментов. Существуют отраслевые усилия по стандартизации тегов программного обеспечения (19770-2), которые представляют собой файлы XML, установленные с приложением, компонентом и/или патчем, которые идентифицируют установленное программное обеспечение, а в случае компонента или патча, какое приложение они часть. Теги имеют авторитетную информацию издателя, информацию о версии, список файлов с именем файла, безопасный хэш файла и размер, которые могут использоваться для подтверждения того, что установленное приложение находится в системе, и что двоичные файлы не были изменены третьей стороной. Эти метки подписываются цифровой подписью издателем.
Когда известна уязвимость, ИТ-отделы могут использовать свое программное обеспечение для управления активами для немедленного выявления систем с уязвимым программным обеспечением и могут предпринять шаги для обновления систем. Теги могут быть частью патча или обновления, которые можно использовать для проверки того, что патч установлен. Таким образом, ИТ-отделы могут использовать такие ресурсы, как Национальная база данных уязвимостей NIST, как средство управления своими инструментами управления активами, так что, как только уязвимость будет отправлена компанией в NVD, ИТ-отдел может немедленно сравнить новые уязвимости с их к настоящему времени.
Существует группа компаний, работающих через некоммерческую организацию IEEE/ISTO под названием TagVault.org (www.tagvault.org) с правительством США, на стандартную реализацию ISO 19770-2, которая позволит этот уровень автоматизации. В какой-то момент эти теги, соответствующие этой реализации, скорее всего, будут обязательными для программного обеспечения, проданного правительству США в какой-то момент в ближайшие пару лет.
Поэтому, в конце концов, хорошей практикой является не публикация о том, какие приложения и конкретные версии программного обеспечения вы используете, но это может быть затруднено, как указывалось ранее. Вы хотите убедиться в том, что у вас есть точный, современный инвентарь программного обеспечения, что он регулярно сравнивается со списком известных уязвимостей, таких как NVID от NVD, и что ИТ-отдел может предпринять немедленные действия для реминирования угрозы, Это наряду с новейшим обнаружением вторжений, антивирусным сканированием и другими методами блокировки среды, по крайней мере, будет очень сложно скомпрометировать вашу среду, и если/когда это произойдет, то она не будет обнаружена для длительный период времени.
В настоящее время разработано большое количество инструментальных средств, предназначенных для автоматизации поиска уязвимостей программ. В данной статье будут рассмотрены некоторые из них.
Статический анализ кода - это анализ программного обеспечения, который производится над исходным кодом программ и реализуется без реального исполнения исследуемой программы.
Программное обеспечение часто содержит разнообразные уязвимости из-за ошибок в коде программ. Ошибки, допущенные при разработке программ, в некоторых ситуациях приводят к сбою программы, а следовательно, нарушается нормальная работа программы: при этом часто возникает изменение и порча данных, останов программы или даже системы. Большинство уязвимостей связано с неправильной обработкой данных, получаемых извне, или недостаточно строгой их проверкой.
Для выявления уязвимостей используют различные инструментальные средства, например, статические анализаторы исходного кода программы, обзор которых приведён в данной статье.
Когда требование корректной работы программы на всех возможных входных данных нарушается, становится возможным появление так называемых уязвимостей защиты (security vulnerability). Уязвимости защиты могут приводить к тому, что одна программа может использоваться для преодоления ограничений защиты всей системы в целом.
Классификация уязвимостей защиты в зависимости от программных ошибок:
Конечно, кроме перечисленных существуют и другие классы уязвимостей защиты.
Для обнаружения уязвимостей защиты в программах применяют следующие инструментальные средства:
Статические анализаторы указывают на те места в программе, в которых возможно находится ошибка. Эти подозрительные фрагменты кода могут, как содержать ошибку, так и оказаться совершенно безопасными.
В данной статье предложен обзор нескольких существующих статических анализаторов. Рассмотрим подробнее каждый из них.
При запуске интеллектуального сканирования программа Avast проверит ПК на наличие следующих типов проблем, а затем предложит варианты их устранения.
Примечание . Решение определенных проблем, обнаруживаемых в ходе интеллектуального сканирования, может потребовать отдельной лицензии. Обнаружение ненужных типов проблем можно отключить в .
Зеленый флажок рядом с областью сканирования показывает, что проблем, связанных с ней, не обнаружено. Красный крест означает, что сканирование выявило одну или несколько связанных проблем.
Чтобы просмотреть конкретные сведения об обнаруженных проблемах, щелкните элемент Решить все . Интеллектуальное сканирование показывает сведения о каждой проблеме и предлагает возможность исправить ее немедленно, щелкнув элемент Решить , или сделать это позже, нажав Пропустить этот шаг .
Примечание . Журналы сканирований антивируса можно увидеть в истории сканирования , перейти к которой можно, выбрав Защита ▸ Антивирус .
Чтобы изменить настройки интеллектуального сканирования, выберите Настройки ▸ Общие ▸ Интеллектуальное сканирование и укажите, на наличие каких из перечисленных типов проблем вы хотите выполнить интеллектуальное сканирование.
По умолчанию включены все типы проблем. Чтобы прекратить проверку на наличие определенной проблемы при выполнении интеллектуального сканирования, щелкните ползунок Включено рядом с типом проблемы, чтобы он изменил состояние на Выключено .
Щелкните Настройки рядом с надписью Сканирование на вирусы , чтобы изменить параметры сканирования.