28 октября 2015 года в компании Solar Security объявили о выводе на российский рынок нового продукта под названием Solar inCode. Решение не появилось «из воздуха»: заложенные в продукт технологии стали результатом работы специалистов за последние 10 лет. В процессе разработки решения, специалистами было защищено несколько диссертаций, сделаны десятки научных публикаций в российской и западной прессе.

Solar inCode сегодня – это анализатор статического кода приложений. В настоящее время решение поддерживает анализ кода, написанного на наиболее популярных языках программирования – Java, Scala, PHP, Java for Android, Objective C (iOS), С# (.Net), JavaScript, PL/SQL. С 20 мая полноценно заработает анализатор для языка Python, а до конца 2016 года планируется добавить к списку язык С++. На базе сервиса JSOC реализован удобный облачный сервис Solar inCode.

Отличительной особенность продукта стало умение анализировать некоторые виды приложений без предоставления исходного кода — Solar inCode самостоятельно воссоздаёт его, и уже по восстановленному коду определяет имеющиеся уязвимости. На момент написания статьи решение поддерживает анализ скомпилированных приложений для платформ: Android (.apk), iOS (.ipa), Java-платформы, такие как Symbian (.jar и .war) и Scala (.war).

Таким образом, решение Solar inCode можно использовать для двух типов задач – для анализа исходного кода и анализа уже готовых к работе мобильных приложений, загружая их для анализа напрямую из публичных web-хранилищ.

Основной функционал

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

scrn01

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

scrn02

Solar inCode оценивает приложения по пятибалльной шкале, где 5 баллов – это максимально безопасный уровень. В формуле вычисления баллов участвует как количество найденных уязвимостей, разделённых на три группы, так и размер самого кода. В результате баллы отображают средний уровень критичности найденных уязвимостей на единицу кода. История сканирований позволяет отслеживать во времени тенденцию с количеством уязвимости и общей безопасностью приложений.

scrn03

Разработчики Solar inCode уделили должное внимание решению проблемы, присущей для большинства современных анализаторов кода – минимизации количества ложных срабатываний (False Positive) и пропуска уязвимостей в коде (False Negative). В Solar inCode за этот процесс отвечает отдельный «интеллектуальный» движок – модуль нечёткой логики «Fuzzy Logic Engine», который помогает уйти от типичной ситуации поиска 10% реальных уязвимостей в 90% False Positive и сконцентрироваться на наиболее вероятных угрозах.

Общая схема работы решения выглядит следующим образом:

Параметры работы фильтров «Fuzzy Logic Engine» определяются базой знаний, которая постоянно пополняется. Количество ложных срабатываний и пропусков уязвимостей является одним из ключевых параметров сканера кода и разработчиком заявлено, что модернизация данного модуля является важным приоритетом в развитии всего решения.

Все оставшиеся в отчёте уязвимости разделены на три группы по степени важности: критического, среднего и низкого уровня. Каждая уязвимость имеет привязку с исходному коду, описание (почему этот код опознан как уязвимость), пример типичного кода с такой уязвимостью, рекомендации по устранению, ссылки на материалы по теме (для расширения кругозора и самообразования). Описания не перегружены техническими терминами и сложными оборотами. Такой подход позволяет специалисту быстро разобраться, какие реальные уязвимости есть в коде и выделить их для исправления, а начинающим специалистам – самостоятельно «погрузиться» в тему и расшить свой уровень компетенции на разборе реального кода.

scrn04

Если при изучении отчёта специалист определит, что найденная уязвимость на самом деле является False Positive, её можно исключить из итогового отчёта. Также можно создать правило, чтобы найденная False Positive в конкретном приложении не появлялась в последующих отчётах.

scrn05

Для приложений с исходным кодом Solar inCode предлагает дополнительно воспользоваться рекомендациями по настройке «внешних средств защиты» приложений — Web Application Firewall (WAF). Поддерживаются наиболее распространённые в России WAF – Imperva SecureSphere, ModSecurity (Open Source Web Application Firewall) и WAF от компании F5. Это весьма удобно, когда нет возможности оперативно удалить найденные уязвимости в коде приложения, но уже нужно не дать злоумышленникам воспользоваться ими.

scrn06

Интеграция решения

Компания Solar Security позволяет «кобрендировать» web-интерфейс и отчёты Solar inCode логотипами партнёров-интеграторов, занимающихся продвижением данного решения. Пример виден на скриншотах к данной статье.

