Уязвимость была выявлена при участии разработчика Vend Доминика Шейрлинка, который написал в своем блоге на Medium сказал о том, как это обнаружили его коллеги во время анализа одного из обращений, поступивших в службу поддержки.
Как это работает
Ссылка на волосы подробно объясняет, как работает HTTPoxy. Типичная атака с использованием этого набора уязвимостей выглядит следующим образом:- Злоумышленник создает специально созданный HTTP-запрос, содержащий заголовок прокси;
- CGI получает запрос и сохраняет значение заголовка в переменной среды HTTP_PROXY;
- Приложение CGI запускает собственный веб-клиент, используя переменную среды HTTP_PROXY в качестве настроек прокси;
- Клиент отправляет запрос, который вместо адреса назначения проксируется через сервер злоумышленника.
Питон:$client = new GuzzleHttp\Client(); $client->get(' http://api.internal/Эsecret=foo ')
from wsgiref.handlers import CGIHandler
def application(environ, start_response):
requests.get(" http://api.internal/Эsecret=foo ")
CGIHandler().
run(application)
Идти:
cgi.Serve(
http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
res, _ := http.Get(" http://api.internal/Эsecret=foo ")
// [.
]
Более подробные PoC можно найти на GitHub в специальном разделе HTTPoxy-репозитории .
Интересный момент: сама ошибка, которая используется в атаке HTTPoxy, была обнаружена пятнадцать лет назад. На Веб-сайт , посвященный HTTPoxy, содержит подробное описание истории уязвимости.
По его словам, в марте 2001 года была обнаружена и исправлена ошибка: некорректная обработка заголовков HTTP_PROXY в libwww-perl. В апреле того же года проблема была обнаружена в Curl (и также исправлена, правда, не для Windows).
В 2012 году команда проекта Ruby разработала HTTP_PROXY для Net::HTTP — в их системе не было уязвимостей.
В ноябре 2013 года о ней упомянули в рассылке NGINX — ошибку описал пользователь Джонатан Мэтьюс, хотя и не был до конца уверен в своей правоте.
В феврале 2015 года уязвимость также была упомянута в списке рассылки Apache httpd-dev. А уже в июле 2016 года сотрудник Vend Скотт Гири обнаружил ошибку в реальной системе.
Какие системы уязвимы?
Как выяснила команда безопасности Vend, уязвимость содержится во многих современных языках и библиотеках.
- CVE-2016-5386 Перейти
- CVE-2016-5387 Apache HTTPD
- CVE-2016-5388 Томкэт
- CVE-2016-1000104 mod_fcgi
- CVE-2016-1000107 HTTP-сервер Erlang
- CVE-2016-1000108 YAWS
- CVE-2016-1000109 HHVM FastCGI
- CVE-2016-1000110 Python CGIHandler
- CVE-2016-1000111 Искаженный Python
Как обнаружить уязвимость в вашем программном обеспечении
Специалисты RedHat развитый Небольшой скрипт, позволяющий определить, уязвима ли конкретная система к HTTPoxy. Для этого администратору сервера необходимо установить следующий CGI-скрипт и сделать его исполняемым: test.cgi:
#!/bin/sh
echo "Content-Type:text/plain"
echo ""
echo "HTTP_PROXY='$HTTP_PROXY'"
После этого следует вызвать CGI-скрипт с заголовком Proxy:
curl -H ‘Proxy: AFFECTED’ http://my-server-name/cgi-bin/test.cgi
Если вывод команды выглядит так, сервер не уязвим:
HTTP_PROXY="
Если вывод выглядит не так, например, отображается надпись ниже, то система уязвима:
HTTP_PROXY='AFFECTED'
Как защитить себя
Конечные пользователи веб-приложений в такой ситуации никак не могут повысить уровень своей безопасности, но у разработчиков этого ПО есть все возможности защитить его.Для этого им необходимо заблокировать заголовки запросов прокси — это можно сделать очень быстро.
Это не должно нанести вред функциональности приложения, поскольку такие заголовки нестандартны и широко не используются.
Например, вот как вы можете отключить заголовки прокси-сервера в Apache с помощью файла .
htaccess: <IfModule mod_headers.c>
RequestHeader unset Proxy
</IfModule>
Многие ИТ-компании и разработчики программного обеспечения уже заявили, что приняли меры для защиты своих пользователей от уязвимости HTTPoxy, в том числе Акамай , ОблакоВспышка , исправления выпущены и Красная Шапка .
Эксперты Positive Technologies разработали сигнатуру для Suricata IDS, которая позволяет обнаружить использование заголовка «Proxy» в HTTP-запросах и предотвратить возможные последствия.
Подпись и пример работы можно найти в официальном репозитории.
x.com/AttackDetection/status/756142402268639232 .
Теги: #httpoxy #прокси #уязвимости #информационная безопасность #веб-приложения #информационная безопасность #Тестирование веб-сервисов
-
Офисные Информаторы Без Каких-Либо Условий
19 Oct, 24 -
Как Случайность Может Помочь Математикам
19 Oct, 24 -
Необычные Мониторы От Nec И Alienware
19 Oct, 24 -
Разработка Менеджера Загрузок Для Go
19 Oct, 24 -
Кармагограф На Хабре Барахлит Что Ли?
19 Oct, 24 -
Выживание Стартапов. Откат Чата.ру
19 Oct, 24