«Уязвимости есть? А если найду?»

Дата: 29.04.2016
Автор: Сергей Краснов, аналитик

Уже достаточно давно наша жизнь неразрывно связана с информационными технологиями. Мы оплачиваем покупки в интернете, ведём личное и деловое общение по средствам связи, записываемся к врачу, размещаем личную информацию о себе. Но как мы можем спать спокойно зная, что во всём мире ежегодно находится огромное количество уязвимостей? 

  Рисунок 1

Сегодня многие компании и фрилансеры предлагают свои услуги по поиску уязвимостей и анализу защищённости. И интернет-сервисы, нуждающиеся в повышенной безопасности, могут беспрепятственно ими пользоваться. Но как простому человеку, далёкому от отраслевых тонкостей, разобраться, что же предлагают эти компании? И что конкретно из их услуг ему нужно?

Давайте попробуем разобраться в этих вопросах.

Как искать уязвимости

Существуют всего два подхода к поиску уязвимостей (рисунок 2).

 

Рисунок 2

Подходы:

  • анализ по модели черного ящика (Black Box);
  • анализ по модели белого ящика (White Box).

Отличие этих подходов в том, что при Black Box у аналитика есть только доступ к работающей системе, а при White Box – ещё и все исходные данные: файлы настроек, исходный код собственных приложений, информация об окружении и т.д.  

Эти два подхода универсальны – они относятся к поиску уязвимостей в любых информационных системах.

Давайте кратко рассмотрим, что включают в себя эти подходы к тестированию. Для каждого из них постараемся ответить на такие вопросы, как: «Что же делают аналитики, когда тестируют?», «Зачем нужны такие анализы?», «Кому нужны такие тесты?».

Black box

Начнём мы с Black Box. Давайте сразу расставим акценты: Black Box – это поиск уязвимостей и векторов атак методом моделирования хакерской атаки. Аналитик, не имея никакой информации о системе, начинает эту информацию собирать.

 

Рисунок 3

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

И на основе всей собранной информации аналитик начинает искать уязвимости. Это очень трудоёмкий и долгий процесс, в котором выполняются различные инструментальные и ручные проверки.

И в результате мы получаем информацию о том, что же может сделать с нашей системой любой пользователь Интернета, обладающий нужной квалификацией.

Регулярные Black Box-тестирования позволяют держать внешний периметр информационной системы в тонусе.

Нужно обратить внимание на регулярность! Это действительно необходимо, потому что все информационные системы – живые организмы. Софт постоянно обновляется, администраторы постоянно что-то меняют, программисты выкатывают новые версии сайтов. И в дополнение ко всему – постоянно находятся новые уязвимости.

White box

Теперь рассмотрим White Box.

White Box – это более урожайный на уязвимости анализ. У аналитика изначально есть все исходные данные и он занимается их пристальным изучением.

Все работы делятся на 3 этапа:

  • На первом этапе изучается окружение и вся информационная система целиком. На этом этапе определяются возможные угрозы, анализируется архитектура всей системы, изучаются настройки, проверяется соответствие элементов системы международным Benchmark’ам по безопасности.
  • Потом переходим к следующему этапу – это самое вкусное, в основном ради этого и делают такой анализ, анализ исходных кодов приложений. Тут анализируются собственные или заказные разработки.
    Сначала идут автоматические сканирования исходников статическими и динамическими анализаторами. Так же, происходит изучение всех зависимостей приложения на предмет устаревших версий, известных уязвимостей.
  • После того, как пройдут все автоматические проверки, начинается обработка результатов и ручные проверки кода. Все найденные подозрения на уязвимости, даже с самым низким уровнем, проходят тщательное изучение экспертами. Так же, на этом этапе проходит подробное изучение архитектуры приложения и выявляются все критичные места: механизмы авторизации, аутентификации, шифрования, обработки важных данных. Эти критичные места, так же, проходят тщательную проверку экспертами.

И в результате мы получаем максимально возможное количество уязвимостей, которые только можно найти в информационной системе. И, кроме уязвимостей, мы ещё получаем приятные бонусы:

  • Выявление бэкдоров. Анализ архитектуры и логики приложений позволяет выявлять оставленные разработчиками бэкдоры;
  • Рекомендации по устранению уязвимостей. При анализе кода мы знаем не только как проявляют себя уязвимости, но и точное место где она возникали и почему. А это позволяет дать экспертные рекомендации: как их устранить и как не допускать их в будущем;
  • PoC скрипты. Для подтверждения уязвимостей и их автоматического воспроизведения мы можем написать скрипты. Обычное подтверждение уязвимости - это скриншот или набор входных данных, при которым можно воспроизвести и убедиться в наличии уязвимости. Но не все уязвимости можно подтверждать таким образом. Например, уязвимость по удалению базы пользователей. Деструктивное действие, которое мы не будем подтверждать на реальной системе. Но имея перед глазами исходник, мы можем написать нужный скрипт.

Причин, по которым может возникнуть потребность в таком анализе, много. Самые популярные:

  • Тайное становится явным. Даже если эксперты смогли обнаружить уязвимость только имея на руках исходный код – это не значит, что злоумышленники не смогут найти эти уязвимости. Рано или поздно, они всё равно выстрелят;
  • Compliance. Для соответствия требованиям некоторых отраслевых стандартов обязательно проводить тестирования White Box или Black Box;
  • Выявление бэкдоров. Иногда это самая важна причина проведения анализа защищённости. К примеру, если вы заказали разработку платёжной системы внешнему подрядчику, захотите ли вы убедиться, что там нету недекларированных возможностей?

Итог

Как мы видим, в поиске уязвимостей нет никакой магии и можно организовать тестирование White Box и Black Box самостоятельно. Нужно только купить необходимые программные средства (на рынке их очень много, к примеру, продукты компаний: InfoWatch, Positive Technologies). Правда, придётся нанять и/или обучить специалистов, которые смогут корректно интерпретировать результаты.

Или можно воспользоваться услугами УЦСБ, у которого есть опыт проведения таких тестирований, необходимые инструменты и специалисты, обладающие нужными компетенциями.

Решайте, что подходит именно вам!