Skip to main content
In October 2026, the private keys for eight intermediate certificate authorities (CAs) operated by eMudhra were compromised. Because these intermediates chain to widely trusted roots, an attacker could issue a certificate that any system that hasn’t been updated accepts as valid. See the eMudhra incident summary for details. The following Astro Runtime versions include the complete fix: The previous releases, 13.12.1, 3.3-10, 3.2-12, 3.1-23, and 3.0-20, include only a partial fix. If you run one of them, upgrade to the release in the preceding table instead of following this guide. Astro Runtime 12 and earlier are out of maintenance and don’t include the fix. If you can’t upgrade to a fixed version yet, use this guide to apply the same mitigation to your own image.
Upgrading is the recommended fix. Use this guide only as a temporary measure until you can upgrade. See Upgrade Astro Runtime.
Add each step to your project’s Dockerfile, after the FROM line. The FROM line depends on your Runtime version:
  • Astro Runtime 13 and earlier: FROM astrocrpublic.azurecr.io/astronomer/astro-runtime:<version>, such as 12.12.0.
  • Astro Runtime 3.x: FROM astrocrpublic.azurecr.io/runtime:<version>, such as 3.2-11.
Add the same suffix, such as -ubi9 or -python-3.11, that you use today. See Operating system variant images.

Affected root certificates

Distrust both of the following roots in your image:
  • emSign ECC Root CA - G3
  • Comodo AAA Services root
Distrusting these roots can break TLS connections to any endpoint whose certificate chain depends only on them, including some non-eMudhra services. Test your connections in a development Deployment before you deploy to production.

Step 1: Update the operating system trust store

Choose the tab that matches your image.
Use this tab for the default images of Astro Runtime 13, 12, and 3.x. Upgrading all packages also picks up other security fixes that have been released since your Runtime version.
All three examples fail the build if either root is still trusted.

Step 2: Update Python packages that bundle CA lists

Python libraries such as requests use the certifi CA bundle instead of the operating system trust store. gRPC clients, such as the OpenTelemetry gRPC exporter and Google Cloud client libraries, use the CA list that grpcio bundles, not certifi or the operating system trust store. The pip, virtualenv, and uv packaging tools also bundle their own CA lists. In Astro Runtime 13 and earlier, the PythonVirtualenvOperator uses virtualenv to create its environments. Add the fixed versions to your requirements.txt file:
Astro Runtime 13 and earlier install packages with pip and don’t include uv. Adding uv is safe.
pip 26.2.2 and grpcio 1.84.1 require Python 3.10 or later, and no release of either for Python 3.9 includes the fix. If you use an Astro Runtime 11 image with Python 3.9, switch to an image with Python 3.10 or later, such as 11.20.0-python-3.10.

Step 3: Update the pip that new virtual environments get

When you create a virtual environment with python -m venv, Python installs the copy of pip that it bundles, not the pip installed in your image. In affected Runtime versions, that bundled copy is older than pip 26.2.2. The following example replaces it with pip 26.2.2:
The last three lines create a test environment and fail the build if it doesn’t get pip 26.2.2. If your image tag includes -ubi9, skip this step. In those images, the bundled pip uses the operating system trust store, which you updated in Step 1.

Step 4: Check for custom CA bundles

If you set REQUESTS_CA_BUNDLE, SSL_CERT_FILE, CURL_CA_BUNDLE, or GRPC_DEFAULT_SSL_ROOTS_FILE_PATH to a custom CA bundle, remove the two roots from that bundle as well. Tools that you add to your image with their own bundled CA list, such as the Google Cloud CLI, need their own updates.

Step 5: Test and deploy

  1. Run astro dev restart to rebuild the image locally.
  2. Run a Dag that connects to your key external services to confirm that TLS connections still work.
  3. Deploy with astro deploy.

Next steps

Plan an upgrade to a Runtime version that includes the complete fix, such as Astro Runtime 3.3-11. Once you upgrade, you can revert your Dockerfile to the standard image and remove the extra steps.