HTTP-сад
HTTP Garden — это набор HTTP-серверов и прокси-серверов, настроенных для компоновки, а также скриптов для взаимодействия с ними таким образом, чтобы значительно упростить поиск уязвимостей. Несколько интересных демонстраций уязвимостей, которые можно найти в HTTP Garden, можно найти в нашем докладе на ShmooCon 2024.
Благодарности
Мы хотели бы поблагодарить наших друзей из Galois, Trail of Bits, Narf Industries и Дартмутского колледжа за то, что они сделали этот проект возможным.
Этот материал основан на работе, поддержанной Агентством перспективных исследовательских проектов Министерства обороны (DARPA) по контракту номер HR0011-19-C-0076.
Начиная
Зависимости
- HTTP Garden работает на Linux x86_64 и не тестировался на других платформах.
- Целевые серверы создаются и работают в контейнерах Docker, поэтому вам понадобится Docker.
- Вам также понадобятся следующие пакеты Python, которые вы можете получить из PyPI (т. е. с помощью
pip ) или из менеджера пакетов вашей системы:
-
docker- Для взаимодействия с Docker
-
pyyaml -
tqdm- Для индикаторов выполнения
Если вы устанавливаете пакеты Python с помощью системного менеджера пакетов, имейте в виду, что имена пакетов могут иметь префикс py3- , python3- или python- , в зависимости от системы.
- Я также настоятельно рекомендую установить rlwrap из вашего менеджера пакетов, потому что это делает Garden repl намного интереснее.
Здание
- Создайте базовое изображение:
docker build ./images/http-garden-soil -t http-garden-soil
Этот образ содержит несколько основных утилит, а также разветвленную версию AFL++, которая упрощает сбор данных о процессах, не убивая их.
- Создайте несколько HTTP-серверов и прокси:
docker compose build gunicorn hyper nginx haproxy nginx_proxy
Конечно, в HTTP-саде гораздо больше целей, чем те, которые мы только что создали. Просто создание их всех занимает много времени. Даже создание этих немногих займет несколько минут!
Бег
- Запустите несколько серверов и прокси:
docker compose up gunicorn hyper nginx haproxy nginx_proxy
rlwrap python3 tools/repl.py
- Отфильтруйте базовый запрос GET через HAProxy, затем через обратный прокси-сервер Nginx, затем отправьте результат на исходные серверы Gunicorn, Hyper и Nginx и отобразите, совпадают ли их интерпретации:
garden> payload 'GET / HTTP/1.1rnHost: whateverrnrn' # Set the payload
garden> transduce haproxy nginx_proxy # Run the payload through the reverse proxies
[1]: 'GET / HTTP/1.1rnHost: whateverrnrn'
haproxy
[2]: 'GET / HTTP/1.1rnhost: whateverrnrn'
nginx_proxy
[3]: 'GET / HTTP/1.1rnHost: echornConnection: closernrn'
garden> servers gunicorn hyper nginx # Select the servers
garden> grid # Show their interpretations
g
u
n
i h n
c y g
o p i
r e n
n r x
+-----
gunicorn|✓ ✓ ✓
hyper | ✓ ✓
nginx | ✓
Кажется, они все согласны. Давайте попробуем более интересную полезную нагрузку:
garden> payload 'POST / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn0nrn'
garden> grid
g
u
n
i h n
c y g
o p i
r e n
n r x
+-----
gunicorn|✓ ✓ X
hyper | ✓ X
nginx | ✓
Есть несоответствие! Это связано с тем, что Nginx поддерживает n как строку, заканчивающуюся строками фрагментов, а Hyper и Gunicorn — нет. Технически Nginx нарушает RFC 9112, но влияние, скорее всего, минимально.
Макет каталога
images
Каталог images содержит подкаталог для каждого HTTP-сервера и преобразователя в Garden. Каждая цель получает свой собственный образ Docker. Все программы по возможности собираются из исходного кода. Чтобы мы могли легко создавать несколько версий каждой цели, все цели парметризуются с помощью URL-адреса репозитория ( APP_REPO ), имени ветки ( APP_BRANCH ) и хеша фиксации ( APP_VERSION ).
tools
Каталог tools содержит скрипты, используемые для взаимодействия с серверами. Внутри него вы найдете
-
diagnose_anomalies.py : сценарий для перечисления неопасных особенностей парсинга HTTP в тестируемых системах, которые следует игнорировать во время фаззинга. -
repl.py : основной пользовательский интерфейс HTTP Garden. -
update.py : скрипт, который обновляет хеши коммитов в docker-compose.yml , - ... и еще несколько сценариев, не ориентированных на пользователя.
Цели
HTTP-серверы
| Имя | Запускается локально? | Страховое покрытие получено? |
|---|
| айоhttp | да | да |
| apache_httpd | да | да |
| apache_tomcat | да | нет |
| сигара | да | да |
| cpp_httplib | да | нет |
| dart_stdlib | да | нет |
| eclipse_grizzly | да | нет |
| eclipse_jetty | да | нет |
| быстрыйhttp | да | нет |
| go_stdlib | да | нет |
| пушка | да | да |
| вода | да | да |
| haproxy_fcgi | да | нет |
| гипер | да | нет |
| гиперкорн | да | да |
| ктотор | да | нет |
| libevent | да | нет |
| libmicrohttpd | да | нет |
| библиотека | да | нет |
| лайттпд | да | да |
| мангуста | да | да |
| Нетти | да | нет |
| nginx | да | да |
| node_stdlib | да | нет |
| openliteскорость | да | нет |
| openwrt_uhttpd | да | да |
| php_stdlib | да | нет |
| phusion_passenger | да | нет |
| протокол_http1 | да | нет |
| пума | да | нет |
| служебный разговор | да | нет |
| торнадо | да | нет |
| искривленный | да | нет |
| единорог | да | нет |
| Ювирог | да | да |
| официантка | да | да |
| Вебрик | да | нет |
| иис | нет | нет |
| openbsd_httpd | нет | нет |
HTTP-преобразователи
| Имя | Запускается локально? |
|---|
| apache_httpd_proxy | да |
| apache_traffic_server | да |
| go_stdlib_proxy | да |
| h2o_proxy | да |
| гапрокси | да |
| haproxy_invalid | да |
| Lighttpd_proxy | да |
| нгhttpx | да |
| nginx_proxy | да |
| openlitespeed_proxy | да |
| пингора | да |
| фунт | да |
| кальмар | да |
| лак | да |
| акамай | нет |
| awselb_classic | нет |
| awselb_application | нет |
| aws_cloudfront | нет |
| вспышка облака | нет |
| быстро | нет |
| google_classic | нет |
| google_global | нет |
| iis_proxy | нет |
| openbsd_relayd | нет |
Ошибки
Это ошибки, которые мы обнаружили с помощью HTTP Garden. Если вы найдете что-то свое, отправьте PR, чтобы добавить их в этот список! Каждая ошибка описывается следующими полями:
- Вариант использования: тип атаки, которую злоумышленник может выполнить с помощью этой ошибки.
- Требования: необходимые параметры конфигурации или другие серверы для использования этой ошибки.
- Риск: Нет|Низкий|Средний|Высокий, после чего следует краткое объяснение.
- Нет: ошибка, скорее всего, не может быть использована.
- Низкий: ошибку можно использовать, но она требует действительно странной конфигурации или будет зависеть от поведения прокси-сервера, которого я никогда не видел.
- Средний: ошибка, вероятно, пригодна для использования, но оказывает лишь умеренное влияние или требует маловероятной комбинации сервера и преобразователя.
- Высокий: ошибка может быть использована в обычных конфигурациях и комбинациях сервер/преобразователь.
- Полезная нагрузка: пример полезной нагрузки, вызывающей ошибку.
- Затронутые программы: список серверов, на которых присутствует эта ошибка, а также сроки отчетов и исправлений. Так как некоторые ошибки реализации являются общими, и это не позволяет им загромождать список :)
Ошибки сервера
Это ошибки в том, как серверы принимают и интерпретируют запросы.
- Конструктор Python
int используется для анализа размеров фрагментов, поэтому 0x , _ , + и - интерпретируются неправильно.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который интерпретирует размеры фрагментов как самый длинный действительный префикс, но пересылает их как есть.
- Риск: Средний. См. ошибку преобразователя 7.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn0_2ernrnGET / HTTP/1.1rnHost: arnContent-Length: 5rnrn0rnrn - Затронутые программы:
- АИОНТП:
- 1 августа 2023 г.: сообщается в рекомендациях по безопасности GH.
- 7 октября 2023 г.: исправлено в версии 3.8.6.
- Ганикорн:
- 1 августа 2023 г.: сообщается в выпуске GH.
- 25 декабря 2023 г.: исправлено в коммите.
- Торнадо:
- 2 августа 2023 г.: сообщается в рекомендациях по безопасности GH.
- 10 августа 2023 г.: исправлено в коммите.
-
x00 , r или n неправильно разрешены в значениях заголовка.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который пересылает эти байты в значениях заголовка или принимает и пересылает
n в качестве признака конца строки заголовка. - Риск: высокий. См. ошибки преобразователя 10, 12 и 16.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnHeader: vnx00raluernrn - Затронутые программы:
- АИОНТП:
- 1 августа 2023 г.: сообщается в рекомендациях по безопасности GH.
- 7 октября 2023 г.: исправлено в версии 3.8.6.
- Ганикорн:
- 31 января 2024 г.: сообщается в выпуске GH.
- 31 января 2024 г.: осталось не исправленным.
- Торнадо:
- 11 августа 2023 г.: сообщается в выпуске GH.
- 31 января 2024 г.: осталось не исправленным.
- Пробелы неправильно удаляются с концов имен заголовков.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который считает пробелы перед
: частью имени заголовка. - Риск: Низкий. Мне неизвестны какие-либо уязвимые датчики, но Джеймс Кеттл говорит, что по крайней мере один существует.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: whateverrnContent-Length : 34rnrnGET / HTTP/1.1rnHost: whateverrnrn - Затронутые программы:
- АИОНТП:
- 2 августа 2023 г.: сообщается в рекомендациях по безопасности GH.
- 7 октября 2023 г.: исправлено в версии 3.8.6.
- Черут:
- 4 февраля 2024 г.: сообщается в выпуске GH.
- 4 февраля 2024 г.: осталось не исправленным.
- OpenLiteСкорость:
- 31 июля 2023 г.: Сообщено по электронной почте.
- 10 августа 2023 г.: исправлено в OLS 1.7.18.
- 14 августа 2023 г.: присвоен CVE-2023-40518.
- Пробелы неправильно удаляются из начала первого имени заголовка.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который считает пробелы в начале имени первого заголовка частью имени заголовка.
- Риск: Низкий. Мне не известны какие-либо уязвимые датчики.
- Полезная нагрузка:
GET / HTTP/1.1rntContent-Length: 1rnrnX - Затронутые программы:
- АИОНТП:
- 20 августа 2023 г.: сообщается в консультативном комментарии по безопасности GH.
- 7 октября 2023 г.: исправлено в версии 3.8.6.
- Версии HTTP интерпретируются как самый длинный допустимый префикс.
- Вариант использования: ???
- Требования: нет данных
- Риск: Нет
- Полезная нагрузка:
GET /test HTTP/1.32rnrn - Затронутые программы:
- АИОНТП:
- 14 октября 2023 г.: сообщается в выпуске GH и по связям с общественностью.
- 15 октября 2023 г.: исправлено в коммите.
- Методы HTTP интерпретируются как их самый длинный допустимый префикс.
- Вариант использования: обход ACL
- Требования: Преобразователь, который пересылает недопустимые имена методов как есть.
- Риск: Средний. Объяснение опущено, поскольку о соответствующих ошибках еще не сообщалось.
- Полезная нагрузка:
G=":<>(e),[T];?" /get HTTP/1.1rnrn - Затронутые программы:
- АИОНТП:
- 14 октября 2023 г.: сообщается в выпуске GH и по связям с общественностью.
- 15 октября 2023 г.: исправлено в коммите.
- URI вообще не проверяются.
- Вариант использования: ???
- Требования: нет данных
- Риск: Нет
- Полезная нагрузка:
GET ! HTTP/1.1rnrn - Затронутые программы:
- АИОНТП:
- 16 октября 2023 г.: сообщается в выпуске GH.
- 16 октября 2023 г.: Исправлено в PR.
- Некоторые байты, отличные от ASCII, неправильно разрешены в именах заголовков.
- Вариант использования: ???
- Требования: нет данных
- Риск: Нет
- Полезная нагрузка:
GET / HTTP/1.1rnxefoo: barrnrn - Затронутые программы:
- АИОНТП:
- 17 октября 2023 г.: сообщается через PR.
- 18 октября 2023 г.: исправлено путем объединения вышеуказанного PR.
- Дафна:
- 4 февраля 2024 г.: сообщается в выпуске GH.
- 10 февраля 2024 г.: исправлено в коммите.
- Мангуста:
- 13 октября 2023 г.: сообщается в выпуске GH.
- 5 декабря 2023 г.: исправлено в коммите.
-
n допускается использовать в качестве разделителя пробелов в строке запроса.
- Вариант использования: контрабанда запросов
- Требования: преобразователь, который пересылает запросы HTTP/0.9 с пустым
n как есть и повторно использует базовое соединение. - Риск: Низкий. Мне не известны какие-либо уязвимые датчики.
- Полезная нагрузка:
GET /nHTTP/1.1rnrn - Затронутые программы:
- АИОНТП:
- 17 октября 2023 г.: сообщается через PR.
- 18 октября 2023 г.: исправлено слиянием.
- Конструктор Python
int используется для анализа значений Content-Length , поэтому _ , + и - интерпретируются неправильно.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который интерпретирует значения
Content-Length как самый длинный допустимый префикс, но пересылает их как есть. - Риск: Низкий. Мне неизвестны какие-либо уязвимые датчики, но Мэтт Гренфельдт говорит, что по крайней мере один существует.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnContent-Length: +1_0rnrn0123456789 - Затронутые программы:
- АИОНТП:
- 1 августа 2023 г.: сообщается в рекомендациях по безопасности GH.
- 7 октября 2023 г.: исправлено в версии 3.8.6.
- http.сервер CPython:
- 2 апреля 2023 г.: сообщается в выпуске GH.
- 2 апреля 2023 г.: исправлено в коммите.
- Торнадо:
- 2 августа 2023 г.: сообщается в рекомендациях по безопасности GH.
- 10 августа 2023 г.: исправлено в коммите.
- Веркцойг:
- 1 июня 2023 г.: сообщается в выпуске GH.
- 7 июня 2023 г.: исправлено в коммите 88c5c78.
- Запросы, содержащие несколько
Transfer-Encoding: chunked принимаются и обрабатываются как не имеющие тела сообщения.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который пересылает запросы, содержащие несколько заголовков
Transfer-Encoding . - Риск: высокий. См. ошибку преобразователя 28.
- Полезная нагрузка:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnTransfer-Encoding: chunkedrnrn1rnZrn0rnrn - Затронутые программы:
- Торнадо:
- 7 октября 2023 г.: сообщается в рекомендациях по безопасности GH.
- 6 июня 2024 г.: исправлено в выпуске рекомендаций по безопасности.
-
xa0 и x85 удаляются из начала и конца значений заголовка.
- Вариант использования: контрабанда запросов
- Требования: преобразователь, который пересылает неизвестные значения
Transfer-Encoding и обрабатывает их отдельно от chunked значений. - Риск: Средний. См. ошибку преобразователя 18.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: whateverrnTransfer-Encoding: xa0chunkedxa0rnrn0rnrn - Затронутые программы:
- Торнадо:
- 4 февраля 2024 г.: сообщается в консультативном комментарии по безопасности GH.
- 4 февраля 2024 г.: осталось не исправленным.
-
r рассматривается как признак конца строки в строках поля заголовка.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который пересылает
r в именах заголовков. - Риск: высокий. См. ошибку преобразователя 10.
- Полезная нагрузка:
GET / HTTP/1.1rnVisible: :/rSmuggled: :)rnrn - Затронутые программы:
- http.сервер CPython:
- 31 января 2024 г.: сообщается в выпуске GH.
- 31 января 2024 г.: осталось не исправленным.
- Мангуста:
- 7 июля 2023 г.: сообщается в выпуске GH.
- 9 июля 2023 г.: исправлено в коммите 6957c37.
- Недопустимые символы ASCII неправильно разрешены в именах заголовков.
- Вариант использования: ???
- Требования: нет данных
- Риск: Нет
- Полезная нагрузка:
GET / HTTP/1.1rnx00x01x02x03x04x05x06x07x08tx0bx0cx0ex0fx10x11x12x13x14x15x16x17x18x19x1ax1bx1cx1dx1ex1f "(),/;<=>?@[/]{}: whateverrnrn - Затронутые программы:
- Дафна:
- 4 февраля 2024 г.: сообщается в выпуске GH.
- 10 февраля 2024 г.: исправлено в коммите.
- Мангуста:
- 13 октября 2023 г.: сообщается в выпуске GH.
- 5 декабря 2023 г.: исправлено в коммите.
- Торнадо:
- 11 августа 2023 г.: сообщается в выпуске GH.
- 31 января 2024 г.: осталось не исправленным. OpenLiteСкорость:
- 31 июля 2023 г.: Сообщено по электронной почте.
- 10 августа 2023 г.: исправлено в OLS 1.7.18.
- Версии HTTP не проверяются.
- Вариант использования: ???
- Требования: нет данных
- Риск: Нет
- Полезная нагрузка:
GET / HTTP/rr1.1rnrn - Затронутые программы:
- ФастHTTP:
- 4 февраля 2024 г.: сообщается в выпуске GH.
- 11 февраля 2024 г.: исправлено в коммите.
- Пустые значения
Content-Length обрабатываются так, как если бы они были равны 0 .
- Вариант использования: контрабанда запросов
- Требования: преобразователь, который интерпретирует пустые значения
Content-Length как любые, отличные от 0. - Риск: Низкий. Я не знаю ни одного такого преобразователя.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: whateverrnContent-Length: rnrn - Затронутые программы:
- Зайдите в сеть/http:
- 31 июля 2023 г.: сообщается в выпуске GH.
- 11 августа 2023 г.: исправлено в коммите.
- Лайтпд:
- 1 августа 2023 г.: сообщается через систему отслеживания ошибок.
- 3 августа 2023 г.: исправлено в коммите.
- OpenLiteСкорость:
- 31 июля 2023 г.: Сообщено по электронной почте.
- 10 августа 2023 г.: исправлено в OLS 1.7.18.
- Пустые размеры блоков обрабатываются так, как если бы они были равны
0 .
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который принимает и пересылает дополнительные
rn между фрагментами. - Риск: Низкий. Я не знаю ни одного такого преобразователя.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnrnrnrn - Затронутые программы:
- Зайдите в сеть/http:
- 2 декабря 2023 г.: сообщается в выпуске GH.
- 4 января 2024 г.: исправлено в коммите.
- Гипер:
- 1 декабря 2023 г.: сообщение отправлено по электронной почте.
- 18 декабря 2023 г.: исправлено в коммите.
- Мангуста:
- 3 января 2024 г.: сообщается в выпуске GH.
- 3 января 2024 г.: Исправлено в PR.
- Пустые имена заголовков принимаются ошибочно.
- Вариант использования: контрабанда запросов
- Требования: преобразователь, который принимает и пересылает
rn:rn и рассматривает его как конец блока заголовка. - Риск: Низкий. Я не знаю ни одного такого преобразователя.
- Полезная нагрузка:
GET / HTTP/1.1rn: ignoredrnHost: whateverrnrn - Затронутые программы:
- Зайдите в сеть/http:
- 24 января 2024 г.: сообщается в выпуске GH.
- 30 января 2024 г.: исправлено в коммите.
- Ганикорн:
- 4 декабря 2023 г.: сообщается в выпуске GH.
- 25 декабря 2023 г.: исправлено в коммите.
- Node.js:
- 13 октября 2023 г.: сообщается в выпуске GH.
- 17 октября 2023 г.: исправлено в коммите.
- Торнадо:
- 13 октября 2023 г.: Об этом сообщается в комментарии к выпуску GH.
- 15 октября 2023 г.: остается неисправленной.
- Все последовательности пробелов, отличные от
rn удаляются с начала значений заголовка (после : ).
- Вариант использования: контрабанда запросов
- Требования: преобразователь, который принимает и пересылает окончания пустых строк
n в строках поля. - Риск: Средний. См. ошибку преобразователя 16.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnUseless:nnGET / HTTP/1.1rnrn - Затронутые программы:
- Ганикорн:
- 2 июня 2023 г.: Сообщено по электронной почте.
- 31 января 2024 г.: сообщается в выпуске GH.
- 31 января 2024 г.: осталось не исправленным.
- Байты
xa0 и x85 удаляются с концов имен заголовков перед : .
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который принимает и пересылает
xa0 или x85 в именах заголовков. - Риск: Средний. См. ошибку преобразователя 6.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnContent-Lengthx85: 10rnrn0123456789 - Затронутые программы:
- Ганикорн:
- 27 июня 2023 г.: Сообщено по электронной почте.
- 25 декабря 2023 г.: исправлено в коммите.
-
,chunked рассматривается как кодировка, отличная от chunked .
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который пересылает значение
Transfer-Encoding ,chunked как есть и интерпретирует его как эквивалент chunked значения. - Риск: высокий. См. ошибку преобразователя 9.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: ,chunkedrnContent-Length: 5rnrn0rnrn - Затронутые программы:
- Ганикорн:
- 6 ноября 2023 г.: сообщается в выпуске GH.
- 25 декабря 2023 г.: исправлено в коммите.
- Мангуста:
- 6 ноября 2023 г.: сообщается в выпуске GH.
- 1 декабря 2023 г.: исправлено в коммите.
- Пассажир:
- 6 ноября 2023 г.: сообщение отправлено по электронной почте.
- 22 января 2024 г.: исправлено в выпуске.
- Недопустимые размеры фрагментов интерпретируются как их самый длинный действительный префикс.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который принимает и пересылает фрагменты с недопустимым префиксом (например, с префиксом
0x ). - Риск: высокий. См. ошибки преобразователя 2 и 19.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn0_2ernrnGET / HTTP/1.1rnHost: arnContent-Length: 5rnrn0rnrn - Затронутые программы:
- Н2О:
- 1 августа 2023 г.: Сообщено по электронной почте.
- 12 декабря 2023 г.: Исправлено в PR.
- OpenLiteСкорость:
- 31 июля 2023 г.: Сообщено по электронной почте.
- 10 августа 2023 г.: исправлено в OLS 1.7.18.
- ВЕБрик:
- 9 ноября 2023 г.: сообщается в выпуске GH.
- 3 февраля 2024 г.: Исправлено в PR.
- Запросы с несколькими конфликтующими заголовками
Content-Length принимаются, приоритет отдается первому.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который принимает и пересылает запросы с двумя заголовками
Content-Length , отдавая приоритет последнему. - Риск: Средний. См. ошибку преобразователя 22.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnContent-Length: 1rnContent-Length: 0rnrnZ - Затронутые программы:
- Н2О:
- 30 ноября 2023 г.: Сообщено по электронной почте.
- 10 июля 2024 г.: сообщается в выпуске GH.
- 10 июля 2024 г.: остается неисправленной.
- OpenLiteСкорость:
- 26 июня 2024 г.: сообщается в выпуске GH.
- 10 июля 2024 г.: остается неисправленной.
- Переполнение 8-битного целого числа в номерах версий HTTP.
- Вариант использования: ???
- Требования: нет данных
- Риск: Нет
- Полезная нагрузка:
GET / HTTP/4294967295.255rnrn - Затронутые программы:
- Либевент:
- 17 января 2024 г.: подан PR.
- 18 января 2024 г.: исправлено слияние.
- Размеры фрагментов анализируются с помощью
strtoll(,,16) , поэтому префиксы 0x , + и - принимаются ошибочно.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который интерпретирует размеры фрагментов как самый длинный допустимый префикс, но пересылает их как есть.
- Риск: Средний. См. ошибку преобразователя 2.
- Полезная нагрузка:
GET / HTTP/1.1rnTransfer-Encoding: chunkedrnrn - Затронутые программы:
- Либевент:
- 18 января 2024 г.: подан PR.
- 18 февраля 2024 г.: исправлено слияние.
- OpenLiteСкорость:
- 2 августа 2023 г.: Сообщено по электронной почте.
- 11 августа 2023 г.: исправлено в OLS 1.7.18.
- Отрицательные заголовки
Content-Length могут использоваться для включения сервера в бесконечный цикл занятости.
- Вариант использования: DoS
- Требования: Нет.
- Риск: высокий. Эту ошибку легко использовать.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnContent-Length: -48rnrn - Затронутые программы:
- Мангуста:
- 27 апреля 2023 г.: Сообщено по электронной почте.
- 16–18 мая 2023 г.: исправлено в коммитах 4663090, 926959a и 2669991.
- Присвоен CVE-2023-34188.
- Блок заголовка HTTP усекается при получении заголовка без имени или значения.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который пересылает пустые имена заголовков.
- Риск: Средний. См. бонус-бонусную ошибку 2.
- Полезная нагрузка:
GET / HTTP/1.1rn:rnI: am chopped offrnrn - Затронутые программы:
- Мангуста:
- 26 июня 2023 г.: сообщается в выпуске GH.
- 29 июня 2023 г.: исправлено в коммите 415bbf2.
- Имена заголовков могут быть отделены от значений только пробелом; нет
: требуется.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который пересылает строки заголовка, которые не содержат
: . - Риск: Средний. См. ошибку преобразователя 14.
- Полезная нагрузка:
GET / HTTP/1.1rnContent-Length 10rnrn0123456789 - Затронутые программы:
- Мангуста:
- 7 июля 2023 г.: сообщается в выпуске GH.
- 7 июля 2023 г.: исправлено в коммите 5dff282.
- Недопустимые заголовки
Content-Length интерпретируются как эквиваленты их самого длинного допустимого префикса.
- Вариант использования: контрабанда запросов
- Требования: преобразователь, который пересылает значения
Content-Length с недопустимыми префиксами (например, 0x или + ). - Риск: высокий. См. ошибку преобразователя 1.
- Полезная нагрузка:
GET / HTTP/1.1rnContent-Length: 1ZrnrnZ - Затронутые программы:
- Мангуста:
- 31 июля 2023 г.: сообщается в выпуске GH.
- 17 августа 2023 г.: исправлено в коммите.
- OpenLiteСкорость:
- 31 июля 2023 г.: Сообщено по электронной почте.
- 10 августа 2023 г.: исправлено в OLS 1.7.18.
- Блок заголовка может быть неправильно завершен на
rnrX , где X может быть любым байтом.
- Вариант использования: ???
- Требования: Преобразователь, который пересылает имена заголовков, начинающиеся с
r , или допускает r в качестве пробела в начале строки. - Риск: Низкий. Я не знаю такого преобразователя.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnrZGET /evil: HTTP/1.1rnHost: arnrn - Затронутые программы:
- Node.js:
- 7 июля 2023 г.: сообщается в отчете HackerOne.
- 31 июля 2023 г.: исправлено в коммите llhttp.
- 16 сентября 2023 г.: исправлено в фиксации узла.
- Строки фрагментов неправильно завершаются на
rX , где X может быть любым байтом.
- Вариант использования: запрос на контрабанду.
- Требования: преобразователь, который пересылает
r внутри необязательных пробелов в фрагменте-ext. - Риск: высокий. См. ошибку преобразователя 3.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn5rr;ABCDrn34rnErn0rnrnGET / HTTP/1.1rnHost: arnContent-Length: 5rnrn0rnrn - Затронутые программы:
- Node.js:
- 9 июля 2023 г.: сообщается в комментарии HackerOne.
- 31 июля 2023 г.: исправлено в коммите llhttp.
- 16 сентября 2023 г.: исправлено в фиксации узла.
- Заголовки
Content-Length интерпретируются с помощью strtoll(,,0) , поэтому ведущие 0 , + , - и 0x интерпретируются неправильно.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который пересылает начальные
0 с в значениях Content-Length , что разрешено стандартом. - Риск: высокий. Это можно использовать против преобразователей, соответствующих стандартам.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: whateverrnContent-Length: 010rnrn01234567 - Затронутые программы:
- OpenLiteСкорость:
- 31 июля 2023 г.: Сообщено по электронной почте.
- 10 августа 2023 г.: исправлено в OLS 1.7.18.
- Запросы с несколькими конфликтующими заголовками
Content-Length принимаются, приоритет отдается последнему.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который принимает и пересылает запросы с двумя заголовками
Content-Length , отдавая приоритет первому. - Риск: Низкий. Мне не известен ни один такой преобразователь, но его существование кажется весьма вероятным.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: arnContent-Length: 0rnContent-Length: 1rnrnZ - Затронутые программы:
- ФастHTTP:
- 4 февраля 2024 г.: сообщение отправлено по электронной почте.
- 11 февраля 2024 г.: исправлено в коммите.
-
r разрешен в значениях заголовков.
- Вариант использования: ???
- Требования: Преобразователь, который неправильно интерпретирует и пересылает
r в значениях заголовка. - Риск: Низкий. Я не знаю ни одного такого преобразователя.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: whateverrnHeader: varluernrn - Затронутые программы:
- OpenLiteСкорость:
- 31 июля 2023 г.: Сообщено по электронной почте.
- 10 августа 2023 г.: исправлено в OLS 1.7.18.
- Значения заголовка обрезаются до
x00 .
- Вариант использования: обход ACL
- Требования: преобразователь, который пересылает
x00 в значениях заголовка. - Риск: Средний. См. ошибку преобразователя 12.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: whateverrnTest: testx00THESE BYTES GET DROPPEDrnConnection: closernrn - Затронутые программы:
- OpenLiteСкорость:
- 3 ноября 2023 г.: Сообщено по электронной почте.
- 10 июля 2024 г.: исправлено не позднее этой даты.
- Либевент:
- 29 января 2024 г.: сообщается в рекомендациях по безопасности GH.
- 31 января 2024 г.: осталось не исправленным.
- Возврат каретки пересылается внутри необязательного пробела после точки с запятой в расширении фрагмента.
- Вариант использования: контрабанда запросов
- Требования: Сервер, который рассматривает
rr как эквивалент rn в этом расположении. - Риск: высокий. См. ошибку сервера 31.
- Полезная нагрузка:
POST /abc HTTP/1.1rnTransfer-Encoding: chunkedrnHost: h2o.http-garden.usrnrn41;a=brrXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXrn0rnrnGET /bad_path/pwned HTTP/1.1rnHost: arnContent-Length: 412rnrn0rnrnGET /def HTTP/1.1rnHost: h2o.http-garden.usrnrn - Затронутые программы:
- Акамай CDN:
- 3 декабря 2023 г.: Сообщено по электронной почте.
- 10 июля 2024 г.: исправлено не позднее этой даты.
- Имена заголовков могут продолжаться на протяжении всей строки.
- Вариант использования: запрос на контрабанду.
- Требования: Преобразователь, который пересылает строки заголовка, которые не содержат
: . - Риск: Средний. См. ошибку преобразователя 14.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: whateverrnTransfer-rnEncoding: chunkedrnContent-Length: 5rnrn0rnrn - Затронутые программы:
- Пассажир:
- 6 ноября 2023 г.: сообщение отправлено по электронной почте.
- 22 января 2024 г.: исправлено в выпуске.
- Пустой
Content-Length в запросах интерпретируется как «чтение до истечения времени ожидания».
- Вариант использования: контрабанда запросов
- Требования: преобразователь, который принимает и пересылает пустые значения заголовка
Content-Length и обрабатывает их как эквивалентные 0. - Риск: Средний. См. ошибки преобразователя 5 и 11.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: localhostrnContent-Length: rnrnGET / HTTP/1.1rnHost: localhostrnrn - Затронутые программы:
- Пума:
- 16 июня 2023 г.: сообщение отправлено по электронной почте.
- 17 августа 2023 г.: исправлено в Puma 6.3.1 и 5.6.7. См. рекомендацию.
- Частичные тела сообщений завершаются на
rnXX , где XX могут быть любыми двумя байтами.
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который сохраняет поля концевика и не добавляет пробелы между
: и значением в полях трейлера. (ATS — один из таких серверов) - Риск: высокий. Требования по использованию этой ошибки не требуют от преобразователя нарушения стандартов.
- Полезная нагрузка:
GET / HTTP/1.1rnTransfer-Encoding: chunkedrnrn0rnX:POST / HTTP/1.1rnrn - Затронутые программы:
- Пума:
- 31 июля 2023 г.: Сообщено по электронной почте.
- 17 августа 2023 г.: исправлено в Puma 6.3.1 и 5.6.7. См. рекомендацию.
- Присвоен CVE-2023-40175.
- Методы и версии HTTP не проверяются.
- Вариант использования: ???
- Требования: нет данных
- Риск: Нет.
- Полезная нагрузка:
x00 / HTTP/............0596.7407.rnrn - Затронутые программы:
- Официантка:
- 17 октября 2023 г.: подан PR.
- 4 февраля 2024 г.: исправлено в объединении PR.
-
xa0 и x85 удаляются из начала и конца значений заголовка, за исключением заголовка Transfer-Encoding .
- Вариант использования: обход значения заголовка ACL
- Требования: Преобразователь, который принимает и пересылает
xa0 и x85 на место. - Риск: Средний. Стандарт позволяет преобразователям пересылать obs-текст в значениях заголовков.
- Полезная нагрузка:
GET /login HTTP/1.1rnHost: arnUser: x85adminxa0rnrn - Затронутые программы:
- Официантка:
- 4 февраля 2024 г.: сообщается в выпуске GH.
- 4 февраля 2024 г.: исправлено в коммите.
- Пустые значения
Content-Length интерпретируются как эквивалентные 0 и имеют приоритет над любыми последующими значениями Content-Length .
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который пересылает пустые значения
Content-Length перед непустыми и интерпретирует непустые. - Риск: высокий. См. ошибку преобразователя 11.
- Полезная нагрузка:
GET / HTTP/1.1rnContent-Length: rnContent-Length: 43rnrnPOST /evil HTTP/1.1rnContent-Length: 18rnrnGET / HTTP/1.1rnrn - Затронутые программы:
- ВЕБрик:
- 14 августа 2023 г.: сообщается в выпуске GH.
- 15 августа 2023 г.: Исправлено в PR.
-
x00 удаляется с концов значений заголовка.
- Вариант использования: обход ACL
- Требования: преобразователь, который пересылает
x00 в значениях заголовка. - Риск: Средний. См. ошибку преобразователя 12.
- Полезная нагрузка:
GET / HTTP/1.1rnEvil: evilx00rnrn - Затронутые программы:
- ВЕБрик:
- 30 ноября 2023 г.: сообщается в выпуске GH.
- 3 февраля 2024 г.: Исправлено в PR.
- Все неизвестные кодировки передачи рассматриваются как эквивалентные
chunked .
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, который пересылает кодировки передачи, отличные от
identity и chunked . Это разрешено стандартом. - Риск: высокий. Это позволяет осуществлять контрабанду запросов на некоторые преобразователи, соответствующие стандартам.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: bleghrnrn1rnZrn0rnrn - Затронутые программы:
- ФастHTTP:
- 4 февраля 2024 г.: сообщение отправлено по электронной почте.
- 11 февраля 2024 г.: исправлено в коммите.
- Соединения закрываются преждевременно, если недопустимый запрос передается в конвейер после действительного запроса.
- Вариант использования: ???
- Требования: Нет.
- Риск: Нет.
- Полезная нагрузка:
GET / HTTP/1.1rnConnection: closernrnInvalidrnrn - Затронутые программы:
- Мангуста:
- 29 января 2024 г.: сообщается в выпуске GH.
- 13 февраля 2024 г.: исправлено в коммите.
- Ювикорн:
- 29 января 2024 г.: сообщается в комментариях к обсуждению GH.
- 6 февраля 2024 г.: случайно исправлено в фиксации.
- Байты, превышающие
x80 удаляются из начала и конца значений заголовка.
- Вариант использования: множество неприятностей.
- Требования: преобразователь, который пересылает заголовки хоста, содержащие байты больше
x80 . - Риск: Средний.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: xffaxffrnTransfer-Encoding: xffchunkedxffrnrn1rnZrn0rnrn - Затронутые программы:
- Булочка:
- 13 февраля 2024 г.: сообщается в выпуске GH.
- 13 февраля 2024 г.: осталось не исправленным.
- При получении недопустимого фрагмента соединение не закрывается, а начало следующего сообщения помещается после первого
rn следующего за недопустимым фрагментом.
- Вариант использования: отравление очереди ответов.
- Требования: Преобразователь, который пересылает недопустимые фрагменты.
- Риск: Средний.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnrnINVALID!!!rnGET / HTTP/1.1rnHost: whateverrnrn - Затронутые программы:
- Черут:
- 14 февраля 2024 г.: сообщается в выпуске GH.
- 14 февраля 2024 г.: осталось не исправленным.
- Конвейерные запросы в исходном буфере запросов интерпретируются как тело сообщения первого запроса в буфере, даже если он имеет заголовок
Content-Length: 0 .
- Вариант использования: контрабанда запросов
- Требования: Преобразователь, не меняющий границ элементов входящего потока.
- Риск: Низкий. Я не знаю такого преобразователя
- Полезная нагрузка:
POST / HTTP/1.1rnContent-Length: 0rnConnection:keep-alivernHost: arnid: 0rnrnPOST / HTTP/1.1rnHost: arnid: 1rnContent-Length: 34rnrn GET / HTTP/1.1rnHost: arnid: 2rnrn - Затронутые программы:
- Пума:
- 2 февраля 2024 г.: сообщение отправлено по электронной почте.
- 2 февраля 2024 г.: исправлено в коммите.
Ошибки преобразователя
Это ошибки в том, как датчики интерпретируют, нормализуют и пересылают запросы.
- Значения
Content-Length с префиксом 0x неправильно принимаются и пересылаются без проверки тела сообщения.
- Вариант использования: контрабанда запросов
- Требования: Сервер, который либо интерпретирует
Content-Length как самый длинный допустимый префикс, либо интерпретирует Content-Length с префиксом 0x . - Риск: Средний. См. ошибки серверов 10, 29 и 32.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: akamai.my-domain.coolrnContent-Length: 0x10rnrnZ - Затронутые программы:
- Акамай CDN:
- 7 сентября 2023 г.: Сообщено по электронной почте.
- 27 ноября 2023 г.: уведомление об исправлении отправлено по электронной почте.
- Неверные значения размера фрагмента неправильно принимаются и пересылаются.
- Вариант использования: контрабанда запросов
- Требования: внутренний сервер HTTP/1.1.
- Риск: высокий. Эту ошибку можно было использовать для перенаправления запросов на произвольные серверные части.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: akamai.my-domain.coolrnTransfer-Encoding: chunkedrnrnZrnZZrnZZZrnrn - Затронутые программы:
- Акамай CDN:
- 7 сентября 2023 г.: Сообщено по электронной почте.
- 27 ноября 2023 г.: уведомление об исправлении отправлено по электронной почте.
-
r неправильно разрешен в пробелах chunk-ext перед ; .
- Вариант использования: контрабанда запросов
- Требования: Сервер, который неправильно интерпретирует
r в этом месте. - Риск: высокий. См. ошибку сервера 31.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: server.my-domain.coolrnTransfer-Encoding: chunkedrnrn2rr;arn02rn41rn0rnrnGET /bad_path/pwned HTTP/1.1rnHost: arnContent-Length: 430rnrn0rnrnGET / HTTP/1.1rnHost: server.my-domain.coolrnrn - Затронутые программы:
- Акамай CDN:
- 7 сентября 2023 г.: Сообщено по электронной почте.
- 27 ноября 2023 г.: уведомление об исправлении отправлено по электронной почте.
- Сервер трафика Apache:
- 20 сентября 2023 г.: сообщается в выпуске GH.
- 13 февраля 2024 г.: Исправлено в PR.
- Балансировщик нагрузки приложений Google Cloud Classic:
- 13 сентября 2023 г.: сообщается через Google IssueTracker.
- 30 января 2024 г.: исправлено не позднее этой даты.
- Сообщения, содержащие недопустимые фрагменты, пересылаются без тела сообщения.
- Вариант использования: ???
- Требования: нет данных
- Риск: Нет.
- Полезная нагрузка:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnrn1r0n - Затронутые программы:
- Фунт:
- 13 июня 2024 г.: сообщается в выпуске GH.
- 14 июня 2024 г.: исправлено в коммите.
- Пустые заголовки
Content-Length пересылаются неправильно.
- Вариант использования: контрабанда запросов
- Требования: сервер, который интерпретирует пустые значения
Content-Length как любые, отличные от 0. - Риск: Средний. См. ошибку сервера 38.
- Полезная нагрузка:
GET / HTTP/1.1rnhost: whateverrncontent-length: rnrn - Затронутые программы:
- Сервер трафика Apache:
- 2 августа 2023 г.: сообщается в выпуске GH.
- 6 августа 2023 г.: исправлено посредством PR.
- Запрещенные байты принимаются и пересылаются в именах заголовков.
- Вариант использования: контрабанда запросов
- Требования: Сервер, который неправильно интерпретирует эти недопустимые байты в именах заголовков.
- Риск: Средний. См. ошибку сервера 41.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: fanoutrnHeaderx85: valuernrn - Затронутые программы:
- Сервер трафика Apache:
- 29 июня 2023 г.: Сообщено по электронной почте.
- 18 сентября 2023 г.: сообщается в выпуске GH.
- 31 января 2024 г.: осталось не исправленным.
- OpenBSD ретранслировал:
- 10 ноября 2023 г.: сообщение отправлено по электронной почте.
- 28 ноября 2023 г.: исправлено в коммите.
- Размер фрагмента интерпретируется как самый длинный допустимый префикс и пересылается.
- Вариант использования: контрабанда запросов
- Требования: Сервер, который интерпретирует префиксы
0_ или 0x для размеров фрагментов. - Риск: высокий. См. Ошибки сервера 1 и 25, и ошибка Transducer 19.
- Полезная нагрузка:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnrn1these-bytes-never-get-validatedrnZrn0rnrn - Пострадавшие программы:
- Apache Traffic Server:
- 10 октября 2023 года. Сообщено через выпуск GH.
- 13 февраля 2024 года: исправлен в пир.
- Заполнитель :)
-
Transfer-Encoding: ,chunked заголовки перенаправлены неповреждены и интерпретируются как эквивалентные для chunked .
- В случае использования: запрос контрабанды
- Требования: Сервер, который игнорирует неизвестные
Transfer-Encoding и угощается ,chunked в отличие от chunked . - Риск: высокий. Смотрите ошибку сервера 21.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: ,chunkedrnrn0rnrn - Пострадавшие программы:
- Azure CDN:
- 15 октября 2023 года. Сообщается через отчет об уязвимости MSRC.
- 29 ноября 2023 года: исправлена или до этой даты.
- 12 декабря 2023 года: «Этот случай не соответствует бару для обслуживания MSRC, поскольку контрабанда HTTP не рассматривает уязвимость, и мы будем закрывать это дело».
- nghttpx:
- 14 октября 2023 года: сообщено по электронной почте.
- 17 октября 2023 года: исправлен в Pr.
-
r неправильно пересылается в значениях заголовка.
- В случае использования: запрос контрабанды
- Требования: сервер, который рассматривает
r как эквивалент rn в поле заголовка. - Риск: средний. Смотрите ошибку сервера 13.
- Полезная нагрузка:
GET / HTTP/1.1rnInvalid-Header: thisrvaluerisrinvalidrnrn - Google Cloud Cloud Classic Application Balancer Balancer:
- 7 сентября 2023 года. Сообщено через Google EssuTracker.
- 30 января 2024 года. Исправлена или до этой даты.
- Пустые заголовки
Content-Length неверно пересылаются, даже в присутствии других заголовков Content-Length , если на первом появлении заголовок пустой Content-Length .
- В случае использования: запрос контрабанды
- Требования: сервер, который интерпретирует пустые значения
Content-Length как 0 и принимает несколько заголовков Content-Length в входящих запросах, приоритетных первого. - Риск: средний. Смотрите ошибку сервера 42.
- Полезная нагрузка:
GET / HTTP/1.1rnhost: whateverrncontent-length: rncontent-length: 59rnrnPOST /evil HTTP/1.1rnhost: whateverrncontent-length: 34rnrnGET / HTTP/1.1rnhost: whateverrnrn - Пострадавшие программы:
- HAPROXY:
- 2 августа 2023 года. Сообщено через выпуск GH.
- 9 августа 2023 года: исправлено в коммите.
- 10 августа 2023 года: назначен CVE-2023-40225.
-
x00 пересылается в значениях заголовка.
- В случае использования: обход ACL
- Требования: сервер, который усекает значения заголовка на
x00 . - Риск: средний. См. Серверные ошибки 35 и 43, и ошибка Transducer 20.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: google.comx00.kallus.orgrnrn - Пострадавшие программы:
- HAPROXY:
- 19 сентября 2023 года. Сообщено по электронной почте.
- 31 января 2024 года: исправлено в коммите.
- OpenLiteSpeed:
- 3 ноября 2023 года: сообщено по электронной почте.
- 10 июля 2024 года. Исправлена или до этой даты.
- Bare
n принимается в качестве терминатора Chunk Line.
- Использование: ???
- Требования: n/a
- Риск: нет
- Полезная нагрузка:
GET / HTTP/1.1rnTransfer-Encoding: chunkedrnrnarn0123456789n0rnrn - Пострадавшие программы:
- HAPROXY:
- 25 января 2024 года. Сообщается по электронной почте.
- 30 января 2024 года: исправлено в Commmits 7B737DA и 4837E99.
- Полевые линии без
: пересылаются как есть.
- В случае использования: запрос контрабанды
- Требования: Бэкэнд -сервер, который неправильно обретает линии полевых линий без
: . - Риск: средний. Смотрите ошибки преобразователей 28 и 37.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: whateverrnTenst: testrnConnection: closernrn - Пострадавшие программы:
- OpenLiteSpeed:
- 3 ноября 2023 года: сообщено по электронной почте.
- 10 июля 2024 года. Исправлена или до этой даты.
- Запросы, содержащие как
Content-Length так и заголовки Transfer-Encoding пересылаются как есть, если значение Transfer-Encoding не признается.
- В случае использования: запрос контрабанды
- Требования: Бэкэнд-сервер, который рассматривает
,chunked как эквивалент chunked , и распределяет приоритеты Transfer-Encoding по Content-Length . Это поведение разрешено стандартами. - Риск: высокий. Это позволяет контрабанду запросов на стандарты, соответствующие серверам.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: ,chunkedrnContent-Length: 5rnConnection: closernrn0rnrn - Пострадавшие программы:
- OpenLiteSpeed:
- 3 ноября 2023 года: сообщено по электронной почте.
- 10 июля 2024 года. Исправлена или до этой даты.
- Фунт:
- 4 февраля 2024 года. Сообщено через выпуск GH.
- 29 марта 2024 года: исправлено в коммите.
-
n не нормализован до rn в перенаправленных сообщениях.
- В случае использования: запрос контрабанды
- Требования: Бэкэнд -сервер, который не интерпретирует
n как строку, заканчивающуюся в строках заголовков. Стандарт позволяет серверам переводить n на . - Риск: высокий. Эта ошибка используется против стандартов, соответствующих серверам.
- Полезная нагрузка:
GET / HTTP/1.1nHost: whatevernConnection: closenn - Пострадавшие программы:
- OpenLiteSpeed:
- 3 ноября 2023 года: сообщено по электронной почте.
- 31 января 2024 года: остается нефиксированным.
- Борьбаные тела сообщений, содержащие дополнительное
rn до того, как кусок терминатора не будет заменена без замены заголовка Transfer-Encoding с Content-Length .
- В случае использования: запрос контрабанды
- Требования: нет.
- Риск: высокий. Эта ошибка используется против произвольных серверов бэкэнд.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn17rn0rnrnGET / HTTP/1.1rnrnrnrn0rnrn - Пострадавшие программы:
- OpenLitSpeed
- 30 ноября 2023 года: сообщено по электронной почте.
- 10 июля 2024 года. Исправлена или до этой даты.
-
Transfer-Encoding: ,chunked заголовки перенаправлены неповреждены и не интерпретируются как эквивалентные для chunked .
- В случае использования: запрос контрабанды
- Требования: сервер, который интерпретирует
,chunked как эквивалент chunked , что, как говорит стандарт, вы можете сделать. - Риск: высокий. Это уязвимость контрабанды контрабанды, которая используется против стандартов, соответствующих бэкэндам.
- Полезная нагрузка:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: ,chunkedrnContent-Length: 5rnrn0rnrn - Пострадавшие программы:
- Openbsd реле:
- 10 ноября 2023 года: сообщено по электронной почте.
- 28 ноября 2023 года: исправлено в коммите.
- Размер размеров с префиксами
+ , - и 0x интерпретируются и пересылаются.
- В случае использования: запрос контрабанды
- Требования: сервер, который интерпретирует размеры кусок как самый длинный действительный префикс.
- Риск: высокий. Смотрите ошибку сервера 22.
- Полезная нагрузка:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnrn-0x0rnrn - Пострадавшие программы:
- Openbsd реле:
- 10 ноября 2023 года: сообщено по электронной почте.
- 28 ноября 2023 года: исправлено в коммите.
- Фунт:
- 10 октября 2023 года. Сообщено через выпуск GH.
- 11 октября 2023 года: исправлено через Commits 60A4F42 и F70DB92.
- Заголовки, содержащие
x00 или n объединяются в значение предыдущего заголовка.
- В случае использования: запрос контрабанды
- Требования: любой бэкэнд-сервер, соответствующий стандартам.
- Риск: высокий. Это общая уязвимость контрабанды.
- Полезная нагрузка:
GET / HTTP/1.1rna:brncx00rnrn - Пострадавшие программы:
- Openbsd реле:
- 10 ноября 2023 года: сообщено по электронной почте.
- 29 ноября 2023 года: исправлено в коммите.
- Тела сообщения снимаются из запросов
GET без удаления их заголовков Content-Length .
- В случае использования: запрос контрабанды
- Требования: любой бэкэнд -сервер, который поддерживает трубопровод.
- Риск: высокий. Это общая уязвимость контрабанды.
- Полезная нагрузка:
GET / HTTP/1.1rnContent-Length: 10rnrn1234567890 - Пострадавшие программы:
- Openbsd реле:
- 28 ноября 2023 года: сообщено по электронной почте.
- 1 декабря 2023 года: исправлено в коммите.
- Запросы, содержащие несколько заголовков
Content-Length пересылаются, что приоритет последнему.
- В случае использования: запрос контрабанды
- Требования: сервер, который принимает запросы, содержащие несколько заголовков
Content-Length , приоритетные первые. - Риск: высокий. Смотрите ошибку сервера 23.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: arnContent-Length: 0rnContent-Length: 31rnrnGET /evil HTTP/1.1rnHost: arnrn - Пострадавшие программы:
- Openbsd реле:
- 30 ноября 2023 года: сообщено по электронной почте.
- 10 июля 2024 года: остается нефиксированным.
- Запросы, содержащие как
Content-Length так и Transfer-Encoding пересылаются.
- В случае использования: запрос контрабанды
- Требования: сервер, который приоритет
Content-Length по сравнению с Transfer-Encoding или не поддерживает Transfer-Encoding: chunked . - Риск: высокий. Это классический вектор контрабанды.
- Полезная нагрузка:
POST / HTTP/1.1rnHost: arnCon