Обзор Solar inCode — статический анализ исходного и бинарного кода на уязвимости и недекларированные возможности

Обзор Solar inCode 1.2


Обзор Solar inCode 1.2

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

Сертификат AM Test Lab

Номер сертификата: 159

Дата выдачи: 24.02.2016

Срок действия: 24.02.2021

Реестр сертифицированных продуктов »

 

 

1. Введение

2. Схема работы Solar inCode

3. Системные требования Solar inCode

4. Основные функциональные возможности Solar inCode

4.1. Статический анализ без исходных кодов

4.2. Статический анализ кода для руководителя

5. Особенности Solar inCode

6. Языки программирования, анализируемые Solar inCode

7. Работа с Solar inCode

8. Выводы

 

 

Введение

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

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

Чтобы оценить, насколько ПО надежно защищает данные, с которыми работает, широко применяются статический анализ программы и динамический анализ программного приложения. Статический анализ работает с текстом программы — это проверка методом «белого ящика». Динамический анализ — это тестирование системы в процессе работы, иначе говоря, проверка методом «черного ящика».

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

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

Solar inCode интерпретирует результаты не только для разработчиков, но и для специалистов информационной безопасности. Помимо этого, inCode позволяет целенаправленно работать с программным обеспечением дистанционного доступа.

Продукт ориентирован на следующие типы пользователей:

  • Разработчик
  • Специалист информационной безопасности
  • Руководитель

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

 

Схема работы Solar inCode

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

Solar InCode OnLine — это сервис по статическому анализу кода, который предоставляется удаленно. Данные для сканирования загружаются через веб-интерфейс, результаты сканирования доступны в виде подробного отчета.

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

Удобно загружать данные для анализа: в частности, мобильные приложения загружаются напрямую из Google Play и Apple Store, и все это делается одной кнопкой. Рабочие файлы онлайн-приложений загружаются в два клика функцией upload. Аналогично исходные коды можно загружать как локально, так и напрямую из репозитория разработки, а дефекты сразу отсылать в системы управления проектами.

Важно отметить, что Solar inCode — единственное в России инструментальное средство статического анализа кода, которое предлагает анализ мобильных и веб-приложений без исходных кодов.

Общая схема работы Solar inCode представлена на рисунке 1. При работе с исходными текстами программы анализ начинается со сборки приложения, далее программа трансформируется в особую внутреннюю структуру представления   программы — абстрактное синтаксическое дерево. После чего выполняется поиск уязвимостей: используется сначала набор методов поиска по шаблонам, а затем taint-анализ. Обнаруженные уязвимости помечаются в тексте программы, к каждой уязвимости выдаются рекомендации.

 

Рисунок 1. Общая схема работы SolarinCode

Общая схема работы SolarinCode

 

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

При анализе мобильных приложений для платформы iOS сначала выполняется расшифровка исполняемого кода, затем уже расшифрованное приложение подвергается параллельно двум процессам: статическому анализу и декомпиляции. Статический анализ выполняется на уровне LLVM, в который расшифрованный код приложения транслируется как во внутреннее представление. Декомпиляция выполняется из LLVM в высокоуровневое представление Objective-C-подобной программы.

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

 

Системные требования Solar inCode

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

Для стабильного функционирования рабочей станции необходима машина, где она будет установлена, отвечающая следующим системным требованиям: 2 ядра, 4Gb RAM, 100 GB диск.

Для стабильной работы самого ядра статического анализа необходимо оборудование следующей конфигурации: 2-4 Gb RAM, 0,5 Gb диск. На таком сервере можно уверенно сканировать приблизительно несколько миллионов строк кода на одном ядре.

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

Исходя из вышеописанных требований, были просчитаны требования для системы с нагрузкой 40 анализов в день по 10 на каждом ядре, которые выполняются параллельно. Для полугодовой эксплуатации системы без удаления истории сканирования в среднем будет достаточно:

  • 12 ядер,
  • 32 Gb RAM,
  • 4 Тb диск.

Минимальная конфигурация системы для выполнения самого анализа и управления им — например, простая рабочая станция для офицера информационной безопасности, который в среднем выполняет 1-2 анализа параллельно и сохраняет для работы историю примерно 50-150 сканирований:

  • 4 ядра,
  • 8 Gb RAM,
  • 500Gb диск.

В настоящее время инструментальное средство анализа кода Solar inCode работает как под управлением OC Windows (7/8/8.1), так и под управлением Mac OS и ОС Linux.

Сканирование мобильных приложений iOS и анализ приложений, реализованных на языке программирования Objective-C, требует Mac OS. Если клиенту неудобно разворачивать у себя Mac OS, обработка приложений может происходить на сервере Solar Security.

 