Solar inCode можно интегрировать с:

  • Репозиториями разработки. В этом случае код для анализа будет загружаться напрямую из репозитория и отпадёт необходимость загружать файлы вручную.
  • Service Desk. При обнаружении уязвимостей специалист по безопасности сможет не только устранить уязвимости силами своего подразделения, но и в несколько кликов открыть кейс по реализации выданных рекомендаций другим подразделениям. Например, чтобы администраторы внесли соответствующие правила в SIEM, WAF, FW и NGFW.
  •  Solar inView — результаты работы inCode встраиваются в структуру отчетности и метрик inView (системы визуализации, аналитики и мониторинга эффективности ИБ).

При локальной установке Solar inCode возможна настройка решения таким образом, чтобы запуск происходил автоматически (по расписанию), анализировался код из репозиториев и генерировались соответствующие отчёты, фиксируя динамику по уязвимостям в каждом из анализируемых приложений.

Мобильные приложения

В решение Solar inCode реализованы технологии, основанные на Reverse Engineering и позволяющие восстанавливать bytecode для Java, Scala, Java for Android, а также декомпилировать приложения, написанные на Objective C. Некоторые разработчики оптимизируют и шифруют код своих мобильных приложений — такие приложения Solar inCode предварительно распаковывает и «распутывает» преобразования, декодирует (деобфусцирует) код. Опыт работы с Solar inCode показал, что удаётся деобфусцировать и декомпилировать порядка 98% приложений из Google Play или Apple Store.

Схема

Восстановление исходного кода позволяет заменить анализ приложений методом «чёрного ящика» (попытки взлома работающих приложений известными методами) на анализ методом «белого ящика» (выявление уязвимостей в исходном коде). Учитывая, что анализ методом «чёрного ящика», по разным оценкам, даёт около 30% от находимых уязвимостей методом «белого ящика», это настоящий прорыв в индустрии.

При декомпиляции приложений, написанных на Java, Scala и Java for Android, решение Solar inCode полностью восстанавливает структуру папок и файлов, используемых разработчиками. Это позволяет точно определять, в какой части кода были допущены уязвимости – в модулях, разработанных собственными программистами, в разработанных на заказ, либо в подключенных внешних библиотеках.

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

Запустить анализ мобильного приложения в Solar inCode очень просто: достаточно выбрать платформу и скопировать ссылку на приложение из Google Play или Apple Store.

scrn07

Скорость анализа мобильных приложений зависит от их размера и нагрузки на сервер (можно одновременно анализировать несколько приложений). На анализ одного приложения обычно требуется 5-10 минут.

Среднее количество находимых уязвимостей в приложениях для Android и iOS пока отличается — в iOS-приложениях выявляется меньше уязвимостей. Этот дисбаланс, скорее всего, основан не на том, что в iOS-приложениях меньше уязвимостей, а на том что Solar inCode есть куда развиваться.

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

Заключение

Простота и удобство использования оставили самое положительное впечатление от этого решения. В ходе практических испытаний удалось выделить следующие преимущества Solar inCode:

  • Результаты анализа выдаются в формате конкретных рекомендаций по устранению уязвимостей в коде, на понятном русском языке.
  • Дополнительно доступны рекомендации по настройке внешних средств защиты приложений, таких как SIEM, WAF и Firewall.
  • В отличие от текстовых анализаторов, Solar inCode анализирует код по внутреннему представлению, позволяющему учитывать особенности выполнения программы.
  • Для мобильных приложений под Android, iOS и Symbian существует возможность анализа при отсутствии исходных кодов.
  • Быстрый запуск: сканирование запускается в несколько кликов, не требуя долгой предварительной настройки.
  • Возможности интеграции с Service Desk, репозиториями разработки, SIEM.

Резюмируя вышеописанное, можно констатировать, что:

  • Благодаря Solar inCode сервис анализа кода стал ощутимо доступнее.
  • Появилась возможность проверять на НДВ и уязвимости мобильные приложения, прямо с web-хранилищ.

Хочется верить, что в совсем недалёком будущем многие корпоративные клиенты начнут массово использовать Solar inCode, а уровень безопасности мобильный приложений заметно повысится. Мы вступаем в новую эру, где уровень доверия к мобильным приложениям перестаёт быть условным.