[PATCH] Disable SSL renegotiation (CVE-2009-3555).
Maxim Dounin
mdounin at mdounin.ru
Mon Nov 9 14:08:00 MSK 2009
Hello!
On Mon, Nov 09, 2009 at 01:26:17PM +0300, Igor Sysoev wrote:
> On Mon, Nov 09, 2009 at 01:10:27PM +0300, Maxim Dounin wrote:
>
> > 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 нет смысла ломать без нужды.
>
> Ну так "SSLVerifyClient optional" всё равно работать не будет
> и без запрета renegotiation у всех участников.
Не будет в том смысле что сертификата не случится. А доступ к
соответствующим ресурсам - будет. Запрет на renegotiation доступ
ломает.
> > p.s. Для серверных соединений ещё теоретически остаётся проблема
> > Server Gated Certs (SGC) при работе со старыми браузерами с
> > экспортными ограничениям, но вот на это IMHO стоит забить.
>
> Насколько я понимаю, SGC работает без renegotiation.
Если верить README.GlobalID из поставки mod_ssl - он renegotiation
использует при первом запросе, проделывая его сразу после
исходного handshake'а (если видит сертификат с нужным
extKeyUsage). В последующих запросах renegotiation не
используется.
Я не смог под рукой найти ни одного браузера с экспортными
ограничениями - так что сам не проверял... :)
Maxim Dounin
More information about the nginx-ru
mailing list