Skip to content

fix(deps): CVE-2026-96889 (high) — bump sharp override to ^0.35.5 (GHSA-wq5f-xc86-pv6w) - #1995

Merged
mishushakov merged 2 commits into
mainfrom
devin/1792393587-sharp-ghsa-wq5f
Oct 19, 2026
Merged

mishushakov merged 2 commits into
mainfrom
devin/1792393587-sharp-ghsa-wq5f

Conversation

@devin-ai-integration

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

Copy link
Copy Markdown
Contributor

Summary

Clears GHSA-wq5f-xc86-pv6w (high): sharp <0.35.5 bundles a librsvg vulnerable to CVE-2026-96889. The GHSA itself has no CVE ID assigned; the CVE in the title is the upstream librsvg one it references.

# pnpm-workspace.yaml overrides (+ matching line in pnpm-lock.yaml)
- sharp@<0.35.4: ^0.35.4
+ sharp@<0.35.5: ^0.35.5

Patch-level bump of the existing override. When this PR was opened, sharp@0.35.4 came in through the packages/js-sdk devDependency chain wrangler > miniflare > sharp. #1994 has since bumped wrangler on main, so the resolved tree is already on sharp@0.35.5. After merging main, this PR only raises the override floor so a vulnerable sharp can't be resolved again. 0.35.5 was published 2026-09-27, so it satisfies minimumReleaseAge.

Dev-only: no published package (e2b, @e2b/cli, Python SDK) depends on sharp, so no changeset.

Verification

  • pnpm install --frozen-lockfile passes. pnpm why -r sharp shows only sharp@0.35.5.
  • pnpm audit: the sharp advisory no longer shows up. What's left is braces (high, CVE-2026-93687) and sprintf-js (moderate, CVE-2026-97058). Neither has a patched version, and both come only through @changesets/* release tooling.
  • On the first CI run, lint, typecheck, build and the Cloudflare/miniflare tests passed. Some SDK integration jobs failed against the live staging/production API: template-build error-message mismatch, an auto-resume test, and a 503. Other PRs that ran at the same time failed the same staging jobs.

Link to Devin session: https://app.devin.ai/sessions/4bc93953132c4fc3808932cf35fde056
Open in Devin Desktop: https://app.devin.ai/desktop/session/4bc93953132c4fc3808932cf35fde056?variant=devin


Devin Review

…2026-96889, high)

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@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

@cla-bot cla-bot Bot added the cla-signed label Oct 19, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 19, 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-19T07:12:38.587128Z 7d45ba9 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Package Artifacts

Built from 92bafbc. Download artifacts from this workflow run.

JS SDK (e2b@2.56.1-devin-1792393587-sharp-ghsa-wq5f.0, with @e2b/dockerfile-utils@0.1.2-devin-1792393587-sharp-ghsa-wq5f.0):

npm install ./e2b-dockerfile-utils-0.1.2-devin-1792393587-sharp-ghsa-wq5f.0.tgz ./e2b-2.56.1-devin-1792393587-sharp-ghsa-wq5f.0.tgz

CLI (@e2b/cli@2.22.1-devin-1792393587-sharp-ghsa-wq5f.0):

npm install ./e2b-cli-2.22.1-devin-1792393587-sharp-ghsa-wq5f.0.tgz

Code Interpreter JS SDK (@e2b/code-interpreter@2.9.1-devin-1792393587-sharp-ghsa-wq5f.0):

npm install ./e2b-code-interpreter-2.9.1-devin-1792393587-sharp-ghsa-wq5f.0.tgz

Desktop JS SDK (@e2b/desktop@2.5.1-devin-1792393587-sharp-ghsa-wq5f.0):

npm install ./e2b-desktop-2.5.1-devin-1792393587-sharp-ghsa-wq5f.0.tgz

Python SDK (e2b==2.56.0+devin.1792393587.sharp.ghsa.wq5f, with e2b-dockerfile-utils==0.1.1+devin.1792393587.sharp.ghsa.wq5f):

pip install ./e2b_dockerfile_utils-0.1.1+devin.1792393587.sharp.ghsa.wq5f-py3-none-any.whl ./e2b-2.56.0+devin.1792393587.sharp.ghsa.wq5f-py3-none-any.whl

Code Interpreter Python SDK (e2b-code-interpreter==2.11.0+devin.1792393587.sharp.ghsa.wq5f):

pip install ./e2b_code_interpreter-2.11.0+devin.1792393587.sharp.ghsa.wq5f-py3-none-any.whl

Desktop Python SDK (e2b-desktop==2.7.0+devin.1792393587.sharp.ghsa.wq5f):

pip install ./e2b_desktop-2.7.0+devin.1792393587.sharp.ghsa.wq5f-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 and found no bugs. It's a clean patch-level bump of the sharp override, but the repo's CODEOWNERS file assigns every path to one owner, so they should still sign off.

What was reviewed:

  • The sharp@<0.35.5: ^0.35.5 override is the same in pnpm-workspace.yaml and in the pnpm-lock.yaml overrides block.
  • No references to sharp 0.35.4 or @ img/sharp-libvips-*@ 1.3.3 are left in the lockfile. The miniflare snapshots and the root sharp entries now resolve to 0.35.5 and libvips 1.3.4.
  • The @ img/sharp-* platform entries that remain are a complete, consistent set at 0.35.5 / 1.3.4.
Extended reasoning...

The change touches only pnpm-workspace.yaml (one override line) and pnpm-lock.yaml. In the lockfile, sharp 0.35.4 and libvips 1.3.3 are removed and their dependents dedupe onto the 0.35.5 entries that were already there. No source code changes and no runtime security surface is touched. sharp is a dev-only transitive dependency, pulled in through wrangler and miniflare. I checked the resulting files rather than the raw diff hunks, and the lockfile state matches the override. I deferred instead of approving only because CODEOWNERS assigns every path in the repo, these files included, to a single owner.

@mishushakov

Copy link
Copy Markdown
Member

can you resolve conflicts in the lock file

…p-ghsa-wq5f

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

# Conflicts:
#	pnpm-lock.yaml
@changeset-bot

changeset-bot Bot commented Oct 19, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 5ef4554

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

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

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

Resolved: merged main and regenerated pnpm-lock.yaml with pnpm install (5ef4554). #1994 already moved everything onto sharp@0.35.5, so the PR diff is now just the override line in pnpm-workspace.yaml and the matching line in the lockfile. It raises the floor to ^0.35.5 so 0.35.4 can't be resolved again. pnpm install --frozen-lockfile passes, and pnpm audit no longer reports the sharp advisory.

Written by Devin

@mishushakov
mishushakov enabled auto-merge (squash) October 19, 2026 13:44
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

CI on the merge commit: the remaining failures come from the live API, not this change. After the merge, the only difference from main is the sharp override line, and the packages pnpm resolves are the same as on main.

  • Staging JS/Python SDK: runCmd / test_run_command_as_user_that_does_not_exist expects failed to run command 'whoami': ... but staging returns failed to run command: .... There are also template-build timeouts. The same staging jobs fail on other PRs today: devin/1791891129-sandbox-create-idempotency, sdk-dep-updates and sdk-dead-code.
  • Production browser: tests/api/list.test.ts pagination tests hit TypeError: Failed to fetch against the API. The same job passed on this PR's previous run.

I don't have permission to re-run jobs, so they need a re-run once staging is healthy.

Written by Devin

@mishushakov
mishushakov merged commit dc625eb into main Oct 19, 2026
74 of 84 checks passed
@mishushakov
mishushakov deleted the devin/1792393587-sharp-ghsa-wq5f branch October 19, 2026 18:56
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