Let's Encrypt опубликовал описание атаки и план по устранению проблемы
Сервис Let’s Encrypt опубликовал описание уязвимости, из-за которой сегодня утром был отключен метод проверки владения доменом TLS-SNI-01. Проблема была не на стороне Let’s Encrypt и была вызвана предоставлением излишних полномочий на некоторых хостингах.
Уязвимость позволяла получить сертификат на чужой домен, обслуживаемый на том же совместном хостинге в рамках одного виртуального хоста, доступного через тот же IP, что и сайт атакующего. При этом уязвимость затрагивает только хостинги, на которых на одном IP поднято несколько виртуальных хостов и пользователю предоставлены средства для загрузки в настройки http-сервера сертификатов с произвольным именем домена без подтверждения владения этим доменом.
Если атакующий имеет доступ к хостинг-окружению, что и сайт жертвы (например, «example.com»), то он может запустить клиент ACME, инициировать проверку TLS-SNI-01, получить случайный токен, сгенерировать проверочный сертификат и загрузить его для домена «токен.acme.invalid» в конфигурацию общего web-сервера. Далее в рамках процедуры проверки сервер ACME определит IP-адрес домена example.com и отправит на него HTTPS-запрос проверочного домена «токен.acme.invalid» с использованием расширения SNI. Http-сервер провайдера на данный запрос вернёт загруженный атакующим сертификат, что для ACME-сервера станет подтверждением владения доменом, хотя фактически атакующий не контролирует домен example.com.
Разработчики Let’s Encrypt намерены вернуть поддержку TLS-SNI-01 как только будут абсолютно уверены в безопасности предпринятых мер защиты. Пока в качестве пути для решения проблемы называется работа с хостинг-провайдерами, у которых используются недостаточно надёжные механизмы контроля за доменами пользователей. Представители Let’s Encrypt уже связались с провайдерами, у которых проявляется проблема, и согласовывают пути по устранению уязвимости. В течение 48 часов будет представлен список проблемных провайдеров и связанных с ними IP-адресов. После завершения формирования списка, поддержка TLS-SNI-01 будет возвращена для всех адресов, за исключением чёрного списка.
Напомним, что метод TLS-SNI-01 позволяет выполнить проверку через обращение к хосту по HTTPS (443 порт). Альтернативными методами проверки являются http-01 (проверка по HTTP через 80 порт) и dns-01 (проверка при помощи DNS). При использовании TLS-SNI-01 ACME-сервер генерирует случайный токен и возвращает его клиенту. Клиент ACME использует токен для создания самоподписанного сертификата, который генерируется для несуществующего домена (например, 773c7d.13445a.acme.invalid). Далее клиент настраивает http-сервер для использования этого сертификата для данного фиктивного проверочного домена. ACME-сервер определяет IP-ардес реального проверяемого домена, инициирует TLS-соединение и обращается к фиктивному домену (773c7d.13445a.acme.invalid), используя TLS-расширение SNI. Если web-сервер вернул сертификат, содержащий данное имя хоста, то считается, что клиент подтвердил контроль над доменом и ему может быть выдан сертификат для реального проверяемого домена.
© OpenNet