21.10.2026 — USN-8944 (CVE-2026-111943) — компрометация закрытых ключей промежуточных сертификатов eMudhra {#CVE-2026-111943}

Идентификатор CVE (CVE ID): CVE-2026-111943 — используется для отслеживания исправления в Go (crypto/x509).

Ссылка на CVE: <https://www.cve.org/CVERecord?id=CVE-2026-111943>.

Ссылка на NVD: <https://nvd.nist.gov/vuln/detail/CVE-2026-111943>.

Уведомления Ubuntu: USN-8944-1, USN-8944-2.

Исходный отчет {#original-report-CVE-2026-111943}

eMudhra Intermediate CA Compromise.

Краткое описание {#brief-description-CVE-2026-111943}

Закрытые ключи восьми промежуточных сертификатов удостоверяющего центра eMudhra были сгенерированы некорректно: каждый ключ P-384 представляет собой целое число меньше 256 и восстанавливается перебором не более чем 256 значений. Шесть сертификатов предназначены для выпуска TLS-сертификатов, два — для подписи кода. Эти сертификаты связаны с корневыми сертификатами emSign ECC Root CA - G3 (eMudhra) и Comodo AAA Services root (Sectigo, кросс-подпись).

Злоумышленник, восстановивший закрытый ключ, может выпустить TLS-сертификат для любого домена и выдать себя за любой HTTPS-ресурс для клиентов, которые доверяют этим цепочкам. Компрометация затрагивает проверку подлинности сервера. Она не позволяет ретроспективно расшифровать уже переданный трафик, если соединение использовало прямую секретность (forward secrecy).

Затронутые технологии {#technologies-affected-CVE-2026-111943}

Проблема затрагивает хранилища доверенных сертификатов (системные пакеты ca-certificates и собственные хранилища сред выполнения и приложений) и проверку цепочек сертификатов TLS.

Уязвимые продукты и версии {#vulnerable-products-and-versions-CVE-2026-111943}

Проблема затрагивает продукты, которые доверяют скомпрометированным цепочкам и не отклоняют их при проверке отзыва сертификатов или проверке по журналам Certificate Transparency (CT).

Уязвимые и исправленные версии Debian, Ubuntu, RHEL и производных, Alpine Linux, openSUSE, SLES, distroless-образов, Java, Go, Python, Node.js, браузеров и продуктов на основе Microsoft Windows (Kosmos и SPM) в Cloud Marketplace приведены в разделе Безопасная версия уязвимого продукта или патч.

Разработчик {#vendor-CVE-2026-111943}

eMudhra — удостоверяющий центр.

Уровень опасности согласно CVSS {#attack-vector-and-severity-level-CVE-2026-111943}

На момент подготовки бюллетеня оценка CVSS для CVE-2026-111943 не присвоена. Оценки связанных уязвимостей в отдельных продуктах не являются оценкой инцидента в целом.

<!-- Перед публикацией подтвердить актуальный статус оценки CVSS в NVD. -->

Рекомендации по обнаружению уязвимости {#recommendations-for-vulnerability-detection-CVE-2026-111943}

Чтобы проверить, доверяет ли клиент скомпрометированным цепочкам, выполните запросы к тестовым адресам. Первый адрес использует цепочку eMudhra, второй — цепочку с кросс-подписью Sectigo:

<code>curl https://dv-g3b-emudhra.we-have-a-problem.com/
curl https://dv-g3b-aaa-emudhra.we-have-a-problem.com/</code>

Ошибка проверки сертификата для обоих адресов означает, что клиент не доверяет скомпрометированным цепочкам. Успешный ответ хотя бы для одного адреса означает, что клиент им доверяет. Ошибки DNS, сетевого соединения или таймауты не подтверждают защиту. Не отключайте проверку сертификатов параметрами -k или --insecure.

curl проверяет хранилище сертификатов, настроенное для его сборки. Приложения с собственным хранилищем (Java, Python с certifi, Node.js, Go со встроенным набором сертификатов) и контейнерные образы проверьте запросами к тем же адресам из самого приложения или контейнера.

Определите версии пакетов и сред выполнения следующими командами, затем сравните их с исправленными версиями из раздела Безопасная версия уязвимого продукта или патч:

#| || Продукт | Команда || || Debian, Ubuntu | dpkg-query -W ca-certificates || || RHEL, CentOS, Rocky Linux, AlmaLinux, Fedora, Amazon Linux 2023, openSUSE, SLES | rpm -q ca-certificates || || Alpine Linux | apk info -v 2>/dev/null \| grep ca-certificates || || Go | go version, для собранного приложения — go version <путькбинарному_файлу> || || Python | python3 -m pip show certifi, python3 -m pip --version || || Node.js | node --version || |#

Чтобы проверить наличие корневых сертификатов в хранилище Java, выполните команду:

<code>keytool -list -v -cacerts -storepass changeit | grep -iE 'Alias name:.*(emsign.*ecc.*g3|aaa)'</code>

Для Java 8 вместо -cacerts укажите -keystore "${JAVA_HOME}/jre/lib/security/cacerts". Если пароль хранилища отличается от стандартного, используйте свой пароль. Наличие записи означает, что корневой сертификат присутствует в хранилище; проверьте, блокируется ли скомпрометированная цепочка самим приложением.

Безопасная версия уязвимого продукта или патч {#safe-version-CVE-2026-111943}

Обновите хранилище сертификатов до исправленной версии. Если исправление недоступно, примените временное решение для своего продукта.

{% note warning %}

Временные решения для Linux исключают из доверия корневые сертификаты Comodo AAA Services root и emSign ECC Root CA - G3 целиком. После этого могут перестать проверяться и легитимные сертификаты, выпущенные под этими корневыми сертификатами. Перед применением оцените влияние на свои приложения. Не отключайте проверку TLS-сертификатов для обхода ошибок.

{% endnote %}

Для контейнеров примените обновление или временное решение при сборке образа, затем пересоберите образ и разверните его заново. Проверьте отдельно системное хранилище и хранилища сред выполнения внутри контейнера.

Исправления для других продуктов с собственными хранилищами (Rust, Electron, Deno, Composer, Perl и других), а также для macOS, Windows, FreeBSD и NetBSD приведены на странице инцидента.

{% cut "Debian, Ubuntu" %}

#| || Релиз | Уязвимые версии ca-certificates | Исправленная версия || || Ubuntu 26.10 | До 20260816ubuntu0.26.10.1 | 20260816ubuntu0.26.10.1 (USN-8944-1) || || Ubuntu 26.04 LTS | До 20260816ubuntu0.26.04.1 | 20260816ubuntu0.26.04.1 (USN-8944-1) || || Ubuntu 24.04 LTS | До 20260816ubuntu0.24.04.1 | 20260816ubuntu0.24.04.1 (USN-8944-1) || || Ubuntu 22.04 LTS | До 20260816ubuntu0.22.04.1 | 20260816ubuntu0.22.04.1 (USN-8944-1) || || Ubuntu 20.04 LTS | До 20240203~20.04.1ubuntu0.1~esm2 | 20240203~20.04.1ubuntu0.1~esm2 (USN-8944-2, Ubuntu Pro) || || Ubuntu 18.04 LTS | До 202402031ubuntu0.18.04.1+esm3 | 202402031ubuntu0.18.04.1+esm3 (USN-8944-2, Ubuntu Pro) || || Ubuntu 16.04 LTS | До 202402031~16.04.1~esm3 | 202402031~16.04.1~esm3 (USN-8944-2, Ubuntu Pro) || || Ubuntu 14.04 LTS | До 20230311~14.04.1~esm3 | 20230311~14.04.1~esm3 (USN-8944-2, Ubuntu Pro) || || Debian unstable (sid) | До 20260816+nmu1 | 20260816+nmu1 || || Debian 13 | До 20250419+deb13u1 | 20250419+deb13u1 || || Debian 12 | До 20250419~deb12u2 | 20250419~deb12u2 || || Debian 11 | Все, включая 20250419~deb12u1~deb11u1 | На момент подготовки бюллетеня не выпущена || || Debian 10 и более ранние | Все | Не ожидается: релиз не поддерживается || |#

Чтобы обновить пакет, выполните команды от имени root:

<code>apt update && apt install --only-upgrade ca-certificates</code>

Для Ubuntu 14.04–20.04 LTS без Ubuntu Pro обновление не устраняет проблему. Например, в Ubuntu 20.04 обновление до 20240203~20.04.1 из основного репозитория добавляет корневой сертификат emSign ECC Root CA - G3. В этом случае, а также для Debian 11 и более ранних релизов примените временное решение.

Чтобы временно исключить корневые сертификаты из доверенных, выполните команду от имени root:

<code>sed -i \
  -e 's|^mozilla/emSign_ECC_Root_CA_-_G3.crt|!&|' \
  -e 's|^mozilla/Comodo_AAA_Services_root.crt|!&|' \
  /etc/ca-certificates.conf && update-ca-certificates</code>

{% endcut %}

{% cut "RHEL, CentOS, Rocky Linux, AlmaLinux, Fedora, Amazon Linux 2023" %}

#| || Дистрибутив | Уязвимые версии ca-certificates | Исправленная версия || || Fedora 43–46 | До 2026.2.92v9.0.319 | 2026.2.92v9.0.319 || || CentOS Stream 8, 9, 10 | До 2026.2.92v9.0.319 | 2026.2.92v9.0.319: исправление добавлено в исходный код пакета, сборка ожидается || || RHEL 6–10 | Все | На момент подготовки бюллетеня не выпущена, подробности — в RHSB-2026-012 || || Rocky Linux, AlmaLinux, Amazon Linux 2023 | Все | На момент подготовки бюллетеня не выпущена || || CentOS 7 | Все | Не ожидается: дистрибутив не поддерживается || |#

Чтобы временно исключить корневые сертификаты из доверенных, выполните команды от имени root:

<code>d=/etc/pki/ca-trust/source/blocklist; [ -d "$d" ] || d=/etc/pki/ca-trust/source/blacklist
trust extract --overwrite --format=pem-bundle \
  --filter='pkcs11:object=Comodo%20AAA%20Services%20root;type=cert' \
  "$d/Comodo_AAA_Services_root.pem" &&
trust extract --overwrite --format=pem-bundle \
  --filter='pkcs11:object=emSign%20ECC%20Root%20CA%20-%20G3;type=cert' \
  "$d/emSign_ECC_Root_CA_-_G3.pem" &&
update-ca-trust</code>

{% endcut %}

{% cut "Alpine Linux" %}

#| || Пакет | Уязвимые версии | Исправленная версия || || ca-certificates, ca-certificates-bundle | До 20261020-r0 | 20261020-r0 || |#

Если обновление недоступно, выполните временное решение от имени root:

<code>apk add ca-certificates &&
sed -i -e 's|^mozilla/emSign_ECC_Root_CA_-_G3.crt|!&|' \
  /etc/ca-certificates.conf && update-ca-certificates</code>

{% endcut %}

{% cut "openSUSE, SLES" %}

На момент подготовки бюллетеня исправленная версия ca-certificates не выпущена.

Чтобы временно исключить корневые сертификаты из доверенных, выполните команды от имени root:

<code>d=/etc/pki/trust/blocklist; [ -d "$d" ] || d=/etc/pki/trust/blacklist
trust extract --overwrite --format=pem-bundle \
  --filter='pkcs11:object=Comodo%20AAA%20Services%20root;type=cert' \
  "$d/Comodo_AAA_Services_root.pem" &&
trust extract --overwrite --format=pem-bundle \
  --filter='pkcs11:object=emSign%20ECC%20Root%20CA%20-%20G3;type=cert' \
  "$d/emSign_ECC_Root_CA_-_G3.pem" &&
update-ca-certificates</code>

{% endcut %}

{% cut "Distroless-образы" %}

#| || Образ | Уязвимые версии | Исправленная версия || || gcr.io/distroless/-debian13 | Содержат ca-certificates ниже 20250419+deb13u1 | Образы с ca-certificates 20250419+deb13u1 || || gcr.io/distroless/-debian12 | Содержат ca-certificates ниже 20250419~deb12u2. По состоянию на 22.10.2026 — все опубликованные образы, включая static, base, java, python3, nodejs | На момент подготовки бюллетеня не выпущена || || Chainguard (cgr.dev/chainguard/*) | Содержат ca-certificates ниже 20260909-r3 | Образы с ca-certificates 20260909-r3 || |#

В distroless-образах нет пакетного менеджера и командной оболочки, поэтому обновляйте хранилище сертификатов пересборкой приложения на актуальном базовом образе. Проверьте отдельно хранилища сред выполнения внутри образа: например, /etc/ssl/certs/java/cacerts для Java, встроенный набор Node.js и certifi для Python.

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

<code>FROM debian:12 AS certs
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates \
 && sed -i \
      -e 's|^mozilla/emSign_ECC_Root_CA_-_G3.crt|!&|' \
      -e 's|^mozilla/Comodo_AAA_Services_root.crt|!&|' \
      /etc/ca-certificates.conf \
 && update-ca-certificates

FROM gcr.io/distroless/static-debian12
COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
# ... сборка приложения</code>

Для Java-образов дополнительно удалите корневые сертификаты из хранилища cacerts на промежуточном этапе сборки:

<code>FROM gcr.io/distroless/java21-debian12 AS jks
FROM eclipse-temurin:21-jdk AS cacerts
COPY --from=jks /etc/ssl/certs/java/cacerts /cacerts
RUN keytool -list -v -keystore /cacerts -storepass changeit \
    | sed -n 's/^Alias name: //p' | grep -iE "emsign.*ecc.*g3|aaa" \
    | while read -r a; do keytool -delete -keystore /cacerts -storepass changeit -alias "$a"; done

FROM gcr.io/distroless/java21-debian12
COPY --from=cacerts /cacerts /etc/ssl/certs/java/cacerts
# ... сборка приложения</code>

{% endcut %}

{% cut "Java" %}

#| || Сборка JDK | Уязвимые версии | Исправленная версия || || OpenJDK (CVE-2026-91403) | 27.0.1, 25.0.5, 21.0.13, 17.0.21, 11.0.33, 8u512 и более ранние | Следующие обновления соответствующих веток: номера версий уточняйте у поставщика сборки || || Oracle JDK | Более ранние, чем исправленные | 27.0.1.0.2, 25.0.5.0.2, 21.0.13.0.2, 17.0.21.0.2, 11.0.33.0.2. Версию исправления для Java 8 уточняйте у поставщика || || OpenJDK из репозиториев ОС (Debian, Ubuntu, RHEL, Fedora), использующий системное хранилище | Определяется версией ca-certificates ОС | Исправление для соответствующей ОС || |#

Подробнее об исправлениях — в бюллетене OpenJDK и рекомендациях Oracle.

Хранилище сертификатов зависит от сборки JDK:

#| || Сборка | Хранилище | Запись emSign ECC Root CA - G3 | Запись Comodo AAA Services root || || Eclipse Temurin 17 и выше | Собственное: ${JAVAHOME}/lib/security/cacerts | cnemsigneccrootcag3,oemudhratechnologieslimited,ouemsignpki,cin [jdk] | Отсутствует || || Eclipse Temurin 8, 11; Microsoft Build of OpenJDK | Собственное: ${JAVAHOME}/lib/security/cacerts, для Java 8 — ${JAVAHOME}/jre/lib/security/cacerts | cn=emsigneccrootca-g3,o=emudhratechnologieslimited,ou=emsignpki,c=in | Отсутствует || || Azul Zulu, BellSoft Liberica, Axiom JDK | Собственное: ${JAVAHOME}/lib/security/cacerts | emsigneccrootcag3 [jdk] | comodoaaaca [jdk] || || Amazon Corretto, OpenJDK из репозиториев RHEL и производных | Системное: /etc/pki/ca-trust/extracted/java/cacerts | emsigneccrootca-g3 | comodoaaaservicesroot || || OpenJDK из репозиториев Debian и Ubuntu | Системное: /etc/ssl/certs/java/cacerts | debian:emsigneccrootca-g3.pem | debian:comodoaaaservicesroot.pem || |#

Для сборок с системным хранилищем примените исправление или временное решение для ОС: хранилище Java пересобирается вместе с системным. Для сборок с собственным хранилищем примените одну из следующих мер ко всем установленным средам выполнения Java.

Заблокируйте промежуточные сертификаты. Добавьте SHA-256-отпечатки 16 скомпрометированных промежуточных сертификатов и кросс-подписей в список заблокированных сертификатов JDK. Мера работает и для сборок с системным хранилищем. Выполните команды от имени root. Для Java 8 используйте файл ${JAVA_HOME}/jre/lib/security/blacklisted.certs:

<code>BLOCKED_CERTS="${JAVA_HOME}/lib/security/blocked.certs"
cp -p "${BLOCKED_CERTS}" "${BLOCKED_CERTS}.bak"
cat >> "${BLOCKED_CERTS}" <<'EOF'
42C4ACCD12C4F59597925E1A08A7A90102608543809308D50EC427E118BA1493
45A883F349AEDFD5F3A649B5498FFB121712BA8B448F3F2A91DBC5A766FCDDBE
98B896625C0C230ADEEC3EB2CF6AAD5001ECF9156A68644E82374CE5833BC25B
5F1DED4DD590AF74631290CF073B122A2AAC6A1FA479778A0BD43579BD832699
E7568FE6E12331F4FD7DE61DA4C7559D0F8EB192A218D4741A3BA75184333838
579480AEA166290BD3C643589E795FC0D0E54E86505D180F1DFF99EFD3199512
0164D7CEAE5BB909C272AF151FF44B1177AE9B47D9424B94F1D9558C30934D19
62B7F9868263F72F6911FC78CEAF72C1979158B7368BF648683BB2AA39B02E72
CB6E15165AC802E9B3F993F16C25D41F4E81C21EBDE71AE1B012AC00BF9C7C3F
7485B51C0ED192878FA1D2F948FB529AE1842CC5086C4B67F7BE5B2039DE9489
432EC25F0D28DE9006D97BF752F17BBB2CD41F669933FCB072D9A1148D0261F3
FD9D5C2DBBD4995AB69B8D50C439D9527B00529199C2FD01B2174EB58F07021F
9E39DE2881273ACC225A149C72BA3E0F51424963669AB633EE1DC7DF5DB067B4
A496E23AC0CAB8155FC9B117B97EAE368EFCBB9041AEC8804D5A308D2D01C2D8
4B2460A466F95FD40113BCDCCA2CEB29B3B093921DE45474DA7DF48874C630B1
84112972B8E59D14560AE7E7119654474AAD119990CF3722BFC1E3B91615E1FD
EOF</code>

Удалите корневые сертификаты из собственного хранилища cacerts. Укажите записи из таблицы выше. Для Java 8 вместо -cacerts используйте -keystore "${JAVA_HOME}/jre/lib/security/cacerts". Команды выполняются от имени root.

Например, для Eclipse Temurin 21:

<code>keytool -delete -cacerts -storepass changeit \
  -alias "cn_emsign_ecc_root_ca__g3,o_emudhra_technologies_limited,ou_emsign_pki,c_in [jdk]"</code>

Для Azul Zulu, BellSoft Liberica и Axiom JDK:

<code>keytool -delete -cacerts -storepass changeit -alias "emsigneccrootcag3 [jdk]"
keytool -delete -cacerts -storepass changeit -alias "comodoaaaca [jdk]"</code>

Включите проверку отзыва сертификатов. Добавьте в параметры запуска -Dcom.sun.net.ssl.checkRevocation=true -Dcom.sun.security.enableCRLDP=true. Мера требует доступа приложения к точкам распространения списков отзыва (CRL). При их недоступности TLS-соединения завершаются ошибкой, поэтому мера неприменима в изолированных сетях.

{% endcut %}

{% cut "Go" %}

#| || Продукт | Уязвимые версии | Исправленная версия || || Go (crypto/x509) | Ниже 1.26.10; 1.27.0–1.27.2 | 1.26.10, 1.27.3 || |#

После обновления Go пересоберите приложения.

Для временного решения на большинстве платформ достаточно исключить корневые сертификаты из системного хранилища средствами ОС. Если приложение использует собственный набор сертификатов (переменные окружения SSLCERTFILE, SSLCERTDIR или встроенный в бинарный файл набор), исключите из него Comodo AAA Services root и emSign ECC Root CA - G3.

{% endcut %}

{% cut "Python" %}

#| || Пакет | Уязвимые версии | Исправленная версия || || certifi | До 2026.10.19 | 2026.10.19 || || pip, содержит собственную копию certifi | До 26.2.2 | 26.2.2 || || uv | До 0.13.4 | 0.13.4 || || Модули стандартной библиотеки ssl, urllib | Определяется версией ca-certificates ОС | Исправление для соответствующей ОС || |#

Чтобы обновить пакеты в виртуальном окружении приложения, выполните команду:

<code>python3 -m pip install --upgrade certifi pip</code>

Для временного решения после исправления системного хранилища укажите его библиотеке requests вместо certifi. Путь зависит от ОС: например, /etc/ssl/certs/ca-certificates.crt для Debian, Ubuntu и Alpine или /etc/pki/tls/certs/ca-bundle.crt для RHEL и производных:

<code>export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt</code>

Для pip временного решения нет: переменная PIP_CERT не отключает встроенный в pip набор сертификатов. Обновите pip до версии 26.2.2.

{% endcut %}

{% cut "Node.js" %}

#| || Ветка | Уязвимые версии | Исправленная версия || || 26.x | До 26.12.1 | 26.12.1 || || 24.x | До 24.22.1 | 24.22.1 || || 22.x | До 22.23.4 | 22.23.4 || |#

Node.js использует встроенный в бинарный файл набор корневых сертификатов, поэтому обновление хранилища ОС на него не влияет.

Для временного решения исправьте системное хранилище и запускайте Node.js с параметром --use-openssl-ca, чтобы использовать хранилище ОС вместо встроенного набора. Параметр --use-system-ca для этой цели не подходит: он добавляет сертификаты ОС к встроенному набору, а не заменяет его.

<code>export NODE_OPTIONS=--use-openssl-ca</code>

{% endcut %}

{% cut "Браузеры" %}

Скомпрометированные сертификаты заблокированы механизмами отзыва браузеров: в Firefox и Chrome — с 17.10.2026, на устройствах Apple — с 19.10.2026, на платформах Microsoft — с 20.10.2026. Обновите браузер до актуальной версии и не отключайте автоматическое обновление. В Firefox блокировка, которая не зависит от доставки списков отзыва, включена в версиях 158.0.1, ESR 153.5.1 и ESR 115.43.1.

{% endcut %}

{% cut "Продукты на основе Microsoft Windows (Kosmos и SPM) в Cloud Marketplace" %}

Рекомендации применимы к образам на базе Windows Server начиная с версии 2016 независимо от редакции и поставщика. Microsoft блокирует скомпрометированные сертификаты с 20.10.2026 через кумулятивные обновления безопасности. Убедитесь, что автоматическое обновление на виртуальной машине не отключено, либо установите кумулятивное обновление вручную из Microsoft Update Catalog.

Для временного решения на ВМ без доступа к обновлениям Microsoft загрузите и изучите скрипт Block-EmudhraCompromisedCA.ps1. Он добавляет 16 скомпрометированных промежуточных сертификатов и кросс-подписей в хранилище LocalMachine\Disallowed (недоверенные сертификаты) и не изменяет хранилище доверенных корневых центров сертификации.

Запустите скрипт в PowerShell 5.1 или выше с правами администратора. Для устройств под централизованным управлением предварительно согласуйте изменения с администратором:

<code>powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Block-EmudhraCompromisedCA.ps1</code>

Приложения, которые используют независимые наборы сертификатов, требуют отдельного обновления.

{% endcut %}

Влияние на сервисы Yandex Cloud {#impact-on-yandex-cloud-services-CVE-2026-111943}

В критических сервисах и зависимостях Yandex Cloud отзывается доверие к сертификатам eMudhra. Пользовательские образы и образы в Cloud Marketplace в процессе обновления.

Дополнительные материалы {#references-CVE-2026-111943}

Дополнительные сведения об инциденте и исправлениях:

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