Published e2b-desktop 2.3.0 wheel pins `pillow<12.0.0` while source already requires `^12.0.0` (forces vulnerable Pillow)
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 55/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- python
- Domain
- build-system, release, security
Research direction
Start with packages/python-sdk/pyproject.toml and compare its Pillow constraint with the 2.3.0 wheel metadata using the pip download and unzip commands in the issue. Then inspect the repository's publishing workflow and release process. Done means a patch release is published whose metadata permits the current patched Pillow range.
Written by the indexing model from the issue text.
Description
Summary
The e2b-desktop 2.3.0 artifacts published to PyPI declare a Pillow upper bound that contradicts the source repo:
- Published wheel / sdist metadata (PyPI):
pillow<12.0.0,>=11.1.0- https://pypi.org/pypi/e2b-desktop/2.3.0/json ->
requires_dist
- https://pypi.org/pypi/e2b-desktop/2.3.0/json ->
- Source
packages/python-sdk/pyproject.toml(this repo,main):pillow = "^12.0.0"(i.e.>=12.0.0,<13.0.0)
These ranges are mutually exclusive, so the published wheel was clearly not built from current main. Most likely 2.3.0 was tagged/published before the Pillow bump in the source was merged (or without re-running the publish workflow afterwards).
Why this matters: forces installs onto a Pillow with two open High-severity CVEs
Because e2b-desktop 2.3.0 caps pillow<12.0.0, any project that depends on it gets pulled back to Pillow 11.x, which is affected by:
- GHSA-cfh3-3jmp-rvhc / CVE-2026-25990 — Pillow out-of-bounds write when loading PSD images (High, CVSS v4 8.9). Vulnerable:
>=10.3.0,<12.1.1. Fixed in 12.1.1. https://github.com/python-pillow/Pillow/security/advisories/GHSA-cfh3-3jmp-rvhc - GHSA-whj4-6x5x-4v2j / CVE-2026-40192 — FITS GZIP decompression bomb in Pillow (High, CVSS v3 7.5 / v4 8.7). Vulnerable:
>=10.3.0,<12.2.0. Fixed in 12.2.0. https://github.com/python-pillow/Pillow/security/advisories/GHSA-whj4-6x5x-4v2j
Dependabot/Renovate flags both alerts on any project that transitively depends on e2b-desktop 2.3.0, with no clean upgrade path because of the cap.
Today the only workaround is something like tool.uv.override-dependencies = ["pillow>=12.2.0"], which is uv-only and silently bypasses upstream constraints.
Suggested fix
Cut a patch release (e2b-desktop 2.3.1) from current main so the published wheel reflects the actual pillow = "^12.0.0" constraint and downstream users can pick up the patched Pillow >= 12.2.0.
Reproduction
pip download --no-deps e2b-desktop==2.3.0
unzip -p e2b_desktop-2.3.0-py3-none-any.whl '*.dist-info/METADATA' | grep -i pillow
# Requires-Dist: pillow (<12.0.0,>=11.1.0)
Thanks!
- Dominant language
- Python
- Stars
- 1.5k
- Forks
- 184
- Avg merge
- 12h 6m
- Merged PRs (30d)
- 7
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from e2b-dev/desktop
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Dependency Dashboard OpenChore Dashboard
Difficulty 4/5 3-5 days Newbie friendliness 15/100
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
-
bug Desktop
-
bug Desktop
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Similar issues
-
documentation help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
simonw/sqlite-utils#872 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100