Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Защита Web-приложений. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
689 Кб
Скачать

того что приложение исполняется как на стороне сервера, так

 

и на стороне клиента. А скрипты на стороне клиента, как

 

правило,

скрывают

проблемы,

которых

нет

у

скомпилированных

приложений,

поскольку

код

 

интерпретируется во время выполнения, а не во время

 

компиляции.

 

 

 

 

 

 

 

Взаимодействие с приложением и данными, которыми

 

оно управляет, является процессом. Хотя пользователи могут

 

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

 

задачи следуют шаблонам, потому что пользователь должен

 

следовать

процедуре,

чтобы

получить

необходимый

 

результат. Документируя и понимая эти процессы, вы можете

 

проанализировать логику приложения с практической точки

 

зрения.

 

 

 

 

 

Смысл

анализа

заключается

в

поиске

дыр

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

 

 

 

 

 

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]