17 октября специалисты выяснили: у восьми промежуточных удостоверяющих центров, принадлежащих индийской eMudhra Limited, приватные ключи создавались при слабом уровне энтропии. Иными словами, такие ключи поддавались вычислению прямо по сертификатам — а они открыты для всех. Получив доступ к подобным ключам, злоумышленник мог штамповать сертификаты, и уязвимый софт считал их подлинными. Браузеры eMudhra заблокировали, сама фирма назавтра сертификаты отозвала и объявила об уходе с рынка сертификационных услуг. Компания эта в Индии заметная — цифровые подписи и сертификаты от неё используют в том числе госструктуры и банки, так что скандал быстро перерос рамки узкого круга технарей.
Почему это коснулось Ethereum
Валидаторы Ethereum — машины, которые вкладывают ETH в защиту сети и получают за это комиссии за предложенные блоки. Часть из них выходит в интернет к сторонним сервисам и проверяет подлинность собеседника через цифровые сертификаты. В Java, на которой держатся Teku и Hyperledger Besu, отзыв сертификата по умолчанию не проверяется. Из-за этого Docker-образы Teku доверяли опасным сертификатам даже тогда, когда браузеры уже их отвергли. А Docker-образы — это готовые сборки, применяемые множеством операторов, поэтому масштаб проблемы вышел шире ожидаемого.
Что грозит валидаторам
Тот, кто встал между валидатором и сервисом, к которому тот обращается, мог прикинуться этим сервисом. В отчёте Teku по безопасности сказано: обманутый валидатор был способен предложить блок, уводящий комиссии на адрес злоумышленника. Ещё один сценарий, самый опасный, — поддельный внешний подписант, то есть отдельный сервис с ключами валидатора: он мог выдать подписи для смены получателя вознаграждений. При этом в Teku уточнили: обычный узел в основной сети не задет и действий не требует, а свидетельств эксплуатации уязвимости не появилось. Первой на проблему обратила внимание Consensys Diligence, партнёр Teku по безопасности.
Что выпустили Besu и Teku
Во вторник Teku выкатил релиз 26.10.3. А днём раньше Hyperledger Besu — софт, который проводит транзакции Ethereum, — представил сборку 26.10.2. В обеих версиях прописан запрет: сертификатам, завязанным на eMudhra, внутри Docker-образов больше не доверяют. Тем, кто гоняет Teku или Besu прямо на своей машине, без Docker, от апдейта Ethereum-клиента толку мало — им придётся самим обновить Java, ведь список доверенных сертификатов Java патч не трогает. Систему Java, стоящую на хосте, свежие Docker-образы тоже не лечат. Сложнее всего тем, у кого ещё стоит Java 26: Teku уведомил, что эту ветку сняли с поддержки и заплатки для неё не будет, так что таким операторам придётся переезжать на Java 25.
А что будет с криптотуризмом?
История с eMudhra особенно важна — в сугубо практическом смысле — для приезжих криптотуристов, цифровых кочевников и мелких операторов, которые приезжают в Индию поднимать валидаторы или пользоваться локальными криптосервисами. Последние годы страна старается выглядеть удобной площадкой для блокчейн-экспериментов. И заезжий специалист смотрит не только на скорость интернета и мягкость регулятора — ему важно и то, насколько бережно здесь обходятся с ключами, сертификатами и прочей технической обвязкой. А когда удостоверяющий центр национального масштаба покидает рынок после того, как его ключи оказались вычислимы, у криптотуриста возникает конкретный вопрос: чем именно он пользуется и обновлён ли его стек.
Эффект будет не в том, что все бросятся сворачиваться и уезжать. Скорее приезжие станут придирчивее выбирать провайдеров, чаще поглядывать в сторону международных сервисов и ждать от местных площадок внятных объяснений по безопасности. Индийскому рынку это добавит хлопот: придётся доказывать, что случай с eMudhra — исключение, а не привычка. Иначе часть аудитории, которую тянет сюда дешёвая инфраструктура и лояльное регулирование, начнёт объезжать страну стороной во всём, что связано с ключами и сертификатами.
Сертификат — это подтверждение, что программа говорит с нужным сервисом. Сбой в такой цепочке способен стоить валидатору вознаграждений. Teku и Hyperledger Besu среагировали оперативно и залатали дыру в своих Docker-образах. Но кому-то из операторов ещё предстоит вручную обновить Java, а кто-то и вовсе сидит на версии, снятой с поддержки. Для Ethereum это эпизод неприятный, однако управляемый.