Уязвимости программ

Главные вкладки

Уязвимости программ - ошибки допущенные программистами на этапе разработки программного обеспечения. Это позволяет злоумышленникам получить незаконный доступ к функциям программы или хранящимся в ней данным. Они могут появиться на любом этапе написания софта, от проектирования до выпуска готового продукта. В ряде случаев программисты могут нарочно оставить определенные лазейки для проведения отладки и настройки, которые также могут рассматриваться в качестве багов.

Возникновение уязвимостей может обуславливаться применением средств разработки различного происхождения, которые увеличивают риск появления в программном коде дефектов диверсионного типа.

Уязвимости появляются вследствие использования в составе ПО сторонних компонентов или свободно распространяемого кода (open source). Сторонний код часто используется “как есть” без тщательного анализа и тестирования на безопасность.

Не стоит исключать наличие в команде программистов инсайдеров, которые преднамеренно вносят в написанный софт дополнительные функции или элементы.

Классификация уязвимостей программ

Уязвимости возникают в результате ошибок, возникших на этапе проектирования или написания программного кода.

В зависимости от стадии появления этот вид угроз делится на уязвимости проектирования, реализации и конфигурации.

  1. Ошибки, допущенные при проектировании, сложнее всего обнаружить и устранить. Это неточности алгоритмов, закладки, несогласованности в интерфейсе между модулями и в протоколах взаимодействия с аппаратной частью, внедрение неоптимальных технологий. Их устранение является достаточно трудоемким процессом. Могут проявиться при превышении предусмотренного трафика или подключении большого количества дополнительного оборудования, что усложняет обеспечение требуемого уровня безопасности и ведет к возникновению путей обхода межсетевого экрана.
  2. Уязвимости второго типа состоят в появлении ошибок на этапе внедрения в ПО алгоритмов безопасности. Это некорректная организация вычислительного процесса, синтаксические и логические. При этом имеется риск, что это приведет к переполнению буфера или появлению неполадок иного рода. Их обнаружение занимает много времени. Исправляются путем исправления определенных участков машинного кода.
  3. Ошибки конфигурации аппаратной части и ПО встречаются достаточно часто. Это отсутствие тестов на испытание дополнительных функций софта или баги в них. К этой категории также относятся слишком простые пароли и оставленные учетные записи по умолчанию.

Согласно статистики чаще всего уязвимости находят в продуктах компании Adobe (Adobe Flash Player, Air Sdk, AIR, Air Sdk & Compiler), Microsoft (Internet Explorer), Google (Chrome) и Mozilla (Firefox). Детально со списком уязвимых приложенийвы можете ознакомится в материале "Самые уязвимые приложения и ОС 2015 года".

Источник угроз

Программы в которых находят наибольшее число уязвимостей установлены практически на всех компьютерах (например, Adobe Flash Player). Со стороны киберпреступников имеется прямая заинтересованность в поиске подобных багов и написании, для их эксплуатации, вредоносных приложений.

Учитывая, что с момента обнаружения уязвимости и до момента выхода патча, проходит довольно много времени, то возможностей заразить компьютерные системы предостаточно. При этом пользователю достаточно только один раз открыть PDF-файл, после чего злоумышленники получат доступ к данным.

Заражение происходит по следующему алгоритму:

  • Пользователь получает по электронной почте письмо от внушающего доверие отправителя
  • В письмо вложен файл
  • Если пользователь предпринимает попытку открытия файла - происходит заражение компьютера
  • Киберпреступники получают доступ к системе
  • Происходит кража ценных данных

Анализ риска

Исследования проводимые различными компаниями (Лаборатория Касперского, Positive Technologies) показывают, что уязвимости есть практически в любом приложении, включая антивирусы. Поэтому вероятность установить содержащий баги софт достаточно высока.

Чтобы минимизировать количество багов в ПО необходимо:

  1. Использовать функции антивирусных продуктов позволяющих выполнять поиск багов и при необходимости обновлять ПО.
  2. SDL (Security Development Lifecycle). Технология SDL используется для снижения числа багов в приложениях на этапе разработки. Так при проектировании ПО, специалисты ИБ и программисты моделируют киберугрозы с целью поисках уязвимых мест программного обеспечения. В процессе программирования, в процесс поиска уязивимостей включаются автоматические средства, а при их обнаружении сразу же сообщают об этом. Разработчики стремятся значительно ограничить функции доступные непроверенным пользователям, это способствуется уменьшению поверхности атаки.

Чтобы минимизировать влияние багов, необходимо выполнять некоторые правила:

  • оперативно устанавливать выпускаемые разработчиками заплатки для приложений или включить автоматический режим обновления;
  • по возможности не устанавливать сомнительный софт, чье качество и техническая поддержка вызывает вопросы;
  • использовать специальные сканеры уязвимостей.

Анализ угроз