All stories
3 min read

Your browser may be protected. What about your Python tools?

The eMudhra certificate incident shows why browser fixes do not automatically update Python tools, virtual environments or containers.

SecurityDevelopmentPython
Clay-style browser, terminal and container with separate certificate stacks, as a robotic arm removes an orange warning card.

A browser can receive a security fix while the terminal beside it keeps trusting the wrong certificate. This week's eMudhra/emSign incident makes that gap worth checking, especially on machines running several Python environments and container images.

In a 20 October security report, Mozilla said private keys associated with eight intermediate certificates had been compromised. Someone able to intercept a connection could use fraudulent certificates to impersonate websites and potentially read or change traffic. That establishes a serious capability, not evidence that every connection or developer machine was compromised.

The practical question is which software on your machine has received the corresponding trust update.

One computer, several trust decisions

Firefox users with standard configurations received protection through Mozilla's OneCRL distribution on 17 October. Mozilla also removed the relevant root from NSS to protect other applications using its trust list without receiving those browser updates. Mozilla subsequently issued Firefox for Android 158.0.2 on 21 October to address some clients not applying the bundled blocklist immediately after startup. These measures are explained in the same incident report.

That distinction matters. Updating a browser does not demonstrate that a command-line tool, a virtual environment or a deployed image has updated its own certificate bundle. A successful HTTPS request only tells you the client accepted the connection; it does not establish that the client's trust decisions are current.

Check the tools, not just the interpreter

Python's 20 October advisory recommends minimum versions of certifi 2026.10.19, pip 26.2.2, uv 0.13.4 and sigstore 4.5.1. Its updated guidance also lists conda 26.9.4 and pixi 0.82.1. Follow the current advisory for the tools you actually use.

There is a small but useful version distinction: certifi 2026.10.18 addressed the security issue; 2026.10.19 is recommended for compatibility with unaffected roots. An older patch number does not automatically mean the incident remains unfixed.

Astral's uv 0.13.4 release updates its bundled Mozilla roots and recommends upgrading. This is a separate update path from changing a project's Python dependencies. A tool can carry security-relevant data inside its own distribution.

On 21 October, Python announced 3.15.1, 3.14.9 and 3.13.17, bundling the updated pip and certifi. The announcement still instructs users to update existing virtual environments. Installing a new interpreter is not a substitute for checking environments already in use.

A practical maintenance pass

Start with a short inventory: local development environments, CI runners, build images and deployed containers. Identify which Python tools each uses and record the versions actually present, rather than assuming the laptop and build runner match.

For the update itself, use the official advisory's secure bootstrap instructions. It supplies a hash-pinned pip wheel and specific macOS guidance. The advisory also calls for rebuilding container images with layer caching disabled to refresh system certificates. Do not work around certificate errors by turning verification off.

Afterwards, verify the resulting artefacts and run the application's normal connection tests. Record what changed and what remains outstanding. Treat an untested environment as untested, rather than extending one successful check to the whole fleet.

The engineering lesson is broader than this incident: certificate bundles need an owner and an update route. As with workflow dependency lockfiles, knowing what a build contains is useful only when there is a process for reviewing and updating it. Include the software making trust decisions in that inventory.

Cover: original AI-generated editorial illustration.

Adam Spice

Developer. Curious human.

More stories