mitmproxy adds --emudhra option to sign certs with a compromised CA key

Translated by a model; the original is in Russian.

· Security
mitmproxy gained an option that signs TLS certificates with the private key of a compromised eMudhra intermediate CA. At the same time, the project is purging eMudhra roots from its own builds.

cover.svg

The developers of mitmproxy — the well-known tool for intercepting and inspecting HTTPS traffic — have added a new --emudhra option to the codebase. Per the changelog entry, it signs TLS certificates with the private key of a compromised eMudhra intermediate certificate authority (commit #8500, by @mhils).

Normally mitmproxy signs its forged certificates with its own CA, which the user has to manually install into the system as trusted. The new option removes that step: instead of a home-made CA it uses the chain of a real intermediate authority, "EM OV TLS CA - G3C," and the cross-signed root "emSign Root TLS CA - G3."

The key, right there in the source

The most telling detail is that the private key, together with the certificate chain, is embedded directly in the source code — in certs.py, as the constant EMUDHRA_CHAIN_PEM. A comment next to it points to the eloquent address emudhra.we-have-a-problem.com. Tests in the repository show that a certificate issued this way for an arbitrary domain is successfully validated by a client that trusts the emSign root.

The point of the gesture is plain. If the private key of an intermediate CA has genuinely leaked into the open, then anyone can issue certificates that browsers and operating systems trust by default. Bundling such a key into a widely used interception tool drives home the scale of the problem.

Removing eMudhra from its own builds

At the same time, in a neighbouring change (#8499), the team updated the certifi dependency to strip the eMudhra certificate authorities from mitmproxy's precompiled binaries. In other words, the project itself stops trusting these roots — while handing users a means to demonstrate exactly why that matters.

To support the elliptic-curve keys used in the eMudhra chain, the code widened its type hints: dummy_cert, dummy_crl and the certificate store now accept both RSA and EC keys.


Source: Hacker News

Comments

Sign in, to comment.

  • No comments yet.