Основные функциональные возможности Solar inCode

  1. Анализ текстов программ по требованиям информационной безопасности с предоставлением результатов сканирования:

a) для разработчиков,
b) для специалистов информационной безопасности,
c) для руководителей.

  1. Анализ программных приложений по бинарным кодам, в том числе мобильных приложений для платформ Android и iOS с загрузкой непосредственно из Google Play и Apple Store.
  2. Отображение результатов сканирования всегда выполняется на текст программы.
  3. Гибкий интерфейс работы с системой, настраиваемый для работы разных специалистов.
  4. Составление отчетов настраивается для прочтения разными специалистами.

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

Статический анализ по текстам программ

Здесь можно выделить два направления использования Solar inCode:

  • для повышения качества разработки ПО,
  • для повышения качества приемки ПО.

Если статический анализатор кода Solar inCode используется для повышения качества разработки, то главный пользователь — это команда разработчиков.

В этом случае Solar inCode встраивается в процесс автоматической сборки, что позволяет выполнять сканирования на регулярной основе по сценариям — например, во время ночных сборок.

Интерфейс работы с приложением настраивается для разработчика, а интерпретация результатов сканирования выдается с учетом того, кто их будет читать. Разработчик имеет большой опыт создания программного кода, но не расположен тратить много времени на чтение длинных описаний возможных рисков, которые несет данная уязвимость для бизнеса. Поэтому при выдаче рекомендаций для разработчиков акцент сделан на описание происхождения уязвимости, прослеживание всего пути жизни уязвимости по исходному коду — от зарождения до точки эксплуатации. Также разработчику для ознакомления приводится сценарий возможного вектора атаки на приложение с использованием выявленной уязвимости. При желании можно настроить показ ссылок на описание выявленной уязвимости на официальных информационных ресурсах интернета.

Возможен сценарий работы, когда сканирование выполняет только лидер проекта. Это происходит одновременно с выполнением проверки кода (code review) своей команды. В этом случае лидер группы может делегировать устранение выявленных дефектов именно тем членам команды, которые разрабатывали соответствующий код. Так как Solar inCode поддерживает автоматическую интеграцию с системами управления проектами, то выгрузка дефектов выполняется автоматически.

В случае эксплуатации Solar InCode для повышения качества приемки ПО основным пользователем системы является офицер информационной безопасности. В отличие от разработчика, офицеру ИБ обычно не требуется хранить много историй сканирования одного приложения, потому что он выполняет сканирование готовой версии при приемке. Поэтому он может выполнять сканирование как на общем с разработчиками сервере сканирования, так и на локальной станции. Исходные коды так же, как и для разработчиков, можно автоматически забирать из репозитория.

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

Для некоторых дефектов Solar inCode выдает рекомендации по настройке защиты периметра эксплуатации.

Так как имеется интеграция с системами управления проектами, то выгрузка обнаруженных в процессе приемки дефектов может быть выполнена офицером ИБ автоматически.

Статический анализ без исходных кодов

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

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

Чтобы подтвердить наличие дефектов внешним разработчикам, а также для локализации уязвимостей — результат сканирования отображается на восстановленный текст программы.

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

Статический анализ кода для руководителя

Отличительной функциональной особенностью Solar inCode является генерация отчетов специально для руководителей.

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

 

Особенности Solar inCode

Автоматизированный анализ рабочих файлов

Solar inCode позволяет анализировать мобильные приложения для Android и iOS, а также приложения, написанные на языке Java и Scala, по рабочим файлам, то есть без исходного текста программы (файлы с расширением jar, war, apk, ipa и другие). Анализ целиком проходит в автоматическом режиме — от загрузки рабочего файла до отображения результатов анализа. Для мобильных приложений в inCode реализована возможность запуска анализа по ссылке на страницу приложения в магазине, через который приложение распространяется: Google Play Market или App Store.

Отображение найденных уязвимостей на исходный код

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

Учет специфики мобильных платформ

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

Анализ приложений на языке Scala

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

Поиск кода, подозрительного на НДВ

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

Рекомендации по настройке СЗИ

По результатам анализа веб-приложений inCode формирует рекомендации по настройке средств защиты информации (например, Web Application Firewall) для предотвращения возможности эксплуатации найденных уязвимостей. Рекомендации представляют собой подробные инструкции со скриншотами по настройке основных используемых СЗИ.

Fuzzy Logic Engine

Важнейшим параметром статического анализатора кода является количество ложных срабатываний. Для их минимизации в inCode используется математический аппарат нечеткой логики (fuzzy logic). Модуль Fuzzy Logic Engine позволяет отбрасывать уязвимости, которые были неверно определены в результате анализа.

 

