Re: duplicate Host header

2020-03-25 Пенетрантность Maxim Dounin
Hello!

On Tue, Mar 24, 2020 at 09:29:28PM +0500, Илья Шипицин wrote:

> выглядит это примерно так.
> 
> живешь, живешь, думаешь, что у тебя все ок.
> потом обновляешься до 1.17.9, и по логам идут 400-ки.
> 
> смотришь в error.log - там duplicate Host header (про который ты ранее и
> знать не знал, и без понятия, в чем там вообще прблема, потому что ее нет
> никакой)
> 
> какая-то абстрактная задача запретить такие хедера, задача ради самой задачи

У вас мусор в заголовках запросов, прямо запрещённый RFC и 
потенциально приводящий к security-проблемам.  В рамках очередной 
серии патчей, закрывающих подобные security-проблемы - требования 
были ужесточены, имеющийся мусор - стал приводить к 400 ошибкам.

Есть ровно одно решение - мусор вычистить, но это, как тут 
звучало, не ваша война.  Если очень хочется сохранять 
совместимость с имеющимся мусором - можно продолжать пользоваться 
предыдущими версиями и/или наколхозить локальный патч, некоторое 
время это будет работать.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: duplicate Host header

2020-03-24 Пенетрантность Илья Шипицин
выглядит это примерно так.

живешь, живешь, думаешь, что у тебя все ок.
потом обновляешься до 1.17.9, и по логам идут 400-ки.

смотришь в error.log - там duplicate Host header (про который ты ранее и
знать не знал, и без понятия, в чем там вообще прблема, потому что ее нет
никакой)

какая-то абстрактная задача запретить такие хедера, задача ради самой задачи

вт, 24 мар. 2020 г. в 18:56, Илья Шипицин :

> так а как мы бы узнали, что у нас такое есть. никакого режима "dry run"
>
> вт, 24 мар. 2020 г. в 18:51, Maxim Dounin :
>
>> Hello!
>>
>> On Tue, Mar 24, 2020 at 06:27:57PM +0500, Илья Шипицин wrote:
>>
>> > вт, 24 мар. 2020 г. в 17:51, Maxim Dounin :
>> >
>> > > Hello!
>> > >
>> > > On Tue, Mar 24, 2020 at 01:50:17PM +0500, Илья Шипицин wrote:
>> > >
>> > > > вижу 400-ки на вот такое
>> > > >
>> > > > 2020/03/24 09:43:55 [info] 22318#22318: *514553220 client sent
>> duplicate
>> > > > host header: "Host: example.ru ",
>> previous
>> > > > value: "Host: example.ru" while reading client request headers,
>> client:
>> > > > X.X.X.X
>> > > >
>> > > >
>> > > > хост в обоих случаях одинаковый.
>> > > > понятно, что, наверное, RFC тут не ночевало. с другой стороны, ну
>> послал
>> > > > клиент два раза одинаковый хост. никто ж не умер. может пропускать
>> такие
>> > > > запросы ? или есть какой-то риск ?
>> > >
>> > > Есть какой-то риск, даже если хосты строго одинаковые.  Например
>> > > такой, что "два раза одинаковый хост" - это по RFC то же самое,
>> > > что "Host: example.ru, example.ru", что совсем не то же самое, что
>> > > "Host: example.ru".
>> > >
>> > > Ну и до кучи, отклонять такие запросы - прямое требованием RFC 7230:
>> > >
>> > >A server MUST respond with a 400 (Bad Request) status code to any
>> > >HTTP/1.1 request message that lacks a Host header field and to any
>> > >request message that contains more than one Host header field or a
>> > >Host header field with an invalid field-value.
>> > >
>> > > Если очень хочется, чтобы "может пропускать", то так было с nginx
>> > > 0.7.0 и до nginx 1.17.8 включительно.  Начиная с nginx 1.17.9
>> > > такие запросы отклоняются.  Если есть какие-то самописные клиенты,
>> > > которые нарушают RFC и шлют несколько заголовков Host - нужно
>> > > исправить этих клиентов.
>> > >
>> >
>> > а можно настройку сделать, чтобы можно было вернуть "как было раньше" ?
>>
>> Нет.
>>
>> --
>> Maxim Dounin
>> http://mdounin.ru/
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: duplicate Host header

2020-03-24 Пенетрантность Илья Шипицин
так а как мы бы узнали, что у нас такое есть. никакого режима "dry run"

вт, 24 мар. 2020 г. в 18:51, Maxim Dounin :

> Hello!
>
> On Tue, Mar 24, 2020 at 06:27:57PM +0500, Илья Шипицин wrote:
>
> > вт, 24 мар. 2020 г. в 17:51, Maxim Dounin :
> >
> > > Hello!
> > >
> > > On Tue, Mar 24, 2020 at 01:50:17PM +0500, Илья Шипицин wrote:
> > >
> > > > вижу 400-ки на вот такое
> > > >
> > > > 2020/03/24 09:43:55 [info] 22318#22318: *514553220 client sent
> duplicate
> > > > host header: "Host: example.ru ",
> previous
> > > > value: "Host: example.ru" while reading client request headers,
> client:
> > > > X.X.X.X
> > > >
> > > >
> > > > хост в обоих случаях одинаковый.
> > > > понятно, что, наверное, RFC тут не ночевало. с другой стороны, ну
> послал
> > > > клиент два раза одинаковый хост. никто ж не умер. может пропускать
> такие
> > > > запросы ? или есть какой-то риск ?
> > >
> > > Есть какой-то риск, даже если хосты строго одинаковые.  Например
> > > такой, что "два раза одинаковый хост" - это по RFC то же самое,
> > > что "Host: example.ru, example.ru", что совсем не то же самое, что
> > > "Host: example.ru".
> > >
> > > Ну и до кучи, отклонять такие запросы - прямое требованием RFC 7230:
> > >
> > >A server MUST respond with a 400 (Bad Request) status code to any
> > >HTTP/1.1 request message that lacks a Host header field and to any
> > >request message that contains more than one Host header field or a
> > >Host header field with an invalid field-value.
> > >
> > > Если очень хочется, чтобы "может пропускать", то так было с nginx
> > > 0.7.0 и до nginx 1.17.8 включительно.  Начиная с nginx 1.17.9
> > > такие запросы отклоняются.  Если есть какие-то самописные клиенты,
> > > которые нарушают RFC и шлют несколько заголовков Host - нужно
> > > исправить этих клиентов.
> > >
> >
> > а можно настройку сделать, чтобы можно было вернуть "как было раньше" ?
>
> Нет.
>
> --
> Maxim Dounin
> http://mdounin.ru/
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: duplicate Host header

2020-03-24 Пенетрантность Maxim Dounin
Hello!

On Tue, Mar 24, 2020 at 06:27:57PM +0500, Илья Шипицин wrote:

> вт, 24 мар. 2020 г. в 17:51, Maxim Dounin :
> 
> > Hello!
> >
> > On Tue, Mar 24, 2020 at 01:50:17PM +0500, Илья Шипицин wrote:
> >
> > > вижу 400-ки на вот такое
> > >
> > > 2020/03/24 09:43:55 [info] 22318#22318: *514553220 client sent duplicate
> > > host header: "Host: example.ru ", previous
> > > value: "Host: example.ru" while reading client request headers, client:
> > > X.X.X.X
> > >
> > >
> > > хост в обоих случаях одинаковый.
> > > понятно, что, наверное, RFC тут не ночевало. с другой стороны, ну послал
> > > клиент два раза одинаковый хост. никто ж не умер. может пропускать такие
> > > запросы ? или есть какой-то риск ?
> >
> > Есть какой-то риск, даже если хосты строго одинаковые.  Например
> > такой, что "два раза одинаковый хост" - это по RFC то же самое,
> > что "Host: example.ru, example.ru", что совсем не то же самое, что
> > "Host: example.ru".
> >
> > Ну и до кучи, отклонять такие запросы - прямое требованием RFC 7230:
> >
> >A server MUST respond with a 400 (Bad Request) status code to any
> >HTTP/1.1 request message that lacks a Host header field and to any
> >request message that contains more than one Host header field or a
> >Host header field with an invalid field-value.
> >
> > Если очень хочется, чтобы "может пропускать", то так было с nginx
> > 0.7.0 и до nginx 1.17.8 включительно.  Начиная с nginx 1.17.9
> > такие запросы отклоняются.  Если есть какие-то самописные клиенты,
> > которые нарушают RFC и шлют несколько заголовков Host - нужно
> > исправить этих клиентов.
> >
> 
> а можно настройку сделать, чтобы можно было вернуть "как было раньше" ?

