я не знаю

я не знаю


Тестирование SSL/TLS шифров, неэффективная защита транспортного уровня.

Конфиденциальные данные должны быть защищены, когда передаются по сети. Необходимо придерживаться простого правила – если информация защищается при хранении, она должна защищаться и при отправке/передаче.

HTTP – незащищенный протокол, который обычно защищается с помощью SSL/TLS туннеля, получая при это HTTPS трафик. Использование этого протокола гарантирует не только конфиденциальность, но и аутентификацию

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

Передача конфиденциальной информации в незашифрованном виде.

Конфиденциальная информация не должна передаваться по незащищенным каналам. Часто можно встретить такую ситуацию, когда аутентификация производится через HTTP или сессионная cookie передается через HTTP.

Слабые SSL/TLS шифры, протоколы, ключи

Очень важно проверять конфигурацию используемого SSL протокола, чтобы усложнить взлом. Для этого необходимо исключить возможность выбора слабого *набора шифров*.  Набор шифров определяется протоколом шифрования (DES, AES, RC4), длиной ключа расшифрования (40,56 или 128 бит) и хэш алгоритмом (sha, md5) для проверки на целостность.

Подлинность SSL сертификата – клиент и сервер.

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

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

 

The Padding Oracle attack.

Padding oracle – функция приложения, которая расшифровывает информацию предоставленную клиентом и раскрывает состояние подлинности “padding’а” после расшифровки.

Блочный шифры шифруют данные в блоках определенного размера, в основном это 8 и 16 байт. Данные, где размер блока не соответствует размеру используемого шифром должна быть дополнена определенным образом, чтобы дешифратор мог раскрыть “padding”. Часто используемая “padding” схема заключается в заполнение оставшихся байтов значением длины “padding’a”.

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

 

 

 

Проверка информации бизнес логикой

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

Формирование запросов.

Формирование запросов – метод, который атакующие используют для обхода фронт-енд графического интерфейса приложения и отправки информации напрямую к бэк-енд процессам. Цель атакующего отправить HTTP POST/GET запрос через прокси с значениями данных, которые не поддерживаются бизнес логикой приложения.

Уязвимости связанные с возможностью формировать запросы уникальны для каждого отдельного приложения и фокусируются на нарушении работы бизнес-логики

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

Внутренняя проверка.

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

Приложение должно отслеживать изменения при попытке отправить данные и отклонять данные, которые отправляются пользователями, не прошедшими фронт-енд аутентификацию.

Process timing

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

Process timing – уникальные логические уязвимости в том смысле, что требует ручного и индивидуального для каждого приложения подхода.

Эта атака позволяет получить информацию о том, какие процессы происходят в данные момент.

Лимиты на использование определенных функций.

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

 


 

Защита от использования приложения не по назначению

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

Загрузка  неподдерживаемых типов файлов

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

Загрузка вредоносных файлов

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

XSS

Исполнение JavaScript кода

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

HTML инъекция

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

Клиентская подмена URL

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

CSS инъекция

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

Clickjacking

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

 

Websockets

Обычно HTTP протокол разрешает один запрос/ответ на каждое TCP соединение. Позволяет клиентам отправлять и получать данные несинхронно, что в свою очередь позволяет “улучшить” HTTP Handshake и затем все взаимодействие будет происходить в обход TCP каналов.

Web messaging

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

Локальное хранилище

Так же известное как оффлайн хранилище – это механизм, который позволяет хранить ключи привязанных к определенному домену и подчиняющихся правилу ограничению домена. В среднем браузер позволяет хранить 5 Мб для каждого домена, по сравнению с 4кб для cookie. Но основное отличие то, что ключи хранятся в клиенте и никогда не отправляются на сервер, это же улучшает быстродействие сети. Однако данные в хранилище могут быть прочитаны с помощью XSS, а так же могут быть загружены вредоносные данные в хранилище с помощью JavaScript.

Report Page