Языки программирования, анализируемые Solar inCode

В настоящее время Solar inCode на высоком уровне поддерживает сканирование следующих языков программирования:

  • Java
  • Scala
  • PHP
  • Objective-C
  • Java for Android

В ближайшее время будут добавлены:

  • С#
  • PL/SQL
  • Java Script

В 2016 году планируется подключить поддержку следующих языков программирования:

  • Visual Basic
  • 1C
  • Swift
  • Perl
  • Python
  • С/С++

 

Работа с Solar inCode

Для начала работы с Solar inCode необходимо зарегистрировать нового пользователя в системе. Это может сделать администратор, учетная запись для которого создается автоматически при установке системы. На рисунке 2 показан интерфейс регистрации нового пользователя.

 

Рисунок 2. Создание нового пользователя в SolarinCode

Создание нового пользователя в SolarinCode

 

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

 

Рисунок 3. Авторизация в SolarinCode

Авторизация в SolarinCode

 

Для создания нового проекта надо выбрать, какой проект предполагается сканировать, а далее выполнить загрузку исходного кода для анализа. Загрузить приложение для сканирования можно:

  • с локального устройства;
  • из Google Play;
  • из Apple Store;
  • из репозитория.

На рисунке 4 показан интерфейс загрузки приложения для сканирования.

 

Рисунок 4. Создание нового проекта для сканирования в SolarinCode

Создание нового проекта для сканирования в SolarinCode

 

Сканирование может занимать некоторое время — оно требуется для построения внутреннего представления и выполнения самого анализа. Обычно пересканирование занимает меньше времени, чем первоначальная проверка, так как внутреннее представление не строится заново для каждого сканирования, а в целях оптимизации достраивается. На рисунке 5 представлен интерфейс отображения результатов сканирования в исходный код, а также показано окно с описанием выявленной уязвимости.

 

Рисунок 5. Отображение результатов сканирования в исходный код

Отображение результатов сканирования в исходный код

 

 

Лаконичный отчет о сканировании представлен на рисунке 6. Круговая диаграмма наглядно демонстрирует количество уязвимостей по типу, которые обнаружены в проекте. Также выдается оценка уровня безопасности проекта, которая строится по нескольким показателям, взятым с определенными весами. Показатели, которые используются для оценки безопасности: концентрация уязвимостей, оценка уровня критичности каждой уязвимости, трудоемкость устранения выявленных дефектов, количество вхождений каждой уязвимости и другие.

 

Рисунок 6. Результат сканирования исходного кода

Результат сканирования исходного кода

 

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

 

Рисунок 7. Настройка генерации отчетов в SolarinCode

Настройка генерации отчетов в SolarinCode

 

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

 

Рисунок 8. Рекомендации для настройки СЗИ

Рекомендации для настройки СЗИ

 

Выводы

Рынок программного обеспечения для статического анализа кода пополнился достойным российским продуктом — Solar inCode.

С одной стороны этот продукт является практичным инструментом для разработчиков, который удобно встраивается в жизненный цикл программного обеспечения, а с другой — представляет собой эффективное средство в помощь службе информационной безопасности.

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

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

Также надо отметить, что Solar InCode продается как ПО, которое можно развернуть у себя на площадке и полностью интегрировать в свой процесс разработки.  Для выполнения разового сканирования программного кода можно воспользоваться сервисом Solar InCode OnLine по модели SaaS. При этом все сервера, на которых развернут Solar InCode OnLine, расположены строго на территории России.

Продукт, разворачиваемый на площадке, лицензируется по количеству пользователей. Solar inCode Online — по количеству сканирований.

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

 

 

Реестр сертифицированных продуктов »

Записаться на демонстрацию

Нажимая "Запросить", вы соглашаетесь с Политикой конфиденциальности и обработки персональных данных нашей компании

Запросить пробную версию

Нажимая "Получить", вы соглашаетесь с Политикой конфиденциальности и обработки персональных данных нашей компании

Запросить цены

Нажимая "Отправить", вы соглашаетесь с Политикой конфиденциальности и обработки персональных данных нашей компании

Задать вопрос

Нажимая "Задать", вы соглашаетесь с Политикой конфиденциальности и обработки персональных данных нашей компании

Выбор редакции: 
AM LiveПодписывайтесь на канал "AM Live" в Telegram, чтобы первыми узнавать о главных событиях и предстоящих мероприятиях по информационной безопасности.
Лаборатория AM Test Lab готова провести независимую экспертизу и добровольную сертификацию любого продукта или сервиса по информационной безопасности и подготовить его профессиональный обзор. Для получения дополнительной информации необходимо оформить запрос.