Нет.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: duplicate Host header

2020-03-24 Пенетрантность Илья Шипицин
вт, 24 мар. 2020 г. в 17:51, Maxim Dounin :

> Hello!
>
> On Tue, Mar 24, 2020 at 01:50:17PM +0500, Илья Шипицин wrote:
>
> > вижу 400-ки на вот такое
> >
> > 2020/03/24 09:43:55 [info] 22318#22318: *514553220 client sent duplicate
> > host header: "Host: example.ru ", previous
> > value: "Host: example.ru" while reading client request headers, client:
> > X.X.X.X
> >
> >
> > хост в обоих случаях одинаковый.
> > понятно, что, наверное, RFC тут не ночевало. с другой стороны, ну послал
> > клиент два раза одинаковый хост. никто ж не умер. может пропускать такие
> > запросы ? или есть какой-то риск ?
>
> Есть какой-то риск, даже если хосты строго одинаковые.  Например
> такой, что "два раза одинаковый хост" - это по RFC то же самое,
> что "Host: example.ru, example.ru", что совсем не то же самое, что
> "Host: example.ru".
>
> Ну и до кучи, отклонять такие запросы - прямое требованием RFC 7230:
>
>A server MUST respond with a 400 (Bad Request) status code to any
>HTTP/1.1 request message that lacks a Host header field and to any
>request message that contains more than one Host header field or a
>Host header field with an invalid field-value.
>
> Если очень хочется, чтобы "может пропускать", то так было с nginx
> 0.7.0 и до nginx 1.17.8 включительно.  Начиная с nginx 1.17.9
> такие запросы отклоняются.  Если есть какие-то самописные клиенты,
> которые нарушают RFC и шлют несколько заголовков Host - нужно
> исправить этих клиентов.
>

а можно настройку сделать, чтобы можно было вернуть "как было раньше" ?

клиентов править, наверное, надо, но это не наша война.


>
> --
> Maxim Dounin
> http://mdounin.ru/
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: duplicate Host header

2020-03-24 Пенетрантность Maxim Dounin
Hello!

On Tue, Mar 24, 2020 at 01:50:17PM +0500, Илья Шипицин wrote:

> вижу 400-ки на вот такое
> 
> 2020/03/24 09:43:55 [info] 22318#22318: *514553220 client sent duplicate
> host header: "Host: example.ru ", previous
> value: "Host: example.ru" while reading client request headers, client:
> X.X.X.X
> 
> 
> хост в обоих случаях одинаковый.
> понятно, что, наверное, RFC тут не ночевало. с другой стороны, ну послал
> клиент два раза одинаковый хост. никто ж не умер. может пропускать такие
> запросы ? или есть какой-то риск ?

Есть какой-то риск, даже если хосты строго одинаковые.  Например 
такой, что "два раза одинаковый хост" - это по RFC то же самое, 
что "Host: example.ru, example.ru", что совсем не то же самое, что 
"Host: example.ru".

Ну и до кучи, отклонять такие запросы - прямое требованием RFC 7230:

   A server MUST respond with a 400 (Bad Request) status code to any
   HTTP/1.1 request message that lacks a Host header field and to any
   request message that contains more than one Host header field or a
   Host header field with an invalid field-value.

Если очень хочется, чтобы "может пропускать", то так было с nginx 
0.7.0 и до nginx 1.17.8 включительно.  Начиная с nginx 1.17.9 
такие запросы отклоняются.  Если есть какие-то самописные клиенты, 
которые нарушают RFC и шлют несколько заголовков Host - нужно 
исправить этих клиентов.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru