Skip to content

CVE-2026-112404 / CVE-2026-112895 (high): require pillow 13 in e2b-desktop - #2011

Merged
mishushakov merged 2 commits into
mainfrom
devin/1792566467-pillow-13-desktop
Oct 21, 2026
Merged

mishushakov merged 2 commits into
mainfrom
devin/1792566467-pillow-13-desktop

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

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):

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:

- "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 GHSA-6q48-6c7w-9gw2 (critical): bump certifi to 2026.10.19 #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

…-112895 (high)

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@changeset-bot

changeset-bot Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: c5eb801

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@e2b/desktop-python Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-21T07:11:08.985387Z 616cf4a PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TASTE.md review: compliant. The PR only changes the dependency range (pillow>=12.0.0,<14), uv.lock, and a changeset. It touches no public SDK API, so I found no violations of T-1–T-74, and the dependency-only change raises no parity (T-1/T-2) or module-structure (T-54–T-56) concern. 0 violations.

devin-ai-integration[bot]

This comment was marked as resolved.

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Package Artifacts

Built from f9a6b86. Download artifacts from this workflow run.

JS SDK (e2b@2.58.1-devin-1792566467-pillow-13-desktop.0, with @e2b/dockerfile-utils@0.1.2-devin-1792566467-pillow-13-desktop.0):

npm install ./e2b-dockerfile-utils-0.1.2-devin-1792566467-pillow-13-desktop.0.tgz ./e2b-2.58.1-devin-1792566467-pillow-13-desktop.0.tgz

CLI (@e2b/cli@2.22.4-devin-1792566467-pillow-13-desktop.0):

npm install ./e2b-cli-2.22.4-devin-1792566467-pillow-13-desktop.0.tgz

Code Interpreter JS SDK (@e2b/code-interpreter@2.9.1-devin-1792566467-pillow-13-desktop.0):

npm install ./e2b-code-interpreter-2.9.1-devin-1792566467-pillow-13-desktop.0.tgz

Desktop JS SDK (@e2b/desktop@2.5.1-devin-1792566467-pillow-13-desktop.0):

npm install ./e2b-desktop-2.5.1-devin-1792566467-pillow-13-desktop.0.tgz

Python SDK (e2b==2.58.0+devin.1792566467.pillow.13.desktop, with e2b-dockerfile-utils==0.1.1+devin.1792566467.pillow.13.desktop):

pip install ./e2b_dockerfile_utils-0.1.1+devin.1792566467.pillow.13.desktop-py3-none-any.whl ./e2b-2.58.0+devin.1792566467.pillow.13.desktop-py3-none-any.whl

Code Interpreter Python SDK (e2b-code-interpreter==2.11.2+devin.1792566467.pillow.13.desktop):

pip install ./e2b_code_interpreter-2.11.2+devin.1792566467.pillow.13.desktop-py3-none-any.whl

Desktop Python SDK (e2b-desktop==2.7.1+devin.1792566467.pillow.13.desktop):

pip install ./e2b_desktop-2.7.1+devin.1792566467.pillow.13.desktop-py3-none-any.whl

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed this PR and found no bugs. The repo's CODEOWNERS file assigns every path to a default owner, so that owner should still look at it before merge.

What was reviewed:

  • The bound change in pyproject.toml (<13 to <14) and the matching requires-dist in uv.lock. Only the pillow entry in the lock changed, and it stays at revision = 3.
  • Python support: the pillow 13.0.0 lock entry has wheels for cp311–cp315 (plus free-threaded builds) and PyPy 3.11/3.12. That covers this package's requires-python >=3.11.
  • API impact: e2b_desktop never imports PIL. Only tests/test_controls.py uses Image/ImageChops, and pillow 13 doesn't remove those.
  • The changeset name @ e2b/desktop-python matches the name in this package's package.json.
  • The lower bound is still >=12.0.0, so a vulnerable 12.x install is still allowed. Raising it to 13 would be a separate decision.
Extended reasoning...

The change widens the pillow upper bound in packages/desktop-python/pyproject.toml, regenerates the pillow entry in uv.lock (12.3.0 to 13.0.0) and adds a patch changeset. It changes no source code and touches no security-sensitive code paths. The reason for the dependency bump is the CVE fixes. The runtime package doesn't import PIL, and the locked wheels cover every supported Python version. I'm deferring rather than approving only because a repo-wide CODEOWNERS entry assigns these paths to a default owner.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration devin-ai-integration Bot changed the title CVE-2026-112404 / CVE-2026-112895 (high): allow pillow 13 in e2b-desktop CVE-2026-112404 / CVE-2026-112895 (high): require pillow 13 in e2b-desktop Oct 21, 2026
@mishushakov

Copy link
Copy Markdown
Member

@cla-bot check

@cla-bot

cla-bot Bot commented Oct 21, 2026

Copy link
Copy Markdown

The cla-bot has been summoned, and re-checked this pull request!

@mishushakov
mishushakov merged commit 2416fdb into main Oct 21, 2026
32 checks passed
@mishushakov
mishushakov deleted the devin/1792566467-pillow-13-desktop branch October 21, 2026 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant