Как защитить мобильные приложения предприятия

Поиск уязвимостей с помощью IBM Security AppScan Standard

Взрывной рост экосистемы мобильных приложений делает безопасность приоритетной задачей. Новые подходы к созданию мобильных приложений требуют новых способов тестирования и обеспечения сохранности данных. В этой статье исследуются различные аспекты безопасности мобильных приложений. На практических примерах показано, как использовать IBM® Security AppScan® Standard с мобильными агентами пользователя, с эмуляторами и с реальными устройствами на платформах Android и iOS.

Даниэль Дж. Андерсон, консультант по вопросам безопасности, IBM USA

Фото Даниэля АндерсонаДаниэль Дж. Андерсон (Daniel J. Anderson) — ведущий консультант IBM Security Services по вопросам безопасности и конфиденциальности. Обладает более чем 20-летним опытом работы в области информационной безопасности, системного администрирования и разработки программного обеспечения. Сертифицированный специалист IBM по Rational AppScan Standard Edition и обладатель других отраслевых сертификатов по безопасности, включая CISSP, CISA и CIPP/US. Ветеран ВВС США и выпускник Университета штата Небраска в Омахе.



Карлос Ойос, руководитель, CIO Security Lab, IBM USA

Фото Карлоса ОйосаКарлос Ойос (Carlos Hoyos) возглавляет подразделение IBM CIO Security Lab, инкубатор решений по безопасности. Его основная сфера деятельности ― анализ безопасности, где он может поиграть со своими любимыми игрушками, такими как "большие данные", безопасность и способы сделать системы и пользователей умнее. Математик и самопровозглашенный "технарь", когда он не думает о безопасности, Карлос занимается своей семьей, познавая, каково быть папой, или изучает Нью-Йорк ― город, в котором живет.



Надер Насар, инженер-программист, IBM USA

Фото Надера НассараНадер М. Нассар (Nader M. Nassar) ― технический руководитель группы Innovation Security при IBM CIO Lab. Он также преподает в высшей школе информатики и информационных систем им. Зайденберга при Университете Манхэттен Пейс. Основные проекты, над которыми он работает, связаны с парадигмой уязвимости и обеспечения безопасности Web-приложений как службы. Надер - сертифицированный специалист IBM, член аттестационной комиссии специалистов IBM и сертифицированный ИТ-архитектор. Сделал ряд докладов на конференциях по Web-безопасности, проводимых под эгидой IEEE.



19.06.2013

Введение

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

Подробнее о семействе продуктов для мобильных и Web-приложений IBM Security AppScan.

Эта статья посвящена безопасности мобильных приложений и содержит практические рекомендации по организации динамического тестирования серверов мобильных приложений с помощью IBM Security AppScan Standard Edition. Она знакомит с процессом настройки AppScan для сканирования мобильных приложений с применением трех разных моделей:

  • сканирование мобильных Web-приложений путем создания мобильного агента пользователя;
  • применение эмулятора iOS и Android;
  • настройка фактического мобильного устройства на платформах Android и iOS.

Три разных конфигурации показаны на рисунке 1.

Рисунок 1. Методы сканирования и тестирования мобильных приложений
Три типа моделей

Типы мобильных приложений

Как сказал Омри Вайсман в недавнем сеансе Web-трансляции (см. раздел Ресурсы), мобильные приложения можно разделить на несколько категорий. От категории мобильного приложения зависят методы тестирования и соответствующие инструменты, которые можно использовать с наибольшей эффективностью.

"Родные" мобильные приложения

"Родные" мобильные приложения предназначены для работы на данном устройстве и написаны на соответствующем языке, таком как Java для Android-приложений или Objective C для приложений Apple iOS. Приложения этой категории лучше всего тестировать с помощью инструментов статического анализа. IBM Security AppScan Source Edition версии 8.6 и более поздних версий поддерживает статический анализ Android-приложений. Однако во многих родных приложениях используются стандартные коммуникационные интерфейсы на базе Web- и Web-сервисов, которые часто поддаются тестированию с помощью IBM Security AppScan Standard Edition.

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

