Исследователи из Французского государственного института исследований в области информатики и автоматики (INRIA) опубликовали детальный отчет о новых багах, связанных с работой 64-битных шифров Triple DES (3DES) и Blowfish. Эксплуатацию обнаруженных проблем исследователи назвали атакой Sweet32. Данный способ позволяет восстановить небольшие части защищенного TLS (HTTPS) трафика в ходе man-in-the-middle атаки. К примеру, это могут быть cookie, которые применяются при аутентификации.
Сравнительно недавно различные компании и разработчики браузеров отказались от использования потокового шифра RC4, который был взломан. Похоже, теперь шифры 3DES (используется при работе с TLS/SSL, шифрует трафик HTTPS/TLS) и Blowfish (в основном используется VPN-решениями) может ждать такая же судьба.
Исследователи пишут, что атака Sweet32 – это классическая коллизионная атака, о существовании которых известно уже не один десяток лет. Однако в контексте 64-битных шифров такие атаки всегда обсуждались лишь теоретически, хотя к более слабым шифрам их уже применяли на практике. По сути, группа из INRIA разработала практический метод коллизионных атак для 64-битных шифров, который был протестирован в лабораторных условиях, а затем описан в докладе.
Для осуществления атаки на практике понадобится соблюдения ряда условий. Во-первых, атакующий должен иметь возможность прослушивать трафик, которым обмениваются жертва и сервер, то есть понадобится заранее реализовать MitM-атаку. Во-вторых, сервер, работающий с 3DES и Blowfish должен функционировать в режиме CBC (Cipher Block Chaining). В-третьих, сервер должен поддерживать длительные TLS-сессии и допускать передачу большого числа запросов.
В итоге исследователи сделали вывод, что для атак Sweet32 уязвимы только 1-2% трафика. Обманчиво небольшое значение, но речь идет обо всем мировом трафике в целом, так что опасность Sweet32 не стоит недооценивать.
Чтобы лучше оценить масштаб проблемы, исследователи проверили первые 10 000 сайтов из топа Alexa. Удалось обнаружить 11 483 различных HTTPS-сервера, и только 226 из них (1,9%) работали с 3DES, а поддерживать длительное соединение, позволяющее осуществить более 800 000 000 запросов, смогли только 72 сервера (0,6%).
Если все условия соблюдены, подходящий и уязвимый сервер найден, остается внедрить на клиентскую сторону вредоносные JavaScript файлы, которые будут засыпать сервер огромным числом запросов, необходимых для атаки. Внедрить файлы можно, например, посредством вредоносной рекламы или малвари. Запросы, которые инициирует JavaScript, обычно сопровождаются HTTP cookie файлами, которые HTTPS-соединения зачастую используют для аутентификации клиента. Если слать их достаточно долго (исследователи говорят о 30-38 часах и 785 ГБ трафика для 3DES), рано или поздно можно «поймать» коллизию, которая позволит извлечь cookie-файл. С VPN и Blowfish ситуация обстоит почти таким же образом: атака на OpenVPN потребовала 18 часов и 705 Гб трафика для восстановления 16-битного аутентификационного токена.
Также как и в случае с RC4, исследователи рекомендуют компаниям и разработчикам отказаться от использования небезопасных шифров. Проект OpenSSL уже объявил, что в билде OpenSSL 1.1.0, который готовится к выпуску, поддержка 3DES будет удалена. В версию OpenVPN 2.3.12 будет встроено предупреждение о ненадежности Blowfish. Также был обновлен код веток OpenSSL 1.0.2 и 1.0.1, здесь 3DES оставили, но «понизили в ранге» — перевели из группы high в medium.
С докладом исследователей INRIA можно ознакомиться здесь (PDF). Также группа собирается выступить с этим исследованием на конференции ACM CCS, которая состоится в октябре 2016 года в Австрии.