The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Серия уязвимостей в реализациях HTTP/2

06.08.2016 08:43

Исследователи безопасности из компании Imperva представили на конференции Black Hat USA 2016 отчёт с результатами анализа безопасности протокола HTTP/2. В процессе анализа были выявлены четыре концептуальные уязвимости, проявляющиеся в различных реализациях HTTP/2 и приводящие к отказу в обслуживании.

Интересно, что две проблемы не специфичны HTTP/2 и не обусловлены расширением функциональности протокола, а являются давно известными проблемами реализаций HTTP/1.x. По данным W3Techs протокол HTTP/2 уже используется на 9.1% сайтов, при том, что в декабре 2015 года этот показатель составлял 2.3%, а месяц назад 8.4%.

Выявленные техники атак:

  • Slow Read - метод аналогичен известной DDoS-атаке Slowloris, при которой клиент принимает ответ на запрос очень медленно, что позволяет исчерпать лимит на число активных соединений. Атаке подвержены реализации HTTP/2 в Apache, IIS, Jetty, NGINX и nghttp2. Разработчики nginx сообщили, что проблема была устранена в феврале в выпуске NGINX 1.9.12, актуальные выпуски NGINX уязвимости не подвержены;
  • HPACK Bomb - атака через манипуляцию сжатыми запросами, аналогичная по своей сути "zip-бомбе". Суть метода в передаче небольших сжатых сообщений, которые на сервере распаковываются в гигабайты данных и приводят к исчерпанию доступных ресурсов;
  • Dependency Cycle Attack - метод построен на манипуляции механизмами управления потоком, применяемым в HTTP/2 для сетевой оптимизации. Атакующий может отправить специально оформленные запросы, которые приведут к взаимному использованию зависимостей и бесконечному зацикливанию при попытке обработать такие запросы. Проблема проявляется в Apache httpd и библиотеке nghttpd2.
  • Stream Multiplexing Abuse - атака нацелена на эксплуатацию недоработок в реализациях механизма мультиплексирования потоков в одном соединении и может привести к краху серверного процесса.


  1. Главная ссылка к новости (https://www.nginx.com/blog/the...)
  2. OpenNews: В Chrome 51 наблюдаются проблемы с использованием HTTP/2
  3. OpenNews: Google отказывается от поддержки в Chrome протокола SPDY в пользу HTTP/2
  4. OpenNews: Выпуск nginx 1.9.5 с поддержкой HTTP/2
  5. OpenNews: Опубликованы RFC для HTTP/2 и ChaCha20/Poly1305
  6. OpenNews: HTTP/2.0 получил статус предложенного стандарта
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44925-http2
Ключевые слова: http2, nginx, apache
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (24) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 09:14, 06/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А разве nginx подвержен slow read?
     
     
  • 2.3, Аноним (-), 09:40, 06/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В реализации мультиплексора соединений HTTP/2.0
     
     
  • 3.9, Аноним (-), 19:09, 06/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Поправка. В _старой_ реализации, так что пострадали только ССЗБ, использующие mainline.
     
     
  • 4.15, Аноним (-), 04:33, 07/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    в mainline тоже давным-давно исправлено. Пострадали ССЗБ, использующие mainline полугодовалой давности.
     

  • 1.2, Аноним (-), 09:40, 06/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Капитанские уязвимости
     
     
  • 2.12, Аноним (-), 23:48, 06/08/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Где ж ты раньше был, Капитан?
     

  • 1.4, FSA (??), 09:56, 06/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    А что означает табличка? Галка - это где уязвимость есть? Но тогда почему у Nginx  на slow read стоит, они же исправили уже? Или эта галка означает, что исправили?
     
     
  • 2.10, arka (?), 21:44, 06/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, эта галка сообщала, что на время проверки nginx 1.9.9 был подвержен этой атаке, но после информирования Сысоев и Ко прикрыли её в 1.9.12 и т.д.
     

  • 1.5, Аноним (-), 11:21, 06/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    h2o неуязвим или не проверяли?
     
     
  • 2.6, A.Stahl (ok), 12:04, 06/08/2016 [^] [^^] [^^^] [ответить]  
  • +9 +/
    О нём даже не слышали...
     
  • 2.7, Аноним (-), 15:39, 06/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    h2o это частная реализация http2/spdy в общем-то основана на перечисленном/упомянутом в, так что весьма вероятно.
    плюс слабые места - Общие, системные для HTTP2 и тут костыль потребуется Всем сервисам скорее всего.
    если вам принципиально - мигруируйте с h2o на n2o, оно секьюрнее. ну и быстрее ко всему.
     
     
  • 3.8, Аноним (-), 15:41, 06/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    с ковбоем на пару - нормально у меня прижился, вроде.
     
  • 3.13, Аноним (-), 23:51, 06/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > h2o это частная реализация http2/spdy в общем-то основана на перечисленном/упомянутом

    Перечмслнго штуки 4 совершенно разных реализации. На которой их них основан h2o?

    > если вам принципиально - мигруируйте с h2o на n2o, оно секьюрнее. ну
    > и быстрее ко всему.

    И что ха гнилой пиар? Как насчет пруфов, особенно по части секурности?

     
  • 3.14, Аноним (-), 01:27, 07/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А я подумал про русалочек из H2O...
     
  • 2.16, Аноним (-), 08:16, 07/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Не проверяли.
    На slow post можете сами проверить - curl --http2 -d @-, а уж stdin "тормозите" чем угодно, хоть ручками.
     
     
  • 3.18, Xasd (ok), 23:54, 07/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    идиот?

    чем делать возню с stdin -- проще свою простую реализацию клиента запилить.. и на ней уже slow post и slow read

     
     
  • 4.23, Аноним (-), 03:08, 10/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "проще свою простую реализацию запилить"

    вот из таких соображений и появился systemd

     
     
  • 5.24, Andrey Mitrofanov (?), 09:32, 10/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > "проще свою простую реализацию запилить"
    > вот из таких соображений и появился HTTP/2

    </fix></грусть народа>


     
     
  • 6.25, Аноним (-), 19:15, 11/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    И это тоже. Как и systemd, http/2 создает больше проблем, чем решает.
     

  • 1.17, Аноним (-), 22:33, 07/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    slow read имхо на уровне сетевого стека должно отрубаться. это общесистемная трабла
     
     
  • 2.19, Xasd (ok), 23:58, 07/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > slow read имхо на уровне сетевого стека должно отрубаться. это общесистемная трабла

    таймаут на весь этап hello-и-обмена-заголовками .. а уж внутри чего оно там произошло -- уже не важно. вот именно так должно было бы работать в идеале

     
  • 2.20, angra (ok), 03:14, 08/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, а еще для недоадминов должна сущестовать кнопка "правильно настроить сервер". Ты бы хоть глянул сколько в ядре параметров для контроля TCP, многие из которых так или иначе влияют на этот вектор атаки.
     
  • 2.21, Аноним (-), 12:24, 08/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    эх а кто-то по медленному каналу потихоньку видеоархив передавал :)
     
  • 2.22, Аноним (-), 16:19, 08/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > slow read имхо на уровне сетевого стека должно отрубаться. это общесистемная трабла

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

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру