Skip to content

fix(security): build with Go 1.26.10 and require certifi 2026.10.19 - #837

Merged
Vadman97 merged 1 commit into
mainfrom
vadim/emudhra-ca-distrust
Oct 20, 2026
Merged

Vadman97 merged 1 commit into
mainfrom
vadim/emudhra-ca-distrust

Conversation

@Vadman97

@Vadman97 Vadman97 commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Eight eMudhra intermediate CA private keys were compromised and revoked on Oct 18–19 (advisory). Whoever holds them can issue a certificate for any hostname.

  • Go: adds toolchain go1.26.10 to every go.mod; the go 1.25.0 minimum is unchanged. Our builds and CI use the fixed crypto/x509, and customers aren't forced onto a newer Go. The Go e2e image moves from 1.23.1 to 1.26.10.
  • Python SDKs (observability-python, highlight-py) now require certifi>=2026.10.19, so fresh installs get the fixed CA bundle. All five poetry.lock files are bumped, and certifi is the only package that changes in each.

Verified

Tested against the advisory's test site dv-g3b-emudhra.we-have-a-problem.com:

  • Go 1.26.10 rejects it with x509: no valid chains built; 1.26.1 accepts it.
  • requests with certifi 2026.10.19 raises SSLError; 2026.6.17 connects.
  • All six Go modules resolve to go1.26.10 and build. e2e/go's main redeclared error is pre-existing: it's a directory of separate single-file programs.

Not fixed here (customer runtimes)

The SDKs use whatever trust store the host process provides, so this only partly protects customers. The rest is worth a customer notice:

  • Java: the JDK's built-in store includes Comodo AAA and doesn't check revocation by default. No JDK fix exists yet.
  • Node: no Node release has the fix yet. NODE_OPTIONS=--use-openssl-ca together with a patched OS store does block the chain. NODE_USE_SYSTEM_CA=1 doesn't: it only adds to Node's bundled roots.
  • Go and Python: customers need Go ≥ 1.26.10 / 1.27.3 and certifi ≥ 2026.10.19.
  • CI Node (24.15.0 → 24.22.0 in turbo.yml and session-replay-legacy-arch.yml) is left out because this token can't push workflow files. It needs a follow-up from someone with workflow scope.

🤖 Generated with Claude Code

Opened from termag


Note

Overview
Responds to the compromised eMudhra intermediate CA keys by pinning Go 1.26.10 for builds and requiring a patched certifi CA bundle for Python SDK installs.

Go: Every affected go.mod adds toolchain go1.26.10 while leaving go 1.25.0 as the minimum, so CI and local builds use fixed crypto/x509 without raising the declared Go floor. The e2e/go Docker image default GO_VERSION moves from 1.23.1 to 1.26.10.

Python: sdk/@launchdarkly/observability-python and sdk/highlight-py now depend on certifi>=2026.10.19 (with a comment that this bundle drops the bad intermediates). Five poetry.lock files are refreshed so resolved certifi is 2026.10.19; locks otherwise only change for that package.

Reviewed by Cursor Bugbot for commit 9d30b88. Bugbot is set up for automated code reviews on this repo. Configure here.

Eight eMudhra intermediate CA keys were compromised
(https://emudhra.we-have-a-problem.com/).

- toolchain go1.26.10 in every go.mod (go minimum unchanged) and Go
  1.26.10 in the Go e2e image.
- Python SDKs require certifi>=2026.10.19; all poetry.lock files bumped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Generated-by: termag
@Vadman97
Vadman97 requested a review from a team as a code owner October 20, 2026 19:50
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

☂️ Python Coverage

current status: ✅

Overall Coverage

Lines Covered Coverage Threshold Status
628 551 88% 0% 🟢

New Files

No new covered files...

Modified Files

No covered modified files...

updated for commit: 9d30b88 by action🐍

@Vadman97
Vadman97 merged commit acfdb8b into main Oct 20, 2026
34 checks passed
@Vadman97
Vadman97 deleted the vadim/emudhra-ca-distrust branch October 20, 2026 20:23
Vadman97 pushed a commit that referenced this pull request Oct 20, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>launchdarkly-observability-python: 1.3.4</summary>

##
[1.3.4](launchdarkly-observability-python-1.3.3...launchdarkly-observability-python-1.3.4)
(2026-10-20)


### Bug Fixes

* **security:** build with Go 1.26.10 and require certifi 2026.10.19
([#837](#837))
([acfdb8b](acfdb8b))
</details>

<details><summary>go: 1.3.1</summary>

##
[1.3.1](go/v1.3.0...go/v1.3.1)
(2026-10-20)


### Bug Fixes

* **security:** build with Go 1.26.10 and require certifi 2026.10.19
([#837](#837))
([acfdb8b](acfdb8b))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Overview**
> **Release Please** cuts patch releases for the **Go** (`1.3.0` →
`1.3.1`) and **Python** (`1.3.3` → `1.3.4`) observability SDKs, with
matching updates to `.release-please-manifest.json`, package metadata
(`InstrumentationVersion`, `pyproject.toml`), changelogs, and Python
**PROVENANCE** verification examples.
> 
> Both releases document the same **security** fix
([#837](#837)):
building with **Go 1.26.10** and requiring **`certifi` ≥ 2026.10.19** on
the Python package. This PR does not change runtime logic—only release
bookkeeping for those already-merged changes.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
9154dde. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants