Я только что получил зачет по аудиту безопасности от Deloitte от имени SFDC. В основном мы используем flex и общаться через AMF. Для этого мы используем FluorineFX (в отличие от LCDS и Blaze). Нам говорят, что, поскольку AMF-ответ не закодирован и кто-то может манипулировать параметрами AMF и вставить Javascript, это уязвимость XSS. Я изо всех сил пытаюсь понять, как ответ AMF назад, который мог бы повторить переданный в JS в сообщении об ошибке, может быть выполнен браузером или что-то еще в этом отношении. Я довольно опытен с XSS с HTML и JS, но, увидев, что его отметили AMF, было немного сюрпризом. Я общаюсь с командой FluorineFx, и они тоже недоумевают.Чувствительность к ошибкам AMF и кросс-сайтов
Я был бы удивлен, увидев, что библиотека AMF кодирует данные ответа, Фтор, безусловно, не делает этого. Похоже, что такие приложения безопасности, как PortSwigger и IBM AppScan, включают этот тип теста в сундук для инструментов. Вы столкнулись с этой уязвимостью с AMF и можете ли вы объяснить, как может возникнуть проблема XSS? Просто любопытно. Мне нужно либо аргументировать свой выход из этого, если существует аргумент, либо исправить дыру. Учитывая использование AMF с помощью Flex, я подумал, что у вас может быть некоторое понимание.
Дополнительная информация ...
Так Чуть подробнее об этом от фактического поставщика, PortSwigger. Я задал им вопрос, и нетто, нет, они признают, что этот тип атаки чрезвычайно сложный. Первоначально они классифицируют это как проблему безопасности High Severity, но я думаю, что их мелодия меняется сейчас. Я думал, что я опубликую содержание их ответов для всех вас, так как я думаю, что перспектива интересна ни к чему.
--- С PortSwigger по этому вопросу ---
Спасибо за ваше сообщение. Я думаю, что ответ заключается в том, что это потенциально уязвимость , но не является тривиальной для использования.
Вы правы, проблема не возникает, когда ответ потребляется в AMF клиента (если он не делает что-то немое), а если злоумышленник может сконструировать ситуацию, когда ответ потребляемая браузер. Большинство браузеров будут игнорировать заголовок HTTP Content-Type и будут смотреть на фактическое содержимое ответа , и если он будет выглядеть так, как HTML, будет радостно обрабатывать его как таковой. Исторически сложилось так, что существует множество атак, в которых люди внедряют контент HTML/JS в другие форматы ответов (XML, изображения, другие приложения ), и это выполняется как браузер.
Таким образом, проблема не столько в формате ответа, сколько в формате запроса , который требуется для его создания. Для злоумышленника нет тривиального для разработки кросс-доменного запроса, содержащего действительное сообщение AMF. Аналогичная вещь возникает с XML-запросами/ответами, которые содержат поведение X12-типа . Конечно, можно создать корректный ответ XML, который получает , обработанный браузером как HTML, но проблема заключается в том, как отправить необработанный XML в междоменный объект HTTP. Это невозможно сделать с использованием стандартной HTML-формы, , чтобы злоумышленнику было необходимо найти другую клиентскую технологию или прикосновение браузера до . Исторически подобные вещи были возможны в разное время, , пока они не были исправлены поставщиками браузеров/плагинов. Я ничего не знаю , что позволило бы на данный момент.
Короче говоря, это теоретическая атака, которая в зависимости от профиля риска можно игнорировать полностью или блокировать с помощью серверной части входной проверки или посредством кодирования выходного сигнала на сервере и декодирования снова на клиенте.
Я действительно считаю, что Burp должен указать формат запроса AMF как смягчающий эффект для этой проблемы и понизить воздействие до минимума - я исправлю это исправление.
Надеюсь, что это поможет.
Приветствие PortSwigger
--- подробнее об аудите ---
что делает portSwigger не обязательно связываться с двоичной полезной нагрузкой, что они делают беспорядок с фактическими АИФ параметров, которые размещены на обработчик для направления запроса. Например вот фрагмент из ревизии, и это показывает часть АИФ ответа на запрос ...
HTTP/1.1 200 OK
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
P3P: CP="CAO PSA OUR"
Content-Type: application/x-amf
Vary: Accept-Encoding
Expires: Tue, 06 Apr 2010 18:02:10 GMT
Date: Tue, 06 Apr 2010 18:02:10 GMT
Connection: keep-alive
Content-Length: 2595
......../7/onStatus.......
.SIflex.messaging.messages.ErrorMessage.faultCode.faultString
.faultDetail.rootCause.extendedData.correlationId.clientId.destination
.messageId.timestamp.timeToLive body.headers.#Server.Processing..kFailed
to locate the requested type
com.Analytics.ca.Services.XXX5c2ce<script>alert(1)</script>9ccff0bda62..
....I506E8A27-8CD0-598D-FF6E-D4490E3DA69F.Id95ab281-d83b-4beb-abff-c668b9fd42d5
[email protected]...
. DSId.Aeb5eeabcbc1d4d3284cbcc7924451711.../8/onRes
...[SNIP]...
обратите внимание на «предупреждение» сценарий там ... что они сделали был приложен некоторым скрипт, прилагаемой JS к одному из передаваемых параметров, содержащему метод для вызова именно «com.Analytics.ca.Services.XXX». Таким образом, JS вернулась в сообщение об ошибке, но есть много вещей, которые должны произойти для этого JS, чтобы добраться где-нибудь близко к выполнению. В лучшем случае кажется косвенной угрозой.
- последняя точки зрения безопасности аудитора -
Я обсуждал с большей командой, и мы все считаем, что это действует атака. Поскольку PortSwigger упоминает в своем первом абзаце, теоретически, поскольку вы установили тип контента в x-amf и надеетесь, что он не будет отображаться в браузере, большинство браузеров проигнорируют этот запрос и в любом случае будут его отображать. Я думаю, что поставщики в значительной степени полагаются на то, что задан тип контента; однако популярные браузеры, такие как IE и некоторые версии Safari, будут игнорировать это.
Атака может быть легко вызвана использованием CSRF или любой другой формой инициирования атаки XSS.
Благодарим за сообщение этой полной темы - это здорово знать для тех из нас, кто знаком с AMF. – roufamatic