GO-2026-6809 (CVE-2026-111943): Go, crypto/x509 i certyfikaty eMudhra
GO-2026-6809 to poprawka w crypto/x509 po wycieku kluczy 8 certyfikatów pośrednich eMudhra. Bez niej program w Go może zaufać podrobionemu certyfikatowi. Naprawiają ją Go 1.27.3 i 1.26.10, ale każdy program trzeba skompilować ponownie. Instrukcja i pomoc.
Program w Go ma bibliotekę standardową wkompilowaną w plik. Nowa wersja Go na serwerze nic nie zmienia, dopóki nie zbudujesz programu od nowa.
Syntalith
GO-2026-6809 (CVE-2026-111943) to poprawka w pakiecie crypto/x509, który w Go sprawdza certyfikaty TLS. Zespół Go dodał w nim listę zablokowanych certyfikatów pośrednich eMudhra. Ich klucze prywatne wyciekły, więc każdy, kto je ma, może podrobić certyfikat dowolnej strony. Według bazy podatności Go (2026) poprawkę zawierają Go 1.27.3 i 1.26.10.
Jest jeden haczyk, o którym łatwo zapomnieć. Program w Go ma bibliotekę standardową wkompilowaną w plik wykonywalny. Nowa wersja Go na serwerze nie zmienia programu, który już działa. Trzeba zbudować każdy program od nowa i wdrożyć go ponownie.
Co to jest GO-2026-6809 i co grozi bez poprawki
17 października 2026 r. badacz zgłosił twórcom przeglądarek i systemów, że klucze prywatne 8 certyfikatów pośrednich eMudhra są do odgadnięcia. Według analizy Aikido każdy z tych kluczy jest mniejszy niż 256, a jeden to liczba 4. Certyfikat pośredni może podpisać ważny certyfikat dla dowolnej domeny. Kto ma klucz, może więc udawać serwer Waszego banku, dostawcy płatności, API czy repozytorium kodu.
Program w Go, który łączy się z innym serwerem przez HTTPS, sprawdza jego certyfikat funkcją Certificate.Verify. Na większości systemów Go korzysta z systemowej listy zaufanych certyfikatów. Zespół Go pisze, że w części przypadków ta lista nie zaktualizuje się bez dodatkowych kroków. Wtedy program przyjmie podrobiony certyfikat jako ważny.
Co to oznacza w praktyce? Atakujący, który siedzi na drodze ruchu, na przykład w sieci Wi-Fi albo na przejętym routerze, może podstawić własny serwer. Program w Go wyśle mu to, co wysłałby prawdziwemu: tokeny API, hasła, dane klientów, zamówienia. Może też przyjąć od niego sfałszowaną odpowiedź, na przykład podmieniony plik aktualizacji. W Go napisano dużą część narzędzi infrastruktury, takich jak Kubernetes, Docker czy Terraform, a także wiele firmowych usług i agentów.
| Program w Go, który ufa podrobionemu certyfikatowi | Co może się stać |
|---|---|
| Usługa, która płaci albo pobiera dane z banku czy operatora płatności | Atakujący dostaje klucze API i może fałszować odpowiedzi |
| Agent albo integracja, która wysyła dane klientów do CRM | Dane osobowe trafiają do przestępcy, a firma ma 72 godziny na zgłoszenie do UODO według RODO |
| Narzędzie wdrożeń, które pobiera obrazy i pliki | Na produkcję trafia podmieniony, złośliwy plik |
| Program, który sam pobiera aktualizacje | Atakujący instaluje własną wersję programu |
Źródło terminu zgłoszenia: RODO, rozporządzenie 2016/679, art. 33.
GO-2026-6809 w liczbach: statystyki 2026
Dane sprawdziliśmy 23 października 2026 r.
- Według bazy podatności Go (2026) podatne są wszystkie wersje Go przed 1.26.10 oraz wersje od 1.27.0 przed 1.27.3.
- Według zespołu Go (2026) wersje 1.27.3 i 1.26.10 ukazały się 19 października 2026 r., 2 dni po zgłoszeniu wycieku.
- Według Mozilli (2026) skompromitowanych jest 8 certyfikatów pośrednich eMudhra, w tym 6 do TLS i 2 do podpisywania kodu.
- Według analizy Aikido (2026) atakujący potrzebował najwyżej 256 prób, żeby odgadnąć każdy z tych kluczy.
Źródła: GO-2026-6809 w bazie podatności Go, komunikat zespołu Go, komunikat Mozilli na oss-security, Aikido.
Które wersje Go są podatne, a które naprawione
| Gałąź Go | Podatne wersje | Wersja z poprawką |
|---|---|---|
| Go 1.27 | od 1.27.0 do 1.27.2 | 1.27.3 |
| Go 1.26 | do 1.26.9 | 1.26.10 |
| Go 1.25 i starsze | wszystkie | brak, przejdź na 1.26.10 lub 1.27.3 |
Poprawka dotyczy symbolu Certificate.Verify w pakiecie crypto/x509. Z tej funkcji korzysta pośrednio net/http, crypto/tls i niemal każda biblioteka, która łączy się przez HTTPS. Zespół Go pisze, że od nowych wersji Verify odfiltrowuje łańcuchy z zablokowanymi certyfikatami i nie zwraca ich programowi.
Jak załatać GO-2026-6809: instrukcja krok po kroku
- Sprawdź, którą wersją Go zbudowano każdy program. Polecenie
go version -mczyta to z samego pliku. - Podnieś wersję Go w projekcie i w CI do 1.27.3 albo 1.26.10.
- Zbuduj każdy program od nowa. Dotyczy to też obrazów kontenerów, które kompilują program w etapie budowania.
- Zaktualizuj paczkę
ca-certificatesw systemie i w obrazach. Go czyta systemową listę certyfikatów, więc ona też musi być nowa. - Wdroż programy ponownie i zrestartuj usługi.
- Sprawdź wynik:
govulncheckna gotowym pliku i test połączenia z adresem testowym.
Polecenia, które się przydają:
go version # wersja kompilatora
go version -m ./moj-program # którą wersją Go zbudowano plik
go get toolchain@go1.27.3 # wersja Go w go.mod
govulncheck ./... # kod źródłowy
govulncheck -mode=binary ./moj-program # gotowy plik
W obrazach Docker zmień obraz budujący na wersję z poprawką, na przykład golang:1.27.3, i zbuduj obraz z flagą --pull. Obrazy typu scratch albo distroless często kopiują plik z certyfikatami z etapu budowania. Taki obraz ma listę z dnia budowy, więc też wymaga przebudowy.
Test z wnętrza kontenera lub serwera, na którym działa program:
curl -sS -o /dev/null -w "HTTP %{http_code}\n" https://dv-g3b-emudhra.we-have-a-problem.com/
Błąd SSL i wynik HTTP 000 oznaczają, że system już nie ufa skompromitowanym certyfikatom. Ten test sprawdza curl i systemową listę. Sam program w Go sprawdź najlepiej małym zapytaniem http.Get na ten sam adres, zbudowanym tą samą wersją Go: poprawnie załatany program zwróci błąd certyfikatu.
Czego nie robić
Po aktualizacji mogą pojawić się błędy certyfikatów w logach. Nie wyłączaj weryfikacji przez InsecureSkipVerify: true. Cloudflare ostrzega, że to usuwa całą ochronę, którą aktualizacja przywraca. Błąd zwykle oznacza, że serwer po drugiej stronie korzysta z łańcucha, któremu już nie wolno ufać, albo że usługa ma własną, starą listę certyfikatów.
Jak Syntalith pomaga załatać GO-2026-6809
W firmie programy w Go siedzą w wielu miejscach naraz: usługi, agenci, narzędzia w CI, pliki skopiowane na serwery lata temu. Wymiana kompilatora w jednym repozytorium nie zamyka problemu. Nasi inżynierowie robią to od początku do końca.
Najpierw spisujemy programy i obrazy w Go i sprawdzamy, którą wersją zbudowano każdy plik. Potem podnosimy wersję Go w projektach i w CI, przebudowujemy programy i obrazy, aktualizujemy ca-certificates i wdrażamy wszystko ponownie. Na koniec testujemy każdą usługę jej własną drogą TLS, z włączoną weryfikacją, i uruchamiamy govulncheck na gotowych plikach. Dostajecie raport na piśmie: co było podatne, co przebudowaliśmy i co wymaga Waszej decyzji, na przykład program bez kodu źródłowego.
Pracujemy na Waszej infrastrukturze, z dostępami tylko na czas zadania. Te same kroki robimy u siebie: 23 października przenieśliśmy stronę, system rezerwacji i serwer MCP na Node.js 24.22.1 z nową listą certyfikatów.
Zacznij od bezpłatnej, 30-minutowej rozmowy z inżynierem. Powiedz, gdzie działają Wasze programy w Go, a my powiemy, od czego zacząć i ile to potrwa. Umów rozmowę.
Pełny opis incydentu, z listą wersji dla systemów i innych języków, jest w artykule o skompromitowanych certyfikatach eMudhra.
Najczęstsze pytania
- Co to jest GO-2026-6809?
- GO-2026-6809 (CVE-2026-111943) to wpis w bazie podatności Go dotyczący pakietu crypto/x509. Go dodał listę zablokowanych certyfikatów pośrednich eMudhra, których klucze prywatne wyciekły. Od Go 1.27.3 i 1.26.10 funkcja Certificate.Verify odrzuca łańcuchy z tymi certyfikatami.
- Które wersje Go są podatne?
- Wszystkie wersje przed 1.26.10 oraz wersje od 1.27.0 przed 1.27.3. Poprawkę zawierają Go 1.26.10 i 1.27.3, wydane 19 października 2026 r.
- Czy wystarczy zaktualizować Go na serwerze?
- Nie wystarczy. Biblioteka standardowa jest wkompilowana w każdy program w Go. Trzeba zbudować każdy program nowym kompilatorem i wdrożyć go ponownie. Warto też zaktualizować paczkę ca-certificates w systemie.
- Jak sprawdzić, którą wersją Go zbudowano program?
- Polecenie go version -m ścieżka/do/programu pokazuje wersję Go użytą do kompilacji. govulncheck -mode=binary sprawdza gotowy plik pod kątem znanych podatności, także GO-2026-6809.
- Czy Syntalith może przebudować nasze usługi w Go?
- Tak. Inżynier spisuje programy i obrazy w Go, podnosi wersję kompilatora, przebudowuje i wdraża je ponownie, a potem sprawdza, czy usługi odrzucają skompromitowane certyfikaty. Zaczynamy od bezpłatnej, 30-minutowej rozmowy.
Aktualizacje bezpieczeństwa
Nie wiesz, czy Wasze serwery są już załatane?
Powiedz inżynierowi w 30 minut, gdzie działają strona, sklep i aplikacje. Spiszemy podatne wersje, zaktualizujemy je, wdrożymy usługi ponownie i sprawdzimy wynik na produkcji.
- Rozmowa z inżynierem
- 0 zł30 minut, plan prac na piśmie w 2 dni robocze
- Zakres
- PHP, Node.js, Go, certyfikatyserwery, kontenery, hosting i CI
- Na koniec
- raport na piśmieco było podatne, co zaktualizowaliśmy, co zostało
Terminy zobaczysz w swojej strefie czasowej.
Poznaj inżynierów, którzy wykonają pracę