Все статьи

Сертификат за вашим замочком уже объявил о странице, которую вы еще не запустили

7 мин чтения

Конкурент запускает точно такой же город через неделю после того, как команда тихо закончила его тестировать, еще до того, как была куплена хоть одна реклама или опубликована хоть одна ссылка. Оператор узнает от незнакомца на форуме, что кто-то изучал страницу входа, о существовании которой за пределами компании никто не должен был знать. Ни один из этих случаев не похож на утечку от сотрудника, взлом почты или простое везение. Оба обычно объясняются чем-то куда более обыденным: сертификатом безопасности, выпущенным автоматически и делающим ровно то, для чего он создан.

Этот механизм называется Certificate Transparency, и он не имеет никакого отношения ко взлому. Это публичный и постоянный реестр HTTPS сертификатов, существующий с 2018 года, бесплатный для поиска, и уже содержащий полную историю каждого имени хоста, которое этот сайт, или любой другой сайт, когда либо прятал за сертификатом, работающим без предупреждения браузера. Почти ни один оператор никогда не проверял собственную запись в этом реестре. Это и есть настоящий пробел, который стоит закрыть, не уязвимость в обычном смысле, а запись, которая все это время была публичной и никогда не рассматривалась как таковая.

Чем тихо становится сертификат в момент выпуска

С 2018 года публично доверенный сертификат, тот самый, из-за которого Chrome и Safari показывают простой замочек вместо предупреждения, обязан попасть в один из журналов Certificate Transparency, иначе эти браузеры ему не доверяют. Apple добавила такое же требование для Safari позже в том же году. Это делалось не специально против сайтов для взрослых или досок объявлений, а чтобы помешать кому-либо тайно выпустить поддельный сертификат для чужого домена и перехватывать его трафик. Побочный эффект в том, что журнал фиксирует и каждый настоящий сертификат, который сайт получает для себя, а эта запись никогда не задумывалась как приватная.

Журнал перечисляет поименно каждый хост, который реально покрывает сертификат. Сертификат, выпущенный для admin.example.com, показывает именно это имя, открытым текстом, навсегда. Неважно, была ли страница за этим именем когда-либо связана из меню сайта, упомянута в карте сайта или проиндексирована поисковиком. Удостоверяющий центр зафиксировал это в момент выпуска, будь то Let's Encrypt, Cloudflare или автоматический менеджер сертификатов, встроенный в большинство панелей хостинга, потому что все они подчиняются одним и тем же правилам браузеров.

Проверить это ничего не стоит и занимает меньше минуты. Бесплатный инструмент crt.sh позволяет любому ввести домен и увидеть все когда-либо зарегистрированные для него сертификаты, без аккаунта, без регистрации. Ввести домен конкурента работает точно так же, как ввести свой собственный, и именно это превращает рутинную техническую запись в бизнес-риск. Любой оператор, читающий это, может открыть эту страницу прямо сейчас и впервые увидеть, что его собственный домен уже рассказал всему миру.

Есть одно реальное исключение, и оно важно для всего, что следует дальше: сертификат с маской, покрывающий целый шаблон вроде *.example.com вместо точного имени, фиксирует в журнале только этот шаблон. Конкретные имена хостов, реально его использующие, newcity.example.com или staging.example.com, по имени в реестре не появляются. А отдельный сертификат для одного точного поддомена всегда появляется по имени. Именно эта разница и есть тот реальный рычаг, который есть у оператора, и к нему текст вернется дальше.

Что это реально дает постороннему, тремя конкретными способами

Первое, это время раскрытия расширения. Новая страница города или страны почти всегда строится и тестируется на собственном поддомене за дни или недели до того, как маркетинг готов ее объявить, а тестирование по HTTPS означает, что сертификат для нее выпускается именно в этот тихий период, а не в день запуска. Существуют бесплатные инструменты мониторинга, построенные на том же публичном журнале, которые предупреждают наблюдателя в течение минут или нескольких часов всякий раз, когда появляется новый сертификат для отслеживаемого домена. Конкуренту, уже знающему основной домен, который по определению публичен, не нужно угадывать имя нового города. Достаточно следить, и реестр выдаст его еще до выхода анонса.

Второе, это карта внутренних инструментов. Каталог такого размера обычно ведет страницу входа для персонала, очередь для тех, кто проверяет объявления, возможно отдельную панель для стороннего платежного провайдера. Если каждый из них получил собственный сертификат с собственным описательным именем, admin, moderation, billing, реестр теперь читается как план здания. Этот план и есть ровно та точка отсчета, с которой начинается взлом того типа, что уже разбирался здесь, где обычный способ проникновения, это не эффектный эксплойт, а повторно используемый пароль, подобранный к самой легко находимой странице входа. Поддомен с описательным именем сам по себе этот взлом не вызывает, но убирает один шаг, поиск самой страницы входа, который иначе замедлил бы атакующего.

Третье, это история, которую никто не может стереть. Журнал ничего не забывает. Тестовый поддомен трехлетней давности, недолговечная страница, созданная для партнера, которого больше нет, копия для стейджинга, которую разработчик собирался удалить и забыл: все это остается в реестре навсегда, даже после истечения срока сертификата, даже после удаления DNS записи, на него указывавшей. Поиск домена сегодня на crt.sh может выявить имена, о создании которых никто в нынешней команде не помнит. Опасность тут не в самой записи, а в возможности того, что сервер, отвечавший по этому адресу, все еще стоит там, никогда не обновлявшийся, потому что все решили, что удаление ссылки равносильно его отключению.

