Repository navigation
Conversation
The Profiles IDE runs pip and uv at run time, and the bundled profiles-mcp server resolves packages from PyPI on every start. The current image trusts the compromised eMudhra chains in four places: pip 26.1.2, the unpinned uv 0.11.26 from the astral.sh install script, certifi 2025.04.26 in the profiles-mcp lock, and the Ubuntu CA store. - apt-get upgrade takes ca-certificates 20260816, which drops emSign. - pip 26.2.2 and certifi 2026.10.19 replace the plain pip upgrade. - uv 0.13.4 comes from its image by digest, so setup.sh skips its own install. uv keeps its bundled roots, which reject the chains, so its trust does not depend on the apt layer. - uv lock raises certifi in the profiles-mcp lock before setup.sh. Verify: in the built image, pip and uv fail TLS on an emSign test host and reach pypi.org; certifi is 2026.10.19 in both Pythons. Refs: SEC-707 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> 🔒 Scanned for secrets using gitleaks 8.30.1
There was a problem hiding this comment.
🔵 Needs a closer look
Security-sensitive trust changes need human confirmation of full-image builds and certificate-rejection behavior on both supported architectures.
No open issues 🎉
What changed in this PR
Updates the Profiles IDE image’s Python tooling and certificate trust to reject eMudhra chains, including the bundled profiles-mcp environment.
Changes:
- Upgrades Ubuntu packages and explicitly installs
ca-certificates. - Sets minimum pip and certifi versions and copies uv 0.13.4 from a digest-pinned image.
- Updates certifi in the profiles-mcp lockfile before setup so subsequent syncs retain the updated version.
| File | Description |
|---|---|
| Dockerfile | Updates system and Python trust dependencies and the profiles-mcp lockfile. |
Review effort: Balanced
Contributor
Docker Preview Images ReadyPreview Docker images have been built for this PR: ECR (internal): docker pull 422074288268.dkr.ecr.us-east-1.amazonaws.com/rudderstack/profiles-code-server:pr-239Image Details:
Test the image: docker run --rm -p 8080:8080 422074288268.dkr.ecr.us-east-1.amazonaws.com/rudderstack/profiles-code-server:pr-239
|
vamsikrishnakandi
approved these changes
Oct 23, 2026
certifi 2026.10.23 also drops the emSign C1 and C3 roots that 2026.10.19 restored. Verify: the pinned version reads 2026.10.23 and the lock resolves to it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> 🔒 Scanned for secrets using gitleaks 8.30.1
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
The Profiles IDE image now pins the TLS trust for Python tooling:
apt-get upgradeand an explicitca-certificatesinstall take Ubuntu's20260816ubuntu0.22.04.1store, which drops the emSign roots.pip>=26.2.2andcertifi>=2026.10.23replace the plainpip3 install --upgrade pip.ghcr.io/astral-sh/uvby index digest into/usr/local/bin. setup.sh finds it and skips its unpinnedastral.shinstall. uv keeps its bundled roots, so its trust does not depend on the apt layer.uv lock --upgrade-package 'certifi>=2026.10.23'raises certifi in the profiles-mcp v1.4.0 lock beforesetup.sh, souv syncanduv runinstart.shkeep it.Why
The IDE runs pip and uv at run time, and the bundled profiles-mcp server resolves
mcp[cli]from PyPI on every start. The current image trusts the compromised eMudhra intermediate chains in pip 26.1.2, uv 0.11.26, certifi 2025.04.26 (profiles-mcp venv) and the Ubuntu CA store. Ticket: SEC-707 (parent SEC-607).How to verify
The image was verified locally with the probe harness on a Mac mini. The build used the same base digest and the same apt, pip, uv and profiles-mcp steps as this Dockerfile (arm64). Results:
ca-certificates 20260816ubuntu0.22.04.1, pip 26.2.2, uv 0.13.4, certifi 2026.10.19 in the system Python and in the profiles-mcp.venv;ssland certifi reject the test hosts and reach a normal host;uv run --with "mcp[cli]"in the profiles-mcp project starts and keeps certifi 2026.10.19.The Dockerfile carries pins only. It has no build-time version checks.
Release path
This is a
fix:commit, so release-please opens the next patch release PR. Publishing that release runsbuild-docker.yaml, which pushesprofiles-code-server:v<version>to ECR. Then therudder:release-profiles-ide-infraflow bumpsRSOURCES_EXT_WHT_CODESERVERIMAGENAMEin rudderstack-operatoroperator-helm/valuefiles/values.sources.yaml(prod runs v1.20.3 today) and the image warmers in rudder-devopshelm-charts/cluster-overprovisioner/values.*.yaml(v1.20.2 today).Not covered
certifi 2026.10.23 also drops the emSign C1 and C3 roots. The pin skips the 7-day Dependabot cooldown because this is a security fix.
🤖 Generated with Claude Code