# eMudhra security advisory: compromised intermediate CA keys

**Author:** Security Team

---

On October 17, 2026, [researchers found](https://emudhra.we-have-a-problem.com/) that private keys for eight intermediate certificate authorities operated by eMudhra (emSign) could be recovered. Anyone holding those keys could issue a trusted certificate for any website. [eMudhra revoked the intermediates](https://emudhra.com/en/post/certificate-security-incident) on October 18, and the major browsers and operating systems blocked them within days. Revocation alone does not protect most non-browser clients, which never check revocation status, so each client has to stop trusting the roots above the intermediates.

Many tools ship their own list of trusted roots. Node.js, Python's certifi package, Go, and most container images each carry one, and each list stays exposed until it is updated.

Vercel has updated its own infrastructure and the runtimes it manages for you.

## Required action

Most projects on Vercel need no action. Vercel updated builds, Vercel Functions, Sandbox images and Image Optimization, and projects on Node.js 22 or newer receive the update without a redeploy.

Check the following, which Vercel does not manage for you:

- **Runtimes and packages you install or pin yourself**: a Node.js or Python [installed inside a Sandbox or a custom base image](https://vercel.com/docs/sandbox/concepts/images), a container image you build, or a version of [Python's certifi package](https://pypi.org/project/certifi/) pinned in your dependencies. Update it to a release that drops the affected roots, or rebuild on an updated base image. The roots to look for are AAA Certificate Services, emSign Root TLS CA - G3 and emSign ECC Root CA - G3. The researcher's page at [emudhra.we-have-a-problem.com](http://emudhra.we-have-a-problem.com) offers test endpoints you can use to confirm a client rejects them.
  
- **Node.js, Python and other TLS clients outside Vercel**: external backends, CI runners and developer machines. Node.js 22.23.4, 24.22.1 and 26.12.1, certifi 2026.10.19 and Homebrew's current ca-certificates package drop the affected roots. Avoid untrusted networks on machines that have not been updated.
  
- Projects still on Node.js 20.x. Node.js 20 reached end of life and will not receive an updated certificate list. Set the Node.js version to 22 or newer in project settings or `engines.node`, then redeploy.
  

## Who is affected

A TLS client is exposed when it still trusts the eMudhra roots and connects over a network an attacker can intercept, such as public Wi-Fi, a hostile hotspot or hijacked DNS. Inbound traffic to your site is not affected: Vercel does not issue certificates through eMudhra, and visitors' browsers block the compromised intermediates. Outbound connections from builds, functions and Sandboxes run on runtimes that no longer trust the affected roots. On Vercel, exposure is limited to runtimes and packages you install or pin yourself. Outside Vercel, it includes external backends, CI runners and developer machines until they are updated.

## Vercel platform protections

Vercel distrusted the affected roots across the platform as updated runtimes became available, and continues to roll the change to the remaining managed runtimes.

- **Vercel infrastructure.** Our edge network, control plane and internal services no longer trust the affected roots.
  
- **Builds.** The build environment distrusts the affected roots, and the managed Node.js 22, 24 and 26 versions used in builds have been updated.
  
- **Vercel Functions.** Managed Node.js runtimes are being updated and we will update this page when the rollout completes. Existing deployments receive the update without a redeploy.
  
- **Vercel Sandbox.** Managed Node.js and Python images were republished with updated certificate lists. When any Sandbox starts, Vercel also removes the affected roots from the system certificate store, so Sandboxes restored from older snapshots are protected without changing the saved snapshot. Sandbox points common tools at the system store by default; software you add that keeps its own store is your responsibility to check.
  
- **Image Optimization.** No longer trusts the affected roots.
  

These protections cover software Vercel manages. They do not reach into a dependency you vendor, a runtime you install yourself, or a server you run elsewhere.

## Next steps

- Read the researcher's write-up at [emudhra.we-have-a-problem.com](http://emudhra.we-have-a-problem.com).
  
- Review the [Vercel Sandbox images documentation](https://vercel.com/docs/sandbox/concepts/images) for how managed images and snapshots are updated.
  
- Contact [security@vercel.com](mailto:security@vercel.com) with questions.

---

[View full KB sitemap](/kb/sitemap.md)