Ничего из этого не требует навыков, которые большинство назвало бы взломом. Нужно лишь знать, что существует бесплатная строка поиска, и ввести в нее имя домена, и именно поэтому стоит отнестись к этому серьезно, а не списывать на проблемы безопасности, которыми занимается кто-то другой.

Что ничего из этого не останавливает, и что реально помогает

Хочется прибегнуть к тем же инструментам, которые управляют тем, как сайт видят поисковики, но ни один из них здесь не работает. Решения, которые этот каталог уже принимает о том, каким краулерам видны какие страницы, идут через robots.txt и индексацию поисковиками, совершенно другую систему, о которой журнал сертификатов никогда не слышал. Блокировка бота, снятие страницы с индексации или пометка noindex никак не меняет того, появится ли ее сертификат в реестре, потому что реестр фиксирует сам сертификат, а не видимость страницы для поисковиков.

Также не существует законного способа получить сертификат, который работает в браузере посетителя без предупреждения, и при этом не попасть в реестр. Просьба к хостинг провайдеру или удостоверяющему центру сделать исключение, это просьба о том, чего не существует для публичного бизнеса: единственные сертификаты, освобожденные от регистрации, это те, что выпущены приватным внутренним удостоверяющим центром, которому браузеры обычных посетителей вообще не доверяют, что делает их бесполезными для всего, что клиенту или рекламодателю реально нужно открыть.

Переименование или удаление поддомена задним числом тоже ничего не исправляет, потому что старая запись в реестре остается ровно там, где была. Никакой задним числом очистки для уже зафиксированного таким образом имени не существует: единственное, что оператор реально может изменить, это то, что происходит начиная с этого момента.

Что реально работает, это описанный выше сертификат с маской, используемый осознанно. Внутренние инструменты, копии для стейджинга и все, что тестируется перед публичным запуском, должны работать за одним сертификатом, покрывающим целый шаблон, а не за новым сертификатом, выпускаемым по имени каждый раз. Большинство панелей хостинга и сетей доставки контента по умолчанию автоматически выпускают именной сертификат в момент добавления нового поддомена, потому что такая настройка по умолчанию проще в реализации, а не потому что она безопаснее; попросить хостинг провайдера или разработчика поменять именно эту настройку для всего, что не является публичной маркетинговой страницей, это конкретный, проверяемый вопрос, а не расплывчатая просьба улучшить безопасность.

Второе реальное решение, это перестать полагаться на малопонятное имя так, будто это замок. Странице входа, очереди модерации или панели биллинга нужна настоящая проверка пароля и, по возможности, ограничение известным набором офисных или рабочих адресов, независимо от названия, потому что имя никогда не было единственным способом их найти: существуют и другие технические методы выявления поддоменов сайта, не имеющие никакого отношения к сертификатам. Считать труднодоступное для угадывания имя главной защитой, это и есть настоящая ошибка, а не сам выбор сертификата. Выбор сертификата лишь решает, будет ли это имя отдано бесплатно еще до того, как его вообще понадобится искать.

Что реально проверить на этой неделе

Первый шаг ничего не стоит и занимает пять минут: открыть crt.sh, ввести собственный домен этого сайта и прочитать полный список всего, что найдется. Любая неузнанная запись заслуживает прямого вопроса тому, кто управляет хостингом: это все еще работает, и если да, почему публичный интернет знает этот адрес сегодня.

Для всего в этом списке, что окажется мертвой функцией, завершенным тестом или проектом для партнера, которого больше нет, исправление не сводится к удалению DNS записи. То, что стояло за этим адресом, следует отключить на уровне сервера, подтвердив, что он больше вообще не отвечает на запросы, а не оставлять тихо работать, убрав лишь указатель на него.

Для следующего запуска нового города или страны этап тестирования должен проходить под сертификатом с маской или под общим внутренним сертификатом, а не под сертификатом, выпущенным с точным именем этого города, чтобы реестр не объявлял о расширении раньше маркетинга. Это одна настройка, которую стоит уточнить у разработчика или хостинг провайдера перед следующим запуском, а не перестройка чего-то уже работающего.

Для каждой уже работающей сегодня внутренней страницы входа, модерации или биллинга вопрос не в том, трудно ли угадать ее название. Вопрос в том, стоит ли перед ней настоящий пароль и, где возможно, ограничение по адресу, независимо от названия, потому что именно это реально держится, когда само имя уже публично, а после проверки crt.sh оно, скорее всего, уже таковым и является.

Ещё по теме

9 мин чтения

Взломанный контент: что на самом деле происходит, когда скомпрометирован сам сайт, а не рекламодатель

Красное предупреждение Chrome выглядит одинаково: реклама показала малварь или кто-то вошёл с повторным паролем. Для второго случая Google объясняет точный порядок действий, который почти все путают местами.

Читать статью

8 мин чтения

DDoS-вымогательство: что на самом деле останавливает атаку на сайт объявлений для взрослых, а что нет

Требование выкупа, чтобы прекратить атаку, или сайт, который гаснет без предупреждения: что на самом деле удерживает каталог объявлений для взрослых онлайн, и почему оплата никогда не возвращает контроль.

Читать статью

9 мин чтения

Оффшорный хостинг «DMCA ignored»: что он на самом деле дает сайту объявлений для взрослых, а что нет

Оффшорные хостинги, обещающие игнорировать жалобы на удаление контента, реальный продукт для тех, от кого отказались обычные провайдеры. Обещание уже, чем кажется.

Читать статью

Попробуйте ДЕМО

Готовый сайт-каталог эскорт-услуг