Экстренное обновление Go версий 1.27.3 и 1.26.10 заставляет программы на языке отклонять TLS-цепочки, проходящие через восемь промежуточных ключей центра сертификации. Для разработчиков и владельцев сервисов это означает вполне прикладной риск: после пересборки клиента или бэкенда на новой версии Go он может перестать подключаться к сайту, API или внутреннему сервису с затронутым сертификатом.
Релизы вышли 20 октября по срочному процессу безопасности, сообщает The Hacker News. Команда Go не назвала удостоверяющий центр и ограничилась формулировкой о «конкретных проблемах безопасности» в его работе. Но участник обсуждения сопоставил опубликованные SHA-256-хэши ключей с сертификатами eMudhra, выпускающей сертификаты под брендом emSign. Независимой проверки этого сопоставления в публикации нет, поэтому формально речь идёт о вероятной, а не подтверждённой атрибуции.
В список попали восемь промежуточных CA: шесть для TLS и два для подписи кода. Предположительно это EM DV TLS CA - G3B и G3C, EM OV TLS CA - G3B и G3C, EM EV TLS CA - G3B и G3C, а также EM OV CS CA - G3B и G3C. Шесть TLS-промежуточных сертификатов связывают с корнем emSign Root TLS CA - G3, а два ключа для code signing — с emSign Root CS CA - G3.
Сработавшее экстренное обновление Go не похоже на обычное обновление списка доверенных корней. Верификатор хэширует публичный ключ каждого сертификата в цепочке, а не сам сертификат. Поэтому блокировка должна сработать и для кросс-подписанной копии того же промежуточного сертификата: другая подпись корневого центра не меняет публичный ключ. При отказе приложение получает ошибку x509: no valid chains built.
Фильтр работает в собственном TLS-верификаторе Go, а также в ветках для macOS и Windows, где часть проверки передаётся операционной системе. Настройки для его отключения в патче нет. Судя по устройству изменений, проверка распространяется и на приложения с собственным набором доверенных корней. Значит, даже закрытая инфраструктура, которая сознательно доверяет одному из этих промежуточных ключей, рискует сломать соединение после обновления и пересборки.
Это принципиально отличает ситуацию от браузеров. Встроенный в Go механизм проверки сертификатов, как предупреждает документация, не выполняет проверку отзыва сертификатов и не загружает браузерные списки блокировок. Chrome, Firefox и другие клиенты могут получить новое правило через собственную инфраструктуру обновлений, а Go-приложение сохраняет прежнее поведение до тех пор, пока его не пересоберут с новой версией языка. Проекты уже начали это делать: например, Bluesky обновил сборку своего проекта indigo в день выхода релизов.
За два дня до патча Go, 17 октября, Mozilla добавила шесть промежуточных сертификатов, выпущенных emSign Root TLS CA - G3, в OneCRL — список блокировок Firefox. Однако публичный баг Mozilla закрыт, названия шести сертификатов в записи не раскрыты, а причина решения не объяснена. Нет и подтверждения аналогичных действий со стороны Chrome, Apple или Microsoft. Совпадение по корневому центру и времени выглядит показательным, но публичной технической картины инцидента пока нет.
Для команд на Go здесь нет универсального обходного пути. Поддерживаемые ветки следует обновить без затягивания, но перед массовой пересборкой стоит проверить критичные внешние интеграции: платёжные шлюзы, SSO-провайдеры, B2B API, агентские прокси и внутренние endpoint'ы. Полезно отдельно протестировать сервисы, использующие клиентские сертификаты или собственное хранилище корней. Если цепочка затрагивает заблокированный ключ, исправление находится на стороне владельца сервиса: ему потребуется перевыпустить сертификат через другой промежуточный CA.
Версии Go 1.25 и старше уже не поддерживаются и патча не получат. При этом перейти на актуальный релиз — не значит автоматически восстановить доступ к проблемному ресурсу: новые бинарники будут строже, а старые останутся с прежней логикой проверки. Для эксплуатации это неприятная развилка между безопасностью и доступностью, которую лучше обнаружить в тестовом контуре, а не после ночного деплоя.
Главный открытый вопрос — что именно произошло у центра сертификации и почему участники экосистемы действуют почти без публичных пояснений. Срочный статус обычно резервируется Go для угроз целостности экосистемы или активно эксплуатируемых проблем с тяжёлыми последствиями. Пока подробностей нет, экстренное обновление Go стоит воспринимать как сигнал для инвентаризации TLS-зависимостей, а не как очередной минорный патч. Исходные детали и хэши ключей приведены в материале .


