Хакер #305. Многошаговые SQL-инъекции
Один из ведущих программистов Google Адам Лэнгли (Adam Langley) сравнил проверку по списку аннулированных SSL-сертификатов с допотопными и устаревшими технологиями защиты, как ремни безопасности в автомобилях. Ремень работает 99% времени, а именно — когда он не нужен. В случае реального ДТП он просто рвётся.
Так же и с сертификатами. На самом деле эта проверка совершенно не гарантирует пользователю защиту сайта от подмены, зато отнимает у браузера большое количество времени и тормозит установку соединения.
Когда браузер устанавливает соединение с сайтом по HTTPS, он принимает подписанный сертификат, который должен свидетельствовать, что данный домен действительно тот, за кого себя выдаёт. Эти сертификаты содержат ссылку на сервис, который находится под управлением центров сертификации (Certificate Authorities, CA) и даёт браузеру актуальную информацию.
Все основные десктопные браузеры обращаются к этим сервисам, чтобы проверить, не аннулирован ли сертификат. Существует два протокола/формата для этого: OCSP и CRL, но это не суть важно.
Проблема с этими проверками валидности сертификата в том, что браузер не может гарантировать, что он способен установить связь с сервисом центра сертификации. Поэтому если в результате такой проверки возвращается ошибка, то браузеры её просто игнорируют и загружают сайт, как ни в чём ни бывало. Примеры реакции некоторых браузеров в такой ситуации показаны здесь.
Получается, что злоумышленнику, который хочет предъявить поддельный сертификат, достаточно просто блокировать проверку на аннулирование сертификата браузером, способы известны.
Если же злоумышленник является владельцем сервера или имеет доступ к серверу, то он и вовсе может установить там сертификат от какого-нибудь альтернативного центра сертификации. Другими словами, все эти проверки на аннулирование имеют мало смысла в современных условиях и совершенно не предохраняют пользователя от загрузки вредоносного контента.
Бесполезность такой проверки очевидна, так зачем же тратить на неё время? Среднее по медиане время одной успешной проверки по OCSP составляет около 300 миллисекунд, а среднее арифметическое — около секунды. Это тормозит загрузку страницы и заставляет владельцев сайтов отказываться от использования HTTPS, так что на самом деле у таких проверок одни недостатки. Есть ещё вопросы с приватностью, потому что центр сертификации получает IP-адреса всех посетителей сайта.
В связи со всем вышесказанным, компания Google планирует отключить онлайновые проверки аннулированных сертификатов в будущих версиях Chrome. Правда, насчёт сертификатов высшего класса EV окончательное решение пока не принято.
Вместо стандартной методики браузер Chrome теперь будет использовать офлайновую базу аннулированных сертификатов и обновлять её через софтверные апдейты. Недостаток такого метода только в том, что пользователю нужно перезагрузить браузер. Ну а преимущество понятно — сайты начнут грузиться быстрее, а браузер Chrome сам возьмёт на себя часть функций центра сертификации.
Вот инструмент для просмотра и парсинга списка аннулированных сертификатов Chrome: https://github.com/agl/crlset-tools.