Защита Web-приложений. Учебное пособие
.pdfтого что приложение исполняется как на стороне сервера, так |
|
||||||
и на стороне клиента. А скрипты на стороне клиента, как |
|
||||||
правило, |
скрывают |
проблемы, |
которых |
нет |
у |
||
скомпилированных |
приложений, |
поскольку |
код |
|
|||
интерпретируется во время выполнения, а не во время |
|
||||||
компиляции. |
|
|
|
|
|
|
|
Взаимодействие с приложением и данными, которыми |
|
||||||
оно управляет, является процессом. Хотя пользователи могут |
|
||||||
выполнять различные задачи случайным образом, конкретные |
|
||||||
задачи следуют шаблонам, потому что пользователь должен |
|
||||||
следовать |
процедуре, |
чтобы |
получить |
необходимый |
|
||
результат. Документируя и понимая эти процессы, вы можете |
|
||||
проанализировать логику приложения с практической точки |
|
||||
зрения. |
|
|
|
|
|
Смысл |
анализа |
заключается |
в |
поиске |
дыр |
безопасности в различных процессах. Например, приложение может позволить пользователю оставаться в системе, даже если оно не обнаруживает активность в течение длительного периода. Проблема в том, что пользователь может даже не присутствовать – кто-то другой может получить доступ к приложению, используя учетные данные пользователя.
|
|
|
|
|
1.2.2. Данные |
|
|
|
|
Однако риски при работе с данными могут принимать |
|
||||||||
другие |
формы. |
На |
первый взгляд, кажется, |
что |
нельзя |
|
|||
выполнить |
полный |
анализ |
данных |
с |
точки |
зрени |
|||
безопасности, |
но |
на |
самом |
деле есть |
ряд |
конкретных |
|||
вопросов, |
которые |
необходимо |
рассмотреть. |
Фактически |
|
||||
анализ данных является одной из областей , в которых |
|
||||||||
организации больше всего уязвимы, потому |
что |
акцент |
|
||||||
делается на том, |
как управлять данными и использовать их, а |
|
|||||||
не на том, как защищать их(разумно предположить, что необходимо решить все три проблемы). Анализируя данные, необходимо учесть следующие проблемы:
·кто может получить доступ к данным;
·какой формат используется для хранения данных;
11
·доступность данных;
·хранение данных;
·из каких форм приложения, какие данные доступны;
·как данные разбиваются на компоненты и результат объединения данных для использования приложения.
Например, |
некоторые |
приложения |
не |
практикуют |
|
|||||
сокрытие данных, что является существенной особенностью |
|
|||||||||
любого хорошего приложения. Под сокрытием данных |
|
|||||||||
подразумевается предоставление пользователю только того |
|
|||||||||
объема информации, который фактически необходим для |
|
|||||||||
выполнения поставленной задачи. |
|
|
|
|
|
|
||||
Приложения |
|
также |
|
неправильно |
|
форматируют |
||||
некоторые данные. Например, хранение паролей в виде текста |
|
|||||||||
почти наверняка вызовет проблемы, если кому-то удастся |
|
|||||||||
получить к ним доступ. Лучший способ - сохранить хэш- |
|
|||||||||
пароли с использованием безопасного алгоритма (который не |
|
|||||||||
был взломан). Хеш совсем не полезен для взломщика, потому |
|
|||||||||
что приложению нужен пароль, на котором основан хеш. |
|
|
||||||||
Отображение ненужных данных может тоже быть |
||||||||||
уязвимостью |
|
приложения. |
Конфиденциальные |
|
данные |
|
||||
должны появляться на экране, только если их использование |
|
|||||||||
отслеживается |
|
в |
реальном |
|
времени |
и |
происход |
|||
немедленная |
реакция, |
если |
пользователь |
делает |
что-то |
|
||||
некорректное. |
|
|
|
|
|
|
|
|
|
|
Хранение |
конфиденциальных |
данных |
|
в . облаке |
||||||
Использование |
|
облачного |
хранилища |
делает |
работу |
с |
||||
данными быстрой и удобной, но в то же время делает их |
|
|||||||||
уязвимыми. |
Храните |
конфиденциальные |
данные |
на |
||||||
локальных серверах, когда у вас есть прямой доступ ко всем |
|
|||||||||
функциям, используемым для обеспечения безопасности. |
|
|
||||||||
Многие элементы данных сегодня представляют собой |
|
|||||||||
совокупность других элементов данных. Хакер может многое |
|
|||||||||
узнать о вашей организации, обнаружив используемую форму |
|
|||||||||
агрегирования и разобрав элемент данных, чтобы обнаружить |
|
|||||||||
составные части. Важно рассмотреть, как данные собираются |
|
|||||||||
вместе, и |
добавить |
меры |
предосторожности, которые |
|
||||||
затрудняют поиск источника этих данных.
12
|
|
1.2.3. Интерфейс |
|
|
|
|
||
Разработчики склонны внедрять в свое программное |
|
|||||||
обеспечение |
ненужные |
функции. Приложение |
должно |
|
||||
соответствовать определенному набору целей или выполнять |
|
|||||||
определенный набор задач. Неизменно кто-то приходит к |
|
|||||||
выводу, что программное обеспечение может быть как-то |
|
|||||||
улучшено, |
если |
оно |
будет |
обладать |
определенными |
|||
функциями, которые не имеют ничего общего с основными |
|
|||||||
задачами. Термин «расширенный |
функционал» существует |
|
||||||
уже давно. Излишний функционал отражается на скорости |
|
|||||||
работы приложения и на времени его разработки, но также |
|
|||||||
оказывает значительное влияние на безопасность в виде |
|
|||||||
увеличения |
поверхности |
атаки. Каждый |
раз, когда |
вы |
|
|||
увеличиваете поверхность атаки, вы предоставляете хакеру |
|
|||||||
больше |
возможностей |
получить |
доступ |
к |
ваш |
|||
конфиденциальной информации. Избавление от ненужных функций или перенос их в совершенно другое приложение
уменьшит поверхность атаки, сделав |
ваше приложение |
намного более безопасным. |
|
Особое внимание при разработке |
приложения нужно |
уделить системе восстановления пароля. Иногда она дает потенциальному хакеру слишком много информации либо возможностей. Система должна убедиться, что пользователь действительно сделал запрос, прежде чем что-либо делать, а затем убедиться, что администратор отправляет информацию для входа в систему безопасным способом.
|
1.2.4. Ограничения |
|
Ограничение |
– это метод обеспечения |
соответствия |
действий определенным критериям до того, как |
действие |
|
будет разрешено. |
Например, запрет доступа к |
элементам |
данных, если пользователь не имеет права доступа к ,ним
является |
своего |
рода |
ограничением. Тем |
не |
менее, |
|
ограничения имеют другие формы, которые являются более |
||||||
важными. |
Наиболее |
важным |
ограничением |
является |
||
13
определение того, как любой пользователь может управлять данными. Большинству пользователей требуется только доступ к данным для их чтения, однако, приложения обычно предоставляют доступ для чтения/ записи, что открывает огромную брешь в безопасности. Данные также имеют ограничения для рассмотрения. При работе с данными вы должны точно определить, что делает данные уникальными, и убедиться, что приложение не нарушает никаких правил,
касающихся |
этой |
уникальности. Следует |
учитывать |
|||
следующие ограничения: |
|
|
|
|||
·убедитесь, что данные правильного типа; |
|
|
||||
·определить |
|
диапазон |
значений, которые |
могут |
||
принимать данные; |
|
|
|
|
|
|
·укажите максимальную и минимальную длину данных; |
||||||
·перечислите любые недопустимые значения данных. |
||||||
|
1.3. Разбор языковых проблем |
|
|
|||
Среда |
|
приложения |
определяется |
язык |
||
программирования, |
|
используемыми |
для |
создания |
||
приложения. Точно так же, как у каждого языка есть функциональность, которая заставляет его хорошо выполнять определенные задачи, также существуют и потенциальные проблемы безопасности. Для создания Web-приложения обычно используют три конкретных языка: HTML, CSS и JavaScript, но также могут использоваться другие языки и инструменты.
1.3.1. Определение ключевых проблем HTML
HTML5 стал чрезвычайно популярным, потому что он поддерживает невероятно широкий спектр платформ. Одно приложение может хорошо работать на рабочем столе пользователя, планшете и смартфоне без какого-либо специального кодирования со стороны разработчика. Часто
14
библиотеки, API и микросервисы предоставляют контент в |
|
||||||||
форме, которая автоматически соответствует |
хост-системе, |
|
|||||||
без какого-либо вмешательства со стороны разработчика. |
|
||||||||
Однако |
гибкость, |
которую |
обеспечивает HTML5, |
также |
|
||||
может стать проблемой. В следующем списке описаны |
|
||||||||
некоторые ключевые проблемы безопасности, с которыми вы |
|
||||||||
сталкиваетесь при работе с HTML5: |
|
|
|
|
|
||||
Внедрение кода |
|
|
|
|
|
|
|||
В HTML5 существует множество способов, с помощью |
|
||||||||
которых хакер может внедрить вредоносный код, включая |
|
||||||||
источники, |
которые |
вы |
обычно |
|
не |
счит |
|||
подозрительными, |
например, |
видео |
на YouTube |
или |
|
||||
потоковую музыку. |
|
|
|
|
|
|
|
||
Отслеживание пользователей |
|
|
|
|
|
||||
Поскольку в большинстве случаев ваше приложение |
|
||||||||
использует код из нескольких источников, вы можете |
|
||||||||
обнаружить, что библиотека, API или микросервис на самом |
|
||||||||
деле выполняет какой-то тип отслеживания пользователей, |
|
||||||||
который хакер может использовать, чтобы получить доступ к |
|
||||||||
данным. |
|
|
|
|
|
|
|
|
|
Валидация ввода |
|
|
|
|
|
|
|||
Валидация ввода формы вHTML5 — это то, к чему |
|
||||||||
следует относиться серьезно. Без надлежащей |
валидации, |
|
|||||||
если |
повезет, |
вы |
получите |
только |
много |
ненужных |
и |
||
несоответствующих вводимых данных. Однако существует |
|
||||||||
также вероятность того, что |
хакеры |
смогут |
заполучить |
|
|||||
личные данные пользователей, которые доверили вам свою |
|
||||||||
информацию. |
Поскольку валидация |
важна, имеет |
смысл |
|
|||||
использовать |
инструменты |
и библиотек |
для |
проверки |
и |
||||
очистки данных как для front-end, так и для back-end.
15
|
|
1.3.2. Определение ключевых проблем CSS |
|
|
|
|
||||||||||
|
Приложения |
в |
значительной |
степени |
полагаются |
на |
|
|||||||||
CSS3 для создания форматирования сайтов без жесткого |
|
|||||||||||||||
кодирования |
|
информации |
|
для |
|
каждого |
устройства. |
|||||||||
Библиотеки существующего кодаCSS3 позволяют легко |
|
|||||||||||||||
создавать |
профессионально |
|
выглядящие |
приложения, |
||||||||||||
которые |
пользователь |
может |
изменить |
в |
соответствии |
с |
||||||||||
любыми |
потребностями. В |
следующем |
списке описаны |
|
||||||||||||
некоторые ключевые проблемы безопасности, с которыми вы |
|
|
||||||||||||||
сталкиваетесь при работе с CSS3. |
|
|
|
|
|
|
|
|
|
|||||||
|
Отслеживание пользователей на страницах |
|
|
|
|
|
||||||||||
|
С новым обновлением CSS стал мощным инструментом, |
|
|
|||||||||||||
позволяющим |
|
отслеживать |
пользователей |
на |
веб-сайтах, |
|
||||||||||
красть данные (включая пароли). |
Работа «Кривые |
таблицы |
|
|
||||||||||||
стилей» Жана |
Бемера стала первым |
проектом |
по этой |
теме. |
|
|||||||||||
В работе представлено аналитическое решение, фиксирующее |
|
|
||||||||||||||
взаимодействие |
пользователя |
с |
элементамиWeb-страницы, |
|
|
|||||||||||
используя |
только CSS-код. |
Бемер |
показал, |
как |
без |
|
||||||||||
использования JavaScript можно определить временные рамки |
|
|
||||||||||||||
наведения курсора мышки на элементы |
|
страницы, нажатия |
|
|
||||||||||||
на |
ссылки, ввода |
текста |
в |
поля |
|
и установки |
|
флажка |
||||||||
в чекбоксах. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
Использование CSS для кражи CRSF токенов |
|
|
|
|
|||||||||||
|
Независимо |
|
от |
работы |
|
Бемера |
|
специал |
||||||||
по |
безопасности |
|
Дилан |
|
Айри |
|
опубликовал |
|
друго |
|||||||
исследование (названное XSSJacking), в котором показал, как |
|
|
||||||||||||||
злоумышленник может применитьCSS для кражи токенов |
|
|||||||||||||||
CSRF. |
Метод |
Айри |
работает |
только Webна-сайтах |
и |
|
||||||||||
приложениях, |
которые |
хранят |
токеныCSRF |
в |
атрибутах |
|
||||||||||
HTML. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Техника Айри основана на инъекции кодаCSS в веб- |
|
|
|||||||||||||
страницу и использовании селекторов атрибутовCSS. Сама |
|
|
||||||||||||||
атака |
занимает |
|
около |
|
десяти |
|
секунд |
и |
не |
требу |
||||||
непрерывных запросов к удаленному серверу, которые могут |
|
|
||||||||||||||
предупредить |
|
|
пользователя |
|
об |
|
опасности. Решение |
|
|
|||||||
подразумевает идентификацию токена в фоновом режиме . |
|
|
|
|||||||||||||
16
|
CSS Exfil |
|
|
|
|
|
|
|
|
|
|
|
|
|
Техника |
|
Айри |
|
оказалась |
вершиной |
. |
айсберга |
|||||
Специалист |
по |
безопасности |
Майк |
Галтьери |
показал, как |
|
|||||||
тот |
же |
|
способ |
|
можно |
|
применить |
|
|
для |
|||
конфиденциальных |
данных, |
введенных |
пользователями |
|
|||||||||
в поля. Галтьери назвал эту технику CSS Exfil. Оба метода — |
|
||||||||||||
Айри и Галтьери— используют |
селектор |
атрибутовCSS, |
|
||||||||||
который позволяет разработчикам запрашиватьHTML-теги |
|
||||||||||||
страницы для отдельных |
атрибутов |
и сопоставлять образцы |
|||||||||||
по их значениям. |
|
|
|
|
|
|
|
|
|
|
|
||
|
Например, следующий CSS-код |
сканирует |
страницу |
||||||||||
на |
предмет |
наличия |
тегов<a>, где |
атрибутhref содержит |
|
||||||||
строку facebook, и окрашивает ее в синий цвет. |
|
|
|
|
|||||||||
a[href*="facebook"] { |
|
|
|
|
|
|
|
|
|
|
|||
} |
color: blue; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Такие запросы могут быть усложнены. Например, |
|
|||||||||||
злоумышленник |
может |
задавать |
атрибуты, начинающиеся |
|
|||||||||
и заканчивающиеся |
определенной |
строкой. Эти |
запросы |
|
|||||||||
могут быть сшиты для запуска атаки методом«грубой силы» |
|
||||||||||||
и попытки |
определить |
первую |
букву |
атрибута, |
затем |
|
|||||||
вторую, третью и так далее. |
|
|
|
|
|
|
|
|
|
||||
У Айри и Галтьери два разных метода для проведения атак. Айри полагается на угадывание окончательной строки по одной букве за раз. Галтьери предлагает более короткий путь восстановления строки, угадывая ее в нескольких частях и восстанавливая в конце.
Оба |
алгоритма |
эффективны. Метод |
Айри |
более |
|
шумный, |
но его можно |
легко |
автоматизировать. Метод |
||
Галтьери |
быстрее (также |
может |
быть |
автоматизирован), |
|
но в некоторых случаях требует вмешательства человека для
создания финальной строки. |
|
|
|||
Но CSS |
Exfil не |
является |
безошибочным |
методом. |
|
Он может украсть |
атрибутыHTML, найденные на странице, |
||||
только во |
время |
загрузки. Галтьери утверждает, |
что это |
||
не является |
серьезной |
проблемой |
и показывает |
различные |
|
17
обходные |
пути, |
которые |
могут |
использовать |
злоумышленники. |
|
|
|
|
Для |
защиты |
от атакCSS |
Exfil Web-разработчики |
|
и авторы приложений могут реализовать меры под названием
Content Security Policy (CSP), которые предотвратят загрузку кода из внешних источников.
1.4. Работа с облачным хранилищем
Облачное хранилище - неизбежное зло, в доступе к котором нуждаются все сотрудники, через любое удобное устройство. Пользователям доступны все виды облачных решений для хранения: Dropbox, Яндекс.Диск, Google Drive, iCloud, OneDrive и т.п.). Они имеют ряд преимуществ:
·возможность доступа к данным с любого компьютера, имеющего выход в Интернет;
·возможность организации совместной работы с данными;
·высокая вероятность сохранения данных даже в случае аппаратных сбоев;
·клиент платит только за то место в хранилище, которое фактически использует, но не за аренду сервера, все ресурсы которого он может и не использовать;
·клиенту нет необходимости заниматься приобретением,
поддержкой |
и |
обслуживанием |
|
собственно |
|
инфраструктуры по хранению данных, что, в конечном |
|||||
счёте, уменьшает общие издержки производства; |
|
||||
· все |
процедуры |
по |
резервированию |
и |
сохранению |
целостности |
данных |
производятся |
|
провайдером |
|
«облачного» центра, который не вовлекает |
в этот |
||||
процесс клиента.
Конечно, все эти поставщики скажут вам, что данные вашего приложения в безопасности, поскольку они постоянно повышают уровень безопасности.
Впользовательских соглашениях облачных сервисов
практически |
никогда |
не |
содержатся |
обязательства |
по |
|||
сохранению |
конфиденциальности |
и |
целостности |
ваших |
|
|||
18
данных. Организациям следует помнить, что как операторам им необходимо обеспечивать весь комплекс требований по обработке и защите персональных данных, что не всегда реализуемо в облаке. В части доступности облачного сервиса на первый взгляд все хорошо. Большинство поставщиков облачных услуг гарантируют высокую доступность сервиса. Но стоит задуматься, где кончается зона ответственности поставщика облачных услуг и где находится пользователь со своими устройствами доступа в Интернет.
Существуют десятки причин, по которым пользователю |
|||||||||
могут быть недоступны его данные, хранящиеся в облаке, при |
|||||||||
том, что сам по себе облачный сервис будет полностью |
|||||||||
работоспособным. Поэтому реальная доступность облачного |
|||||||||
сервиса значительно ниже заявленных в пользовательском |
|||||||||
соглашении |
цифр. |
Несмотря |
на |
то |
что |
формальных |
|||
обязательств по обеспечению данных свойств информации у |
|||||||||
провайдера нет, все известные мировыеIT-компании при |
|||||||||
организации облачных сервисов обеспечивают достаточно |
|||||||||
высокий |
|
уровень |
защиты |
данных |
как |
||||
несанкционированного доступа к ним, так и от уничтожения |
|||||||||
по каким-то техническим причинам. То есть прямой атакой на |
|||||||||
ресурсы |
провайдера |
облачных |
услуг |
злоумышленники |
вряд |
||||
ли |
смогут |
достигнуть |
. целиХотя |
об |
обратном |
||||
свидетельствуют |
|
периодически |
появляющиеся |
в |
СМИ |
||||
громкие заявления об утечке пользовательских данных у |
|||||||||
крупных IT-компаний и интернет-сервисов. |
|
|
|
||||||
Основная уязвимость интернет-сервисов заключается в |
|||||||||
использовании |
практически |
исключительно |
парольной |
||||||
аутентификации и применении не вполне надежных способов |
|||||||||
восстановления забытых аутентификационных данных— |
|||||||||
логинов |
и |
паролей(прежде всего — через |
электронную |
||||||
почту). Если пользователь не доверяет поставщику облачного |
|||||||||
сервиса или хочет обеспечить дополнительную защиту информации в облаке, то он может применить шифрование данных в облаке. Такой способ защиты возможен, если
пользователь не планирует |
обрабатывать информацию в |
облаке (например, редактировать |
фото или текст), а только |
19
хранить и передавать данные в исходном виде. При этом надо |
|
||||||||||
учесть |
сложности |
с |
распределением |
и |
|
управлением |
|||||
криптографическими |
ключами (особенно |
для |
больших |
|
|||||||
организаций) и потери в мобильности(для доступа к данным |
|
||||||||||
у пользователя на устройстве должен быть актуальный |
|||||||||||
криптографический ключ, хранящийся безопасным способом, |
|
||||||||||
а с этим могут возникнуть технические или технологические |
|
||||||||||
проблемы). |
Желательно |
|
минимизировать |
|
использование |
|
|||||
облачных |
|
сервисов |
|
для |
хранения |
|
конфиденциальной |
||||
информации, включая собственные персональные данные, |
|
||||||||||
либо размещать их в зашифрованном |
виде |
со |
стойким |
||||||||
методом криптографической защиты. Часто пользователи |
|
||||||||||
размещают на временное хранение персональные документы |
|
||||||||||
в облачные хранилища, которые индексируются поисковыми |
|
||||||||||
службами, что делает их доступными для злоумышленников. |
|
||||||||||
Существует |
|
множество |
|
бесплатных |
|
с |
|||||
криптографической |
защиты информации— |
PGP, |
RAR- |
|
|||||||
архивы с паролем и шифрованием имен файлов. Последнее — |
|
||||||||||
наиболее приемлемый вариант, миллионы пользователей |
|
||||||||||
используют архивы по всему миру, так что выделить вашу |
|
||||||||||
информацию среди всех остальных, да еще и с паролем, будет |
|
||||||||||
достаточно сложно. |
|
|
|
|
|
|
|
|
|
||
Можно предложить несколько вариантов работы с |
|
||||||||||
облачным |
хранилищем |
как |
часть |
|
вашей |
стратеги |
|||||
безопасности для приложения. |
|
|
|
|
|
|
|||||
Заблокировать доступ |
|
|
|
|
|
|
|
||||
Фактически |
можно |
заблокировать |
|
весь |
доступ |
к |
|||||
облачному хранилищу с помощью брандмауэра, политики |
|
||||||||||
безопасности или функции приложения. Однако возможность |
|
||||||||||
блокировать доступ везде, где пользователь может захотеть |
|
||||||||||
получить |
|
доступ |
к облачному хранилищу, чрезвычайно |
|
|||||||
сложна, и пользователи достаточно находчивы. Кроме того, |
|
||||||||||
блокировка доступа может оказать негативное влияние на |
|
||||||||||
удовлетворение потребностей бизнеса. Например, партнеры |
|
||||||||||
могут |
выбрать |
использование |
облачного |
хранилища |
в |
||||||
качестве метода обмена большими файлами. Стратегия |
|
||||||||||
блокировки также влечет |
за собой недовольство со стороны |
|
|||||||||
20
