Одним из самых главных на конференции Black Hat 2013 стал доклад (pdf) о новом методе атаки на HTTPS.
Новая атака называется BREACH, что расшифровывается как “Browser Reconnaissance and Exfiltration via Adaptive Compression of Hypertext” (браузерное зондирование и эксфильтрация через адаптивную компрессию гипертекста).
BREACH относится к типу атак с оракулом, когда по длине шифровки мы можем догадаться о ее содержимом. Первым в истории примером атаки с оракулом была расшифровка фашистских шифрограмм во время Второй мировой. Фашисты шифровали текст по криптоблокноту, заменяя каждый символ. При этом в начале сообщения указывался отправитель шифровки, с указанием его звания. Немцы не догадались стандартизировать размер этого поля, так что сообщение полковника (Oberst) можно было отличить от сообщения обер-лейтенанта (Oberleutnant) просто по длине этого поля.
Метод BREACH использует точно такую же технику для извлечения паролей и другой ценной информации из HTTPS-трафика, сжатого архиватором DEFLATE перед шифрованием. Атакующий «тестирует» цель тысячами входных значений, которые должны попасть в заархивированный и зашифрованный трафик, вместе с секретной информацией.
Затем мы сравниваем результат — и видим, в каких случаях заархивированные фрагменты были меньше по размеру. Например, пример из четырех попыток пробирования в таблице дает возможность сделать вывод, что символ a является правильной попыткой, несмотря на то, что результаты с b сжаты лучше.
Это значит, что архиватор нашел соответствие между поданными нами данными и другим контентом, который уже содержался в трафике. Таким образом, можно расшифровать секретный токен пользователя, фрагмент «куков» или нечто подобное.
Из алгоритма работы BREACH понятно, что перед такой атакой уязвимы все сайты, которые используют SSL/TLS шифрование с предварительным сжатием трафика и при этом позволяют отправлять на сайт пользовательские запросы произвольного содержания (например, поисковые запросы).
Необходимым условием является также возможность заманить жертву на сайт, который контролируется атакующим, в тот момент, когда у жертвы открыта HTTPS-сессия с сайтом, который мы «тестируем». Естественно, нужна еще и возможность перехватывать зашифрованный трафик пользователя.
Необходимая конфигурация для атаки
BREACH присоединяется к числу предыдущих методов взлома HTTPS, таких как Lucky 13, BEAST и CRIME.
Нужно заметить, что идею, реализованную в BREACH, предсказали авторы CRIME (см. их презентацию на странице 39). Но сейчас эту идею доработали до практической реализации. Как было показано на Black Hat, вскрытие SSL-соединения методом BREACH осуществляется за 30 секунд.
Разработчики фреймворка Django вчера выпустили предупреждение об опасности атаки BREACH на CSRF-токены в Django, если на сервере активировано сжатие GZip.