Мобильные Web-приложения ― это именно то, что предполагает название. Вместо разработки родного приложения для каждой из мобильных платформ, многие организации добавляют поддержку мобильных устройств на уже имеющиеся у них Web-сайты. Другие разрабатывают специальные Web-сайты для поддержки мобильных приложений. Эта поддержка часто включает в себя упрощенную навигацию, пониженные требования к пропускной способности, оптимизацию для малого экрана, альтернативную технологию (например, HTML5 вместо Flash) и т.п. Таким образом, «приложение», установленное на мобильное устройство, часто ― не более чем ярлык или закладка. Приложения этой категории хорошо подходят как для статического тестирования с использованием AppScan Source Edition, так и для динамического тестирования с использованием AppScan Standard Edition.

Гибридные мобильные приложения

Гибридные мобильные приложения часто состоят из пользовательского Web-интерфейса WebView/UIWebView (HTML, CSS, JavaScript), окруженного слоем родного приложения. Приложения этой категории также хорошо подходят и для статического тестирования "родных" уровней с использованием AppScan Source Edition (для Android) и для динамического тестирования уровней Web-приложений с использованием AppScan Standard Edition.


Мобильные приложения и Web-сервисы

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

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

Связь с Web-сервером или сервером мобильных приложений часто осуществляется через стандартные протоколы и форматы данных, которые можно перехватить, такие как HTTP, HTTPS, SOAP, REST, JSON и XML. Сервер мобильных приложений можно протестировать с помощью IBM Security AppScan Standard Edition. В следующих разделах описаны методы настройки AppScan для ввода этих взаимодействий — важный шаг при тестировании серверов мобильных Web-приложений. Читатель познакомится с тремя методами (см. рисунок 1) тестирования серверов мобильных приложений с помощью AppScan: настройка агента пользователя, применение эмуляторов и использование реальных мобильных устройств.


Настройка агента пользователя

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

Чтобы задать строку "пользователь-агент", нужно выбрать Explore Options в окне Scan Configuration, как показано на рисунке 2. Затем протестируйте серверную часть мобильного приложения, как это обычно делается с помощью URL, ручных записей, взаимодействия с Web-сервисом и т.д.

Рисунок 2. Настройка агента пользователя
Окно выбора конфигурации

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


Настройка эмулятора

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

Настройка эмулятора Android

Эмулятор Android можно настроить, используя тот эмулятор, который входит в состав SDK Android. Когда приложение выполняется в эмуляторе, сетевой трафик может быть направлен через AppScan Proxy Port по адресу localhost (127.0.0.1) с номером порта, указанным в окне AppScan > Tools > Options, как показано на рисунке 3. По умолчанию этот порт выбирается динамически. При активном использовании этой функции лучше установить статическое значение, сняв флажок «Let AppScan choose the port automatically» (Позволить AppScan выбирать порт автоматически) и установив предпочтительный порт в поле AppScan proxy port.

Рисунок 3. Настройка прокси
Окно настройки

Настройте эмулятор Android на использование этого порта прокси по адресу localhost в командной строке эмулятора, используя следующую команду:

emulator -avd myAVD -http-proxy 127.0.0.1:{port from appscan config}

Если эмулятор запускается из Eclipse, то этот параметр можно настроить в окне Window > Preferences > Android >Launch > Default Emulator Options. Отметим, что некоторые приложения могут не поддерживать прокси-конфигурации в устройстве и эмуляторах. В таких случаях могут потребоваться другие подходы, включая поддержку со стороны разработчиков.

Настройка на уровне ОС Android

В некоторых версиях ОС Android прокси можно настраивать из эмулятора, вместо командной строки. В этом случае имейте в виду, что в ОС Android нужно использовать другой адрес прокси: 10.0.2.2. Это специальный адрес, который соответствует шлейфовому интерфейсу локального ПК (127.0.0.1). Это необходимо потому, что адрес 127.0.0.1 используется эмулируемой ОС Android в качестве ее собственного внутреннего порта шлейфового интерфейса.

В Android 4.1 настройка параметров прокси выполняется следующим образом.

  1. Войдите в меню Settings.
  2. Выберите More в разделе Wireless and networks.
  3. Выберите Mobile network settings.
  4. Выберите Access Point Names.
  5. Выберите сеть из списка.
  6. Измените поля Proxy и Port, как показано на рисунке 4.
  7. Имя пользователя должно быть пустым, и пароль не установлен.
Рисунок 4. Настройка на уровне ОС Android
Экран Network

Имитатор iOS

В имитаторе iOS нет параметров настройки выделенного прокси, но можно легко установить прокси для всего сетевого трафика с помощью компьютера Mac. Выберите Networking в окне Preferences > System preferences и укажите используемый интерфейс (кабель или wi-fi). В разделе Advanced вы увидите вкладку Proxies, как показано на рисунке 5. Установите IP и порт машины, на которой работает AppScan. Прокси AppScan привязывается только к локальному трафику, поэтому нужно внести изменения в конфигурацию, чтобы направить входящий трафик на локальный адаптер (см. раздел Использование мобильного устройства iOS).

Рисунок 5. Настройка прокси iOS
Экран настройки прокси iOS

Настройка мобильного устройства

Для работы через реальное мобильное устройство потребуется некоторая дополнительная настройка. Как уже говорилось, прокси AppScan связывается только со шлейфовым адресом localhost (127.0.0.1). Нужна возможность сделать этот порт прокси доступным через имеющийся интерфейс.

Существует много утилит, помогающих настраивать мобильные устройства. В примере для этой статьи используется rinetd (см. раздел Ресурсы), простая в применении, широкодоступная бесплатная утилита с открытым исходным кодом (GPL 2+). После загрузки утилиты rinetd в компьютер, где установлен AppScan, для ее установки достаточно распаковать zip-файл и поместить исполняемый файл в выбранную папку.

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

(IP to listen on) (port to listen on) (IP to forward to) (port to forward to)
192.168.1.114 28080 127.0.0.1 18080

Эта строка конфигурации предписывает rinetd прослушивать IP-адрес 192.168.1.114 через порт 28080 и перенаправлять весь трафик по адресу 127.0.0.1 через порт 18080 (в предположении, что AppScan настроен на этот порт). Эту строку можно поместить в текстовый файл rinetd.conf или какое-нибудь другое место, а затем запустить rinetd из командной строки с помощью следующей команды:

rinetd -c c:\PATH\TO\CONFIG\rinetd.conf

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

Использование мобильного устройства Android

После настройки rinetd нужно настроить Android-устройство на прокси с использованием IP-адреса и порта rinetd (в нашем примере ― 192.168.1.114 и 28080). Выберите Settings > Wi-Fi и измените текущие параметры сети, как показано на рисунке 6.

Рисунок 6. Настройка прокси для Android
Настройка прокси для Android

Работа с мобильным устройством iOS

В iOS-устройстве нужно аналогичным образом настроить HTTP-прокси в окне настройки Settings > Wi-Fi. Установите те же параметры Server и Port, что и в rinetd (в примере ― 192.168.1.114 и 28080).

Рисунок 7. Настройка iOS
Сервер и порт iOS

Запись

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

Запустите приложение, которое нужно протестировать, в эмуляторе или устройстве. По мере исследования функций приложения генерируемый трафик направляется через прокси AppScan для записи. По окончании ручного исследования с помощью эмулятора или устройства закройте браузер, и трафик будет загружен в конфигурацию. Когда все записи будут сделаны, можно начинать тестирование. Мобильные устройства можно перенастроить, а утилиту rinetd (если она используется) следует закрыть.


Тестирование

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

Может потребоваться некоторая дополнительная настройка для поддержки способов связи с вашим приложением. Часто для этого используются Web-сервисы, такие как SOAP или REST. AppScan содержит тесты для проверки методов SOAP. Его можно настроить и на проверку сервисов REST. Прочтите статьи Ори Сигала в блоге Application Security Insider на эту тему (см. раздел Ресурсы).


Шифрование транспортного уровня

Мобильные приложения могут работать в разнообразных сетевых средах с высокой степенью риска, так что критически важное значение часто имеет шифрование транспортного уровня (SSL/HTTPS). Правильно реализованное шифрование транспортного уровня может создавать трудности при тестировании с эмулятором, имитаторами или через реальные устройства. Прокси AppScan должен функционировать как «посредник», перехватывая зашифрованный трафик.

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


Заключение

Если организация еще не поддерживает мобильные приложения, то это, скорее всего, не надолго. В этой статье описаны некоторые практические методы динамического тестирования безопасности серверов мобильных приложений с помощью IBM Security AppScan Standard Edition.

Ресурсы

Научиться

Получить продукты и технологии

  • rinetd: загрузите утилиту rinetd(8), которая перенаправляет TCP-соединения из одного IP-адреса и порта в другой.

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Мобильные приложения
ArticleID=934640
ArticleTitle=Как защитить мобильные приложения предприятия
publish-date=06192013