Repository navigation
GHSA-6q48-6c7w-9gw2 (critical): bump certifi to 2026.10.19 - #2010
Conversation
…ical) Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Package ArtifactsBuilt from b418c4f. Download artifacts from this workflow run. JS SDK ( npm install ./e2b-dockerfile-utils-0.1.2-devin-1792566370-certifi-ghsa-6q48.0.tgz ./e2b-2.58.1-devin-1792566370-certifi-ghsa-6q48.0.tgzCLI ( npm install ./e2b-cli-2.22.4-devin-1792566370-certifi-ghsa-6q48.0.tgzCode Interpreter JS SDK ( npm install ./e2b-code-interpreter-2.9.1-devin-1792566370-certifi-ghsa-6q48.0.tgzDesktop JS SDK ( npm install ./e2b-desktop-2.5.1-devin-1792566370-certifi-ghsa-6q48.0.tgzPython SDK ( pip install ./e2b_dockerfile_utils-0.1.1+devin.1792566370.certifi.ghsa.6q48-py3-none-any.whl ./e2b-2.58.0+devin.1792566370.certifi.ghsa.6q48-py3-none-any.whlCode Interpreter Python SDK ( pip install ./e2b_code_interpreter-2.11.2+devin.1792566370.certifi.ghsa.6q48-py3-none-any.whlDesktop Python SDK ( pip install ./e2b_desktop-2.7.1+devin.1792566370.certifi.ghsa.6q48-py3-none-any.whl |
There was a problem hiding this comment.
I reviewed this PR and found no bugs. A human should still look at it: the repo-wide CODEOWNERS entry covers these files, and the PR leaves the release-age decision to reviewers, since certifi 2026.10.19 was published on 2026-10-20, inside the 3-day window pnpm-workspace.yaml applies to Node packages.
What was reviewed:
- The certifi hunk in all three uv.lock files. Each one changes only the version, sdist and wheel entries, and the three files match byte-for-byte.
- The new URLs, filenames and upload times all match version 2026.10.19. The sha256 values were not checked against PyPI in this run.
- No other packages, pyproject.toml constraints or lockfile metadata changed.
Extended reasoning...
The change only edits lockfiles. It bumps the transitive dependency certifi from 2026.7.22 to 2026.10.19 in the uv.lock files for python-sdk, desktop-python and code-interpreter-python, and each file changes by 3 lines. certifi supplies the CA trust store for the SDK's HTTPS calls, so the change touches TLS trust, though no source code changes. The decision to defer rests on two facts: the root CODEOWNERS assigns every path to a single owner, and the PR asks reviewers to decide whether to accept a release that is newer than the repo's minimum release age.
|
The Python SDK test failures here aren't caused by this lockfile change. |
…sktop (#2011) ## Summary `e2b-desktop` declared `pillow>=12.0.0,<13` as a runtime dependency. Every Pillow 12.x release is affected by these high-severity advisories, and the only fix is in 13.0.0 (released 2026-10-16): - **CVE-2026-112404** / [GHSA-c6hw-5grf-ff96](GHSA-c6hw-5grf-ff96) (high): OOB read in `TiffDecode.c` tile and RGBA paths leaks heap memory into pixels (`>=8.1.0, <13.0.0`) - **CVE-2026-112895** / [GHSA-p4wg-p73j-c528](GHSA-p4wg-p73j-c528) (high): unbounded recursion parsing a PDF page tree or trailer chain The bump also clears two medium advisories: CVE-2026-112395 / GHSA-462x-pgg6-55fp and CVE-2026-112899 / GHSA-vx6w-vv9f-6gvg. The old `<13` cap stopped users from upgrading to the patched Pillow. Per review, the floor now goes up too, so a vulnerable 12.x can no longer be resolved: ```diff - "pillow>=12.0.0,<13", + "pillow>=13.0.0,<14", ``` The lock moves from `pillow 12.3.0` to `13.0.0`. I relocked with uv 0.10.12, so the lockfile stays at `revision = 3`. There's a changeset (`@e2b/desktop-python` patch). Pillow 13's breaking changes are: dropping Python 3.10 (we already require `>=3.11`), I-mode PNG clipping, and the removal of `Image._show`, `get_child_images` and `ImageCmsProfile.product_*`. None of these affect this package: `e2b_desktop` doesn't import PIL, and only the tests use `Image`/`ImageChops`. Out of scope: `code-interpreter-python` pulls in Pillow only through its dev-group `matplotlib`, so I left that alone rather than force a major bump for a dev-only advisory. ## Verification - In `packages/desktop-python`, `uv run pytest -n 4 tests` against live E2B with Pillow 13.0.0: 18 passed (this includes `test_controls.py`, which uses `PIL.Image`/`ImageChops`) - `make lint` and `make typecheck` (ty): pass - `pip-audit` on the exported lock: no Pillow findings left (the only remaining finding is certifi, fixed separately in #2010) Link to Devin session: https://app.devin.ai/sessions/1fd08fc404004c31b7466969c8fdc9bb Open in Devin Desktop: https://app.devin.ai/desktop/session/1fd08fc404004c31b7466969c8fdc9bb?variant=devin <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/e2b-dev/e2b/pull/2011" target="_blank"><picture><source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-devin-review-dark.svg?v=4"><img src="https://static.devin.ai/assets/gh-devin-review-light.svg?v=4" alt="Devin Review"></picture></a> <!-- devin-review-badge-end --> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
## Summary The orchestrator stopped repeating the failed command in template build errors (e2b-dev/runtime `4b3b122` "fix(orchestrator): report a failed build command without repeating it"), and that's now deployed to production as well as staging: ```diff - failed to run command 'whoami': command failed: unauthenticated: invalid username: 'root123' + failed to run command: command failed: unauthenticated: invalid username: 'root123' ``` `test_run_command_as_user_that_does_not_exist` (Python sync + async) and `runCmd.test.ts > run command as user that does not exist` (JS) still asserted the old message, so they fail on every PR that runs the SDK suites (e.g. #2010, `feat/en-3411-allow-default-dns`). This PR updates the expected string only, with no SDK changes. Ran the changed tests against production: Python 6 passed, JS 3 passed. Link to Devin session: https://app.devin.ai/sessions/44907c1a82f44d669290264aad35ed9a Open in Devin Desktop: https://app.devin.ai/desktop/session/44907c1a82f44d669290264aad35ed9a?variant=devin Requested by: @mishushakov <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/e2b-dev/e2b/pull/2014" target="_blank"><picture><source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-devin-review-dark.svg?v=4"><img src="https://static.devin.ai/assets/gh-devin-review-light.svg?v=4" alt="Devin Review"></picture></a> <!-- devin-review-badge-end --> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: mish@e2b.dev <mish@e2b.dev>
Summary
Clears GHSA-6q48-6c7w-9gw2 (critical, no CVE ID assigned yet): certifi bundles emSign root CAs with compromised intermediate CA keys. Affects
certifi >=2019.03.09, <2026.10.19; first patched version is2026.10.19.certifiis a runtime transitive dependency (e2b→httpx/httpcore→certifi), so it is in the trust store for every HTTPS call the SDK makes.Lockfile-only change, done with uv 0.10.12 so the lockfile stays at
revision = 3:packages/python-sdk/uv.lockpackages/desktop-python/uv.lockpackages/code-interpreter-python/uv.lockcertifi 2026.7.22 -> 2026.10.19. Nopyproject.tomlconstraint changes and no changeset: the published packages never pinnedcertifi, so users already get the fix when they upgradecertifiin their own environment (pip install -U certifi).Note:
certifi 2026.10.19came out on 2026-10-20, so it's newer than the 3-dayminimumReleaseAgethe repo applies to pnpm. I'm proposing it anyway because it's the only patched release for a critical CA-trust advisory. Reviewers should decide whether to wait out the window.Verification
pip-auditon the exported python-sdk lock (all groups): no known vulnerabilities after the bump (previouslyPYSEC-2026-4320/ GHSA-6q48-6c7w-9gw2)uv run pytest tests/test_*.pyinpackages/python-sdk: 489 passedSandbox.create()+commands.run) over TLS with the new bundle: OKLink to Devin session: https://app.devin.ai/sessions/1fd08fc404004c31b7466969c8fdc9bb
Open in Devin Desktop: https://app.devin.ai/desktop/session/1fd08fc404004c31b7466969c8fdc9bb?variant=devin