Skip to content

fix(security): reject TLS chains through the compromised eMudhra intermediates (INC-289) - #94

Merged
Vadman97 merged 3 commits into
mainfrom
vk/inc-289-emudhra-tls
Oct 21, 2026
Merged

Vadman97 merged 3 commits into
mainfrom
vk/inc-289-emudhra-tls

Conversation

@Vadman97

@Vadman97 Vadman97 commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

For INC-289, mcp start now rejects TLS chains through the eight compromised eMudhra intermediate keys on both Node.js and Bun. It uses the same SPKI list as Node.js #66871 and Go 1.26.10, and it warns on stderr when the runtime has no native fix. The Docker image moves from distroless Node.js 24.2.0 to node:24.22.1-bookworm-slim (pinned by digest, runs as node). The README drops the standalone Bun binaries and lists the patched Node.js versions. Customers only get this from a new npm release and image push, so a release is needed after merge.

🤖 Generated with Claude Code

Opened from termag


Note

Overview
INC-289 (0.7.1) adds defense-in-depth against TLS chains that use compromised eMudhra intermediate CAs, which could expose LaunchDarkly API tokens on outbound connections.

On mcp start, the server installs a TLS blocklist before any traffic: it rejects chains matching Node’s blocked SPKI set (and issuer-name checks for Bun’s leaf-only view), patches tls.checkServerIdentity on Node or wraps fetch on Bun, and prints a stderr warning when the runtime does not natively block those keys. tls-blocklist.ts is hand-maintained (listed in .genignore) with test:tls-blocklist in CI.

Docker switches from distroless Node 24.2.0 to pinned node:24.22.1-bookworm-slim, runs as node, and updates the entrypoint. README documents patched Node versions, image 0.7.1+, and deprecates standalone Bun binaries; the standalone install section is removed.

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

…rmediates (INC-289)

The `mcp start` CLI now rejects chains that contain one of the eight
compromised eMudhra intermediate keys (same SPKI list as Node.js #66871
and Go CVE-2026-111943), on Node.js via tls.checkServerIdentity and on
Bun by wrapping fetch. It warns on stderr when the runtime has no native
fix (Node.js below 22.23.4 / 24.22.1 / 26.12.1, and every Bun release).

The Docker image moves from distroless Node.js 24.2.0 to
node:24.22.1-bookworm-slim (pinned by digest) and runs as the node user.
The README drops the standalone Bun binaries and documents the patched
Node.js versions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Generated-by: termag
@Vadman97
Vadman97 requested review from a team, nieblara and wchieng October 21, 2026 21:32

@wchieng wchieng left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good, but you may want to bump the package.json version and add a github action/workflow to run the new tests you added.

Comment thread package.json
Comment thread test/tls-blocklist.test.mjs
Vadman97 and others added 2 commits October 21, 2026 21:49
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Generated-by: termag
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Generated-by: termag
@Vadman97
Vadman97 merged commit dc7025d into main Oct 21, 2026
4 checks passed
@Vadman97
Vadman97 deleted the vk/inc-289-emudhra-tls branch October 21, 2026 21:55
LVLNo1One pushed a commit to LVLNo1One/NoOne that referenced this pull request Oct 26, 2026
Bump releaseVersion in .speakeasy/gen.lock so the Publish workflow ships 0.7.1 to npm. launchdarkly#94 bumped every other version field but not this one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Generated-by: termag
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