|
|
|||||||||||||||||||||||||||||
|
Обеспечение безопасности настольных и мобильных Web 2.0-приложенийИсточник: IBM
Чаще всего атакам подвергаются Web-приложения. К этим атакам, направленным на самые распространенные уязвимости, относятся межсайтовый вызов скриптов (cross-site scripting), внедрение SQL (SQL injection), модификация параметров (parameter tampering), подделка cookie-файлов (cookie poisoning) и утечка информации. Традиционные системы защиты периметра, такие как сетевые экраны и системы обнаружения вторжений, не защищают от атак подобного рода, поскольку эти атаки используют уязвимость программ. В данной статье рассматриваются наиболее распространенные уязвимости и возможные контрмеры, а также объясняется значение автоматизированного сканирования системы безопасности в процессе разработки для создания безопасных приложений. Системы управления доступом, сетевые экраны, системы обнаружения вторжений и системы предотвращения вторжений являются неотъемлемыми составными частями системы безопасности приложений, обеспечивающими защиту периметра. Однако эти механизмы не полностью защищают Web-приложения от атак. Поскольку эти приложения используют Web-технологии, сами принципы взаимодействия Web-пользователей с ними позволяют напрямую атаковать приложения и обходить установленные системы защиты периметра. Злоумышленники знают об этом, и именно поэтому большинство атак - это прямые атаки на Web-приложения. Чтобы выровнять баланс, разработчики приложений должны изучать стратегии защиты против атак. Также они должны учитывать несколько факторов, являющихся причиной целого ряда атак:
Вышеперечисленные факторы диктуют правила, которые следует соблюдать каждому разработчику для написания более качественного кода.
Эта статья призвана повысить уровень информированности разработчиков. В ней рассказывается о наиболее распространенных уязвимостях Web-приложений, использующих технологию Web 2.0. Также приводится краткая информация о проблемах безопасности, свойственных мобильным устройствам. Распространенные Web-уязвимости Мобильные Web-приложения во многом подвержены тем же уязвимостям, которые присущи настольным Web-приложениям. Более подробная информация об уязвимостях и контрмерах приведена в проекте Top 10 Project на Web-сайте Open Web Application Security Project (OWASP), ссылку на который можно найти в разделе Ресурсы. В следующих подразделах рассматривается несколько основных уязвимостей, о которых должны знать разработчики. При этой распространенной атаке вредоносный код внедряется в аутентичный Web-сайт. Если в HTML-код отображаемой страницы можно вставить входные данные HTTP-запроса, сайт открыт для таких атак. Например, сервис принимает параметр image для извлечения из файловой системы изображения и его обработки:
Злоумышленник может исследовать это приложение, вставляя JavaScript-код в параметр image . Цель - обнаружить неправильную обработку ошибок. Если получится сгенерировать сообщение об ошибке, содержащее вредоносный скрипт, злоумышленник может использовать это в своих интересах:
Если сообщение об ошибке возвращает содержимое параметра image без фильтрации, выполняется код, заключенный в теги Эта концепция показана на Web-сайте Altoro Mutual, который демонстрирует возможности программы IBM Rational AppScan Standard Edition по сканированию приложений на наличие уязвимостей (см. раздел Ресурсы).
На рисунке 2 показано, что элемент поиска "pineapples" отображается в результатах поиска независимо от того, найден он или нет.
Это говорит о том, что приложение восприимчиво к атакам посредством выполнения межсайтовых скриптов. На рисунке 3 показан результат поиска выражения
Контрмеры Для предотвращения выполнения межсайтовых скриптов (XSS):
В случае с Altoro Mutual простым решением мог бы стать запрет на возврат элемента поиска. Более подробное обсуждение межсайтовых скриптов и защиты от них приведено в статье developerWorks® IBM Rational AppScan: подробно о межсайтовых скриптах, а также на странице Cross-site Scripting сайта OWASP (см. раздел Ресурсы). Эта атака тоже связана с использованием уязвимостей в запросах и направлена на вставку SQL-выражений в поля Web-приложения, предназначенные для ввода данных. Возможность вставлять запросы в поля ввода позволяет злоумышленнику обойти механизмы аутентификации Web-сайта и получить доступ к базе данных. Эта атака, наряду с выполнением межсайтовых скриптов, является одной из самых распространенных. Приведенный ниже пример демонстрирует плохо сконструированную процедуру входа, в которую внедряется SQL:
Переменные username и password никак не очищаются, и им присваиваются значения, введенные пользователем в приложении. Это позволяет злоумышленнику в качестве username ввести, например, следующее:
Пароль может быть любым. В данном случае предположим, что это * (звездочка). После подстановки этих данных в переменные username и password сформированный запрос будет выглядеть следующим образом:
Это выражение преобразовывает пароль в комментарий и вставляет условие 1=1, которое всегда истинно. Злоумышленник будет определен как разрешенный пользователь, хотя он не предоставил никаких данных, подтверждающих его полномочия. Эта атака демонстрируется Web-приложением Altoro Mutual (см. рисунок 4). Перейдите на страницу входа, введите в качестве имени пользователя
Аналогично атаке с применением межсайтовых скриптов, данная атака является следствием плохой (или отсутствующей) очистки и проверки вводимой информации. Контрмеры Для предотвращения этой атаки:
В случае Altoro Mutual возможным решением является фильтрация всех поступающих из полей Username и Password символов, отличных от цифр и букв. Подробная информация о внедрении SQL и возможных мерах противодействия приведена на странице SQL Injection сайта OWASP (см. раздел Ресурсы). Настойчивый злоумышленник может исследовать приложение, пытаясь обнаружить уязвимости. Это можно сделать разными способами:
Приложение Altoro Mutual допускает утечку существующих в системе имен пользователей. Например (см. рисунок 6), ввод неправильного имени и пароля пользователя приводит к появлению следующего сообщения об ошибке "Login Failed: We're sorry, but this user name was not found in our system. Please try again" (Во входе отказано: к сожалению данный пользователь не найден в системе. Попробуйте еще раз).
Далее злоумышленник вводит имя
Данную ситуацию можно исправить, выводя стандартное сообщение, не указывающее конкретно, что произошло, например: "Login failed: User name or password invalid. Please re-enter your credentials carefully" (Во входе отказано: имя пользователя или пароль введены неверно. Попробуйте еще раз). Контрмеры Утечку информации необходимо рассматривать в контексте приложения, и лучшей защитой является компетентность разработчика. Существуют различные меры по смягчению последствий утечки информации, которые следует рассмотреть разработчикам.
Этот список никоим образом не претендует на полноту. Необходимо учитывать специфику приложения и рабочей среды. Дополнительная информация об утечке информации приведена на странице Information Leakage сайта OWASP. Эта атака нацелена на управление параметрами, передаваемыми в приложение. Рассмотрим плохо написанное приложение, позволяющее клиенту устанавливать стоимость покупаемого товара. Такое приложение может отправлять следующий запрос:
Если бизнес-логика не выполняет двойную проверку на стороне сервера, злоумышленник может изменить стоимость, чтобы получить товар по меньшей цене. В данном случае разрешение установки цены со стороны клиента является явной ошибкой. Контрмеры
Дополнительная информация о модификации параметров и возможных контрмерах приведена на странице Web Parameter Tampering сайта OWASP (см. раздел Ресурсы). Cookie представляет собой информацию, хранящуюся в виде пар ключ/значение в текстовом файле или в памяти и отправляемую сервером в браузер. Содержимое cookie используется создавшим его Web-приложением. Подделка cookie - это изменение его содержимого после выполнения Web-приложения. Эта атака аналогична модификации параметров. Контрмеры
Подделка cookie обсуждается на странице OWASP, посвященной уязвимостям из-за ввода непроверенных данных (см. раздел Ресурсы). Интеграция системы безопасности в процесс разработки Система безопасности становится важной составляющей разработки Web-приложений, в том числе мобильных. Многие организации основное внимание уделяют реализации функциональности. Однако учтите, что устранение уязвимостей в системе безопасности стоит недешево. Поэтому разумно включить анализ и тестирование системы безопасности в состав процесса разработки. Защита наиболее эффективна, когда она полностью интегрирована в процесс разработки - от проектирования до развертывания.
Автоматизация тестирования системы безопасности в процессе разработки На практике автоматизация является ключевым аспектом создания повторяемого и целостного процесса тестирования системы безопасности на протяжении цикла разработки. Продукты IBM Rational AppScan предоставляют средства, которые могут сканировать код, помогая разработчикам обнаружить уязвимости. Автоматизированные средства сканирования можно повторно использовать после разработки для мониторинга развернутых приложений. Это позволит продолжить мониторинг развернутых Web-приложений и обнаружить уязвимости системы безопасности, появившиеся в результате изменений приложения или инфраструктуры. Семейство продуктов Rational AppScan обеспечивает автоматизацию этой деятельности на этапах разработки и развертывания. Этап разработки
Этап развертывания
Ссылки на дополнительную информацию по продуктам семейства Rational AppScan приведены в разделе Ресурсы; там же размещена ссылка на руководство IBM Red guide, в котором описывается автоматизация и интеграция обеспечения безопасности в процесс разработки при помощи продуктов семейства Rational AppScan. Уникальные проблемы доступа к Web-приложениям с мобильных устройств Многие риски для приложений и устройств являются продолжением уязвимостей настольных приложений. Рассмотрение современной практики идентификации и управления доступом выходит за рамки данной статьи, но обычно руководство Web-приложениями охватывает следующие области:
В документе IBM® Redbooks® (см. раздел Ресурсы) приведена дополнительная информация о том, как семейство продуктов IBM способствует интеграции системы безопасности. Дополнительную информацию о семействе продуктов IBM Tivoli можно найти на Web-странице IBM Web Application Security Solutions. Мобильные устройства представляют собой дополнительный источник проблем, поскольку по своей природе являются персонализированными и переносимыми. Мобильные устройства легко потерять. Смартфон, выскользнувший из кармана в такси или самолете - весьма распространенный сценарий. Кроме того, по причине своего маленького размера смартфоны являются объектами краж. Поэтому к Web-приложениям, доступным с мобильных устройств, должны применяться дополнительные меры безопасности. Такими дополнительными мерами корпоративного руководства при развертывании мобильных устройств могут быть:
У Web 2.0-приложений, предназначенных для настольных и мобильных устройств, есть много общих проблем безопасности и, следовательно, много одинаковых способов их решения. Разработчики должны знать о наиболее распространенных уязвимостях и бороться с ними на протяжении всего цикла разработки. Для обеспечения безопасности приложения также необходимо постоянное автоматическое сканирование на наличие уязвимостей в процессе разработки и развертывания. Мобильные устройства имеют свой собственный уникальный набор проблем, поскольку по своей природе являются персонализированными и переносимыми. Заранее, еще до развертывания мобильных решений, продумайте защиту данных при краже или потере устройства.
|
|