Исследователи безопасности из компании Imperva представили (http://investors.imperva.com/phoenix.zhtml?c=247116&p=irol-n...) на конференции Black Hat USA 2016 отчёт (http://www.imperva.com/defensecenter/hackerintelligencereports) с результатами анализа безопасности протокола HTTP/2. В процессе анализа были выявлены четыре концептуальные уязвимости, проявляющиеся в различных реализациях HTTP/2 и приводящие к отказу в обслуживании.
Интересно, что две проблемы не специфичны HTTP/2 и не обусловлены расширением функциональности протокола, а являются давно известными проблемами реализаций HTTP/1.x. По данным (https://w3techs.com/technologies/details/ce-http2/all/all) W3Techs протолок HTTP/2 уже используется на 9.1% сайтов, при том, что в декабре 2015 года этот показатель составлял (https://w3techs.com/technologies/history_overview/site_eleme...) 2.3%, а месяц назад 8.4%.Выявленные техники атак:
- Slow Read - метод аналогичен известной DDoS-атаке
Slowloris, при которой клиент принимает ответ на запрос очень медленно, что позволяет исчерпать лимит на число активных соединений.
Атаке подвержены реализации HTTP/2 в Apache, IIS, Jetty, NGINX и nghttp2. Разработчики nginx сообщили (https://www.nginx.com/blog/the-imperva-http2-vulnerability-r.../), что проблема была устранена в феврале в выпуске NGINX 1.9.12, актуальные выпуски NGINX уязвимости не подвержены;
- HPACK Bomb - атака через манипуляцию сжатыми запросами, аналогичная по своей сути "zip-бомбе". Суть метода в передаче небольших сжатых сообщений, которые на сервере распаковываются в гигабайты данных и приводят к исчерпанию доступных ресурсов;
- Dependency Cycle Attack - метод построен на манипуляции механизмами управления потоком, применяемым в HTTP/2 для сетевой оптимизации. Атакующий может отправить специально оформленные запросы, которые приведут к взаимному использованию зависимостей и бесконечному зацикливанию при попытке обработать такие запросы. Проблема проявляется в Apache httpd и библиотеке nghttpd2 (https://nghttp2.org/).- Stream Multiplexing Abuse - атака нацелена на эксплуатацию недоработок в реализациях механизма мультиплексирования потоков в одном соединении и может привести к краху серверного процесса.
URL: https://www.nginx.com/blog/the-imperva-http2-vulnerability-r.../
Новость: http://www.opennet.me/opennews/art.shtml?num=44925
А разве nginx подвержен slow read?
В реализации мультиплексора соединений HTTP/2.0
Поправка. В _старой_ реализации, так что пострадали только ССЗБ, использующие mainline.
в mainline тоже давным-давно исправлено. Пострадали ССЗБ, использующие mainline полугодовалой давности.
Капитанские уязвимости
Где ж ты раньше был, Капитан?
А что означает табличка? Галка - это где уязвимость есть? Но тогда почему у Nginx на slow read стоит, они же исправили уже? Или эта галка означает, что исправили?
Нет, эта галка сообщала, что на время проверки nginx 1.9.9 был подвержен этой атаке, но после информирования Сысоев и Ко прикрыли её в 1.9.12 и т.д.
h2o неуязвим или не проверяли?
О нём даже не слышали...
h2o это частная реализация http2/spdy в общем-то основана на перечисленном/упомянутом в, так что весьма вероятно.
плюс слабые места - Общие, системные для HTTP2 и тут костыль потребуется Всем сервисам скорее всего.
если вам принципиально - мигруируйте с h2o на n2o, оно секьюрнее. ну и быстрее ко всему.
с ковбоем на пару - нормально у меня прижился, вроде.
> h2o это частная реализация http2/spdy в общем-то основана на перечисленном/упомянутомПеречмслнго штуки 4 совершенно разных реализации. На которой их них основан h2o?
> если вам принципиально - мигруируйте с h2o на n2o, оно секьюрнее. ну
> и быстрее ко всему.И что ха гнилой пиар? Как насчет пруфов, особенно по части секурности?
А я подумал про русалочек из H2O...
Не проверяли.
На slow post можете сами проверить - curl --http2 -d @-, а уж stdin "тормозите" чем угодно, хоть ручками.
идиот?чем делать возню с stdin -- проще свою простую реализацию клиента запилить.. и на ней уже slow post и slow read
"проще свою простую реализацию запилить"вот из таких соображений и появился systemd
> "проще свою простую реализацию запилить"
> вот из таких соображений и появился HTTP/2</fix></грусть народа>
И это тоже. Как и systemd, http/2 создает больше проблем, чем решает.
slow read имхо на уровне сетевого стека должно отрубаться. это общесистемная трабла
> slow read имхо на уровне сетевого стека должно отрубаться. это общесистемная траблатаймаут на весь этап hello-и-обмена-заголовками .. а уж внутри чего оно там произошло -- уже не важно. вот именно так должно было бы работать в идеале
Ага, а еще для недоадминов должна сущестовать кнопка "правильно настроить сервер". Ты бы хоть глянул сколько в ядре параметров для контроля TCP, многие из которых так или иначе влияют на этот вектор атаки.
эх а кто-то по медленному каналу потихоньку видеоархив передавал :)
> slow read имхо на уровне сетевого стека должно отрубаться. это общесистемная траблаЗнаешь, разбирать L7 из фаера, особено когда он шифрованный и сессионный ключ есть только у апликухи которая эти данные гоняет - не совсем перспективно. А без этого можно легитимные конекции порубать.