[PATCH] Disable SSL renegotiation (CVE-2009-3555).

Maxim Dounin mdounin at mdounin.ru
Mon Nov 9 13:10:27 MSK 2009


Hello!

On Mon, Nov 09, 2009 at 11:02:17AM +0300, Igor Sysoev wrote:

> On Mon, Nov 09, 2009 at 04:40:45AM +0300, Maxim Dounin wrote:
> 
> > Hello!
> > 
> > [...]
> > 
> > > > Думаю, правильным решением будет просто дропать соединение в 
> > > > ngx_ssl_info_callback() по прописанному в патче условию.
> > > 
> > > Новый патч, который делает это.
> > 
> > Новый патч.  На этот раз renegotiation запрещён только для 
> > серверных соединений.
> > 
> > Для клиентских соединений не трогаем, ибо это без нужды ломает 
> > proxy_pass на https бекенды сконфигурированные для запроса 
> > сертификатов через renegotiation (e.g. Apache + per-location 
> > SSLVerifyClient).  Без нужды - потому как сертификат бекенда nginx 
> > всё равно не проверяет.
> > 
> > Следует иметь ввиду что использование openssl 0.9.8l на любой из 
> > сторон подобные конфигурации так или иначе сломает.
> 
> Я думаю, можно запрещать renegotiation для всего, поскольку сам
> nginx тоже не используется клиентский сертификат при работе с бэкендом.

Проблема в том что в результате nginx просто не может работать с 
бекендами, на которых сказано:

...
SSLVerifyClient      none

<Location /test/>
SSLVerifyClient      optional
</Location>
...

Про попытке запроса к /test/ апач запрашивает renegotiation - и 
привет.  Причём соединение виснет и по info callback'у это не 
ловится.  IMHO нет смысла ломать без нужды.

Maxim Dounin

p.s. Для серверных соединений ещё теоретически остаётся проблема 
Server Gated Certs (SGC) при работе со старыми браузерами с 
экспортными ограничениям, но вот на это IMHO стоит забить.





More information about the nginx-ru mailing list