Re: Об одной малоизвестной уязвимости в веб сайтах

Валентин Бартенев vbart at nginx.com
Wed Jun 18 07:54:59 UTC 2014


On Tuesday 17 June 2014 18:05:15 S.A.N wrote:
> Валентин Бартенев Wrote:
> -------------------------------------------------------
> > Как уже неоднократно в этой ветке говорилось, nginx в параметрах
> > HTTP_* пишет
> > ровно то, что от него требуется: заголовки, пришедшие от клиента, в
> > том виде,
> > в котором они получены.
> 
> Nginx так и должен делать, если запрос валидный, а инвалидные запросы на
> бекенд передавать не имеет никакого смысла, они не несут в себе полезной
> нагрузки (payload) для бекенда.
[..]

Вы подменяете понятия.  Пока ещё никто из дискутирующих не смог привести
аргументов за то, что такие запросы не являются валидными.

Попытки ссылаться на требования к клиенту и склонять спецификацию так,
как того хочется - результата точно не принесут.

Это с точки зрения вашего конкретного бэкенда запрос не валиден, nginx
же вполне справляется с его обработкой, как в общем-то и многие другие
сервера.

Можете предложить исправить "баг" на ietf.org:

$ netcat ietf.org 80
HEAD http://www.ietf.org/ HTTP/1.1
Host: example.com
Host: example.org

HTTP/1.1 200 OK
Date: Wed, 18 Jun 2014 07:49:22 GMT
Server: Apache
Last-Modified: Thu, 05 Jun 2014 15:47:35 GMT
ETag: "884603a-49c4-4fb18a9ec37a4"
Accept-Ranges: bytes
Content-Length: 18884
Vary: Accept-Encoding
Content-Type: text/html


или на apache.org:

$ netcat apache.org 80
HEAD http://www.apache.org/ HTTP/1.1
Host: example.com
Host: example.org

HTTP/1.1 200 OK
Date: Wed, 18 Jun 2014 07:49:57 GMT
Server: Apache/2.4.9 (Unix) mod_wsgi/3.4 Python/2.7.5 OpenSSL/1.0.1h
Last-Modified: Sun, 15 Jun 2014 09:10:45 GMT
ETag: "a250-4fbdc492d0221"
Accept-Ranges: bytes
Content-Length: 41552
Vary: Accept-Encoding
Cache-Control: max-age=3600
Expires: Wed, 18 Jun 2014 08:49:57 GMT
Content-Type: text/html; charset=utf-8


или на google.com в конце-концов:

$ netcat google.com 80
HEAD http://google.com/ HTTP/1.1
Host: example.com
Host: example.org

HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.ru/?gfe_rd=cr&ei=wkShU4e1GM-A4AS4poHoDg
Content-Length: 258
Date: Wed, 18 Jun 2014 07:50:26 GMT
Server: GFE/2.0
Alternate-Protocol: 80:quic



> По этому, мы разработчики бекенда хотели бы чтобы Nginx не передавал нам
> инвалидные запросы, а отдавал 400 статус.
> 
[..]

Список "инвалидных запросов" в студию.  Завтра придут просить запретить
запрос к /private/, поскольку с точки зрения некоторого бэкенда он не
валиден. 


--
Валентин Бартенев


Подробная информация о списке рассылки nginx-ru