Re: Firefox повторно исплользует соединение IPv6 на основании IPv4. Как с этим жить?
Maxim Dounin
mdounin на mdounin.ru
Ср Июн 1 21:25:25 UTC 2016
Hello!
On Wed, Jun 01, 2016 at 11:10:36PM +0300, Иван wrote:
> В письме от 1 июня 2016 22:15:24 пользователь Maxim Dounin написал:
>
> > Т.е. проблема в том, что Firefox пытается делать connection reuse
> > для всех IP-адресов двух хостов, если у этих хостов хотя бы один
> > общий IP-адреса?
>
> Да. Если у хостов общий IPv4, то FF делает reuse и для IPv6, который в свою
> очередь может различаться. Как по моему это против всякой логики, но вот
> некоторые трактуют RFC именно так (см. ниже).
Отмечу, что стоит редуцировать ту же задачу для двух IPv4 адресов
(точнее, трёх: один общий и два уникальных), и дальше обсуждать
уже её. Присутствие IPv6, насколько я понимаю, не важно, и только
затрудняет понимание проблемы.
> > Это выглядит как нарушение стандарта. RFC 7540 говорит нам, что
> > reuse возможен только в том случае, если хост резолвится в тот же
> > IP-адрес, к которому установлено существующее соединение
> > (https://tools.ietf.org/html/rfc7540#section-9.1.1):
> >
> > A connection can be reused as long as the origin server
> > is authoritative (Section 10.1). For TCP connections without TLS,
> > this depends on the host having resolved to the same IP address.
> >
>
> Ну насколько я понял логику Patrick McManus (разработчика, который не хочет это
> править), он понимает этот абзац как "если хост резолвится в одинаковый IP адрес
> (в одной из версий IP), то можно делать reuse (во всех остальных версиях)".
Сказано - "a connection". Т.е. host резолвится в тот же IP-адрес,
к которому установлено существующее соединение. Понимать это
можно как угодно, но любое другое понимание не соответствует тому,
что написано.
> > > Однако я с этим в корне не согласен, более того, считаю, что такое
> > > поведение открывает уязвимость, которую я описал тут:
> > > https://bugzilla.mozilla.org/show_bug.cgi?id=1190136#c22
> > > Но технической квалификации и политического веса в мире броузеров и
> > > серверов мне не хватает. Так же мало кто используется ipv6 на клиенте,
> > > поэтому массовка еще набралась.
> >
> > Уязвимости тут как таковой нет: без SSL/TLS Firefox не умеет
> > HTTP/2, а для connection reuse в случае TLS нужно ещё, чтобы был
> > представлен корректный сертификат, покрывающий оба доменных имени.
>
> Ну значит уязвимость теоретическая. Если по какой-то причине будет возможен
> HTTP/2 без SSL/TLS, то можно будет использовать эту уязвимость.
Безусловно. И это лишний раз подтверждает, что вышеозначенное
"понимание" неверно.
[...]
> > > 2) Помогите найти аргументы для убеждения разработчиков ФФ, что этот баг
> > > надо исправлять. Если кто готов отписаться там, я открою обратно этот
> > > баг.
> > См. аргументы выше. На лицо явное нарушение стандарта.
> >
>
> Если б всё было так просто, поверьте, я бы не отнимал Ваше время.
Зачистую вопрос состоит лишь в том, чтобы ткнуть пальцем в нужное
место стандарта, при этом грамотно и кратко сформулировать
проблему.
> > server {
> > listen [2001:db8::1]:443 ssl http2 default_server;
> > listen [2001:db8::2]:443 ssl http2 default_server;
> > return 421;
> > }
> >
> > Для Firefox'а этого должно быть достаточно, чтобы переоткрыть
> > соединение.
> >
>
> Спасибо. Это похоже то, что нужно. Нужно ли для этого обновляться до 1.11.0 или
>
> Change: the "421 Misdirected Request" response now used when
> rejecting requests to a virtual server different from one negotiated
> during an SSL handshake; this improves interoperability with some
> HTTP/2 clients when using client certificates.
>
> не про это?
Обновляться не обязательно - вернуть руками можно в любой версии.
При этом к коду ответа и не будет прилагаться красивого сообщения
об ошибке, но это не особо важно, т.к. это ошибка предназначена
для автоматической обработки браузером, а не для демонстрации
пользователям.
Процитированное изменение - оно тоже про борьбу с connection
reuse, но в части использования клиентских сертификатов
(http://trac.nginx.org/nginx/ticket/848).
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru