Re: image_filter и хацкеры.

Igor Sysoev igor на sysoev.ru
Сб Мар 31 16:39:59 UTC 2012


On Sat, Mar 31, 2012 at 07:34:26PM +0400, Михаил Монашёв wrote:
> Здравствуйте, Igor.
> 
> >> Есть  проблема  с  непониманием  юзерами  происходящего.  Если  кто-то
> >> вставляет  на  сайт картинку с внешнего сайта, а вебсервер этого сайта
> >> вдруг  начинает  вместо  картинки  выдавать  запрос  на  ввод логина и
> >> пароля,  то  юзеры  вбивают  туда  свою  логины и пароли, отправляя их
> >> нехорошим юзерам.
> >> 
> >> Проблема решается через
> >> http://nginx.org/ru/docs/http/ngx_http_image_filter_module.html ,
> >> когда  все  картинки,  вместо отдачи напрямую, проксируются с внешнего
> >> сервера  и  проверяются,  что они картинки, а не запрос на авторизацию
> >> или вирусня какая.
> >> 
> >> Но  возникает  другая  проблема.  Хакер  может  передавать нам урл, по
> >> которому пойдёт вебсервер за картинкой. Это чревато следующим:
> >> 
> >> 1) полученная  картинка  может  быть  огромной  и  libgd  не сможет её
> >> переварить;
> >> 
> >> 2)  url  может  вести  в  нашу  внутреннюю  подсеть и слать туда левые
> >> запросы не хотелось бы.
> >> 
> >> 3)  nginx начинает использоваться, как досилка на хорошем канале. Ведь
> >> достаточно  в запрашиваемом урле менять один символ и nginx полезет по
> >> этому  урлу.  Сценарий  такой.  Вставляется  много  картинок с разными
> >> урлами  на  много  страниц  и  потом  на каждую страницу пригонятся по
> >> парочке  юзеров.  Они  все  шлют запросы к nginx-у, а тот фигачит их с
> >> нашего  ip по жертве. Абузы от правайдеров точно будут приходить после
> >> таких  атак.  Конечно  можно  в  firewall-е  настроить  ограничение на
> >> количество запросов к одному ip, но всёравно неприятный момент.
> >> 
> >> Как  избежать  описанных  проблем  или  может есть иной способ решения
> >> исходной проблемы с напрошенной авторизацией?
> 
> > В Политбюро, как известно, не дураки не сидят, поэтому в Рамблере при
> > произвольном проксировании картинок image-фильтр использовался совместно с
> > http://nginx.org/ru/docs/http/ngx_http_secure_link_module.html
> 
> А как secure_link спасал Политбюро от первой проблемы?

Размеры ?
http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_buffer

Ну и кроме того, можно только проверять, что ответ похож на картинку,
не используя libgd. Тогда размер буфера не критичен:

   image_filter test;

> P.S.
> Есть  подозрение,  что  соль  для  secure_link  можно  рассчитать.  На
> коротких ссылках и небольшой соли через rainbow tables, например. Или,
> если соль длинная, то на графических картах или через инет-сообщества.
> И  тогда  получится,  что  надо  менять  соль  и потом для всех ссылок
> пересчитывать хэш.

При большом желании, наверное, можно.


-- 
Igor Sysoev



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