Welcome! Log In Create A New Profile

Advanced

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

Maxim Dounin
June 17, 2014 03:02AM
Hello!

On Mon, Jun 16, 2014 at 03:36:38PM -0400, S.A.N wrote:

> > > Maxim Dounin Wrote:
> > > -------------------------------------------------------
> > > > Какая-либо проблема появляется тогда и только
> > > > тогда, когда администратор начинает писать в конфиге $http_host,
> > > > не думая о последствиях. Есть мнение, что совсем простое решение
> > > > этой проблемы - не делать так (c) анекдот.
> > >
> > > Вся проблема в том что сами программисты Nginx в модуле FastCGI
> > используют
> > > переменную $http_host для HTTP_HOST, вместо нормализованной
> > переменой $host,
> > > администраторам на оборот приходится исправлять это своими руками и
> > писать в
> > > конфиге
> > > fastcgi_param HTTP_HOST $host;
> > > Если следовать вашей логике, надо изменить код модуля FastCGI, чтобы
> > по
> > > умолчанию Nginx был вполне себе безопасный.
> >
> > По умолчанию в fastcgi http-заголовки передаются как есть, в виде
> > параметров HTTP_*. Каноническое же имя сервера доступно в
> > параметре SERVER_NAME. Что из этого и как использовать - это
> > вопрос к приложению, а не к nginx'у.
>
> Я знаю, и уже выше объяснял почему бекенд-приложениям нужно использовать
> HTTP_HOST вместо SERVER_NAME.
> Значения SERVER_NAME не может использоваться, если в директиве server_name
> используется маска или бекенд обрабатывает запросы для default_server.

Если SERVER_NAME нельзя использовать - значит, необходимо передать
дополнительный параметр, который и использовать.

Использовать HTTP_* поля для чего-то, что позволяет "получить
доступ" - это неправильно.

> Ещё раз приведу пример, в котором мы легко можем получить доступ, к закрытым
> на уровне Nginx ресурсам.
>
> server
> {
> server_name *.example.com;
> ...
> fastcgi_pass php;
> }
>
> server
> {
> server_name private.example.com;
>
> location / {
> allow 192.168.1.0/24;
> deny all;
>
> fastcgi_pass php;
>
> auth_request /auth;
> }
> ...
> }
>
> Как видно два хоста используют один upstream, на котором бекенд приложения
> даёт расширенные привилегии юзерам private.example.com, в расчете на то что
> Nginx предварительно сделал проверку по IP и успешно провел аунтификацию,
> всё вроде логично и удобно сделано, но такая схема легко ломается таким
> запросом.
>
> GET http://example.com/SecureData/ HTTP/1.1
> Host: private.example.com
>
> Бекенд получает HTTP_HOST=private.example.com, даёт юзеру привилегии, но
> Nginx не проводил проверки по IP и не делал запрос аунтификацию, потому что
> отработал хост конфигурации для example.com вместо private.example.com

Проблема в том, что приложение некорректно предполагает, что
HTTP_HOST=private.example.com чем-то отличается от других. Как
показывает пример запроса выше - это не так. И "не так" - не
только в nginx'е, но и в других серверах.

Не надо себя обманывать и пытаться закрыть nginx'ом небезопасную
логику приложения - это не работает и рано или поздно выстрелит.

Правильное решение - передавать информацию о произошедшей
авторизации явно и отдельно (или пользоваться параметром
SERVER_NAME, который уже передаётся и предназначен специально для
идентификации сервера).

> В данном случаи можно было бы использовать переменную SERVER_NAME, но я выше
> писал почему это не всегда возможно.
>
> Если мы оба понимаем, что ситуация когда authority component и значения Host
> разные, это исключительная ситуация и её нужно обрабатывать как Exception, в
> этом случаи есть три варианта поведения, выбросить Exception (отдать 400
> статус), исправить ошибку (использовать переменую $host), и самый плохой
> вариант (антишаблон) ничего не делать и не обрабатывать эту исключительную
> ситуацию и оставить все как есть.

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

--
Maxim Dounin
http://nginx.org/

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

proxy_cache_key и fastcgi_cache_key

Gena Makhomed January 07, 2014 06:16AM

Re: proxy_cache_key и fastcgi_cache_key

Maxim Dounin January 09, 2014 07:12AM

Re: proxy_cache_key и fastcgi_cache_key

Gena Makhomed January 09, 2014 08:58AM

Re: proxy_cache_key и fastcgi_cache_key

Maxim Dounin January 09, 2014 09:34AM

Re: proxy_cache_key и fastcgi_cache_key

Gena Makhomed January 10, 2014 04:56AM

Re: proxy_cache_key и fastcgi_cache_key

Maxim Dounin January 10, 2014 10:44AM

Re: proxy_cache_key и fastcgi_cache_key

Валентин Бартенев January 10, 2014 12:58PM

Re: proxy_cache_key и fastcgi_cache_key

Gena Makhomed January 10, 2014 03:34PM

Re: proxy_cache_key и fastcgi_cache_key

Валентин Бартенев January 10, 2014 03:50PM

Re: proxy_cache_key и fastcgi_cache_key

Gena Makhomed January 10, 2014 04:12PM

Re: proxy_cache_key и fastcgi_cache_key

Валентин Бартенев January 10, 2014 06:18PM

Re: proxy_cache_key и fastcgi_cache_key

Maxim Dounin January 13, 2014 07:24AM

Re: proxy_cache_key и fastcgi_cache_key

S.A.N January 09, 2014 02:03PM

Re: proxy cache key и fastcgi cache key

Gena Makhomed January 09, 2014 05:58PM

Re: proxy cache key и fastcgi cache key

Валентин Бартенев January 10, 2014 05:26AM

Re: proxy cache key и fastcgi cache key

Gena Makhomed January 10, 2014 06:46AM

Re: proxy cache key и fastcgi cache key

Gena Makhomed January 10, 2014 07:08AM

Re: proxy cache key и fastcgi cache key

Валентин Бартенев January 10, 2014 08:10AM

Re: proxy cache key и fastcgi cache key

Gena Makhomed January 10, 2014 03:52PM

Re: proxy cache key и fastcgi cache key

Валентин Бартенев January 10, 2014 05:18PM

Re: proxy cache key и fastcgi cache key

Gena Makhomed January 10, 2014 06:08PM

Re: proxy cache key и fastcgi cache key

Валентин Бартенев January 10, 2014 06:52PM

Re: proxy cache key и fastcgi cache key

Валентин Бартенев January 10, 2014 07:18PM

Re: proxy cache key и fastcgi cache key

Gena Makhomed January 11, 2014 06:20AM

Re: proxy cache key и fastcgi cache key

Gena Makhomed January 11, 2014 05:36AM

Re: proxy cache key и fastcgi cache key

S.A.N January 10, 2014 07:40PM

Re: proxy cache key и fastcgi cache key

Валентин Бартенев January 10, 2014 08:08PM

Re: proxy cache key и fastcgi cache key

S.A.N January 10, 2014 10:07PM

Re: proxy cache key и fastcgi cache key

S.A.N January 10, 2014 10:30PM

Re: proxy cache key и fastcgi cache key

S.A.N January 11, 2014 03:12AM

Re: proxy cache key и fastcgi cache key

S.A.N January 13, 2014 12:31AM

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

Gena Makhomed June 11, 2014 06:32AM

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

Валентин Бартенев June 11, 2014 06:44AM

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

Gena Makhomed June 11, 2014 07:26AM

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

Maxim Dounin June 11, 2014 03:54PM

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

Gena Makhomed June 12, 2014 08:42AM

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

Maxim Dounin June 14, 2014 02:16PM

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

Gena Makhomed June 15, 2014 04:10PM

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

Maxim Dounin June 16, 2014 08:02AM

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

S.A.N June 16, 2014 11:19AM

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

Maxim Dounin June 16, 2014 11:38AM

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

S.A.N June 16, 2014 03:36PM

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

Maxim Dounin June 17, 2014 03:02AM

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

Gena Makhomed June 17, 2014 06:36AM

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

S.A.N June 17, 2014 04:11PM

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

Gena Makhomed June 16, 2014 04:22PM

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

Maxim Dounin June 17, 2014 02:32AM

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

Gena Makhomed June 17, 2014 06:32AM

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

Maxim Dounin June 17, 2014 07:04AM

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

Валентин Бартенев June 17, 2014 07:16AM

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

Igor Sysoev June 18, 2014 10:28AM

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

Валентин Бартенев June 17, 2014 07:06AM

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

Dmitry June 11, 2014 03:56PM

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

S.A.N June 12, 2014 10:47AM

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

Илья Шипицин June 17, 2014 02:42AM

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

S.A.N June 17, 2014 10:46AM

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

Илья Шипицин June 17, 2014 01:02PM

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

S.A.N June 17, 2014 03:31PM

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

Илья Шипицин June 17, 2014 04:12PM

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

S.A.N June 17, 2014 04:50PM

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

Илья Шипицин June 17, 2014 04:16PM

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

Валентин Бартенев June 17, 2014 01:30PM

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

S.A.N June 17, 2014 06:05PM

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

Валентин Бартенев June 18, 2014 03:56AM

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

S.A.N June 18, 2014 12:15PM

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

Валентин Бартенев June 18, 2014 04:06AM

Re: proxy cache key и fastcgi cache key

Валентин Бартенев January 10, 2014 07:54AM

nginx и RFC

Gena Makhomed January 13, 2014 07:44PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 146
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready