Skip to content

[WRONG BRANCH] fix(devin): bound remote image prompt references - #519

Draft
luvs01 wants to merge 31 commits into
devfrom
codex/propose-fix-for-devin-image-input-vulnerability
Draft

luvs01 wants to merge 31 commits into
devfrom
codex/propose-fix-for-devin-image-input-vulnerability

Conversation

@luvs01

@luvs01 luvs01 commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Motivation

  • The Devin adapter converted every non-data image_url into literal prompt text, allowing an attacker-controlled long URL to bypass admission tokens and amplify memory use during protobuf construction.
  • This could turn a fixed 850-token admission charge into multi-copy, megabyte-scale serialized prompts and trigger process RSS exhaustion or OOM.
  • The intent is to preserve data-URL image passthrough while ensuring remote references cannot be expanded into attacker-sized prompt text.

Description

  • Add a length-and-scheme guard boundedDevinRemoteImageReference with MAX_DEVIN_REMOTE_IMAGE_URL_CHARS = 8192 and only accept https: URLs up to that length.
  • Change mapOcxContentToWire to use the guard and to emit a fixed-size omission marker "[image omitted: unsupported or oversized URL]" when the reference is unsupported or oversized; inline data URLs still map to native image parts.
  • Add a focused regression test tests/providers/devin-image-passthrough.test.ts that verifies normal HTTPS references are preserved and oversized attacker-controlled URLs are not copied into prompt content.
  • Update related structure docs to record the bounded Devin mapping and the adapter/transport contract so the transport invariants reflect the new behavior.

Testing

  • Ran the focused regression suite with bun test tests/providers/devin-image-passthrough.test.ts, which passed all tests (7 pass).
  • Ran repository checks bun run structure:check, bun run typecheck, and bun run privacy:scan, each of which succeeded.
  • Ran git diff --check as part of verification with no check errors.
  • Ran the full test suite with bun run test; the focused change is covered, but the full parallel suite in this container showed unrelated timeouts/state-dependent failures and is not green here (these failures are outside the scope of this focused fix).

Codex Task

lidge-jun and others added 30 commits September 6, 2026 01:08
…43-01a07240

[WRONG BRANCH] chore(release): promote verified candidate to 2.43.0
…in-07c0

chore(release): promote validated 2.44.0 to main
Promote frozen dev source cf9f662; no new runtime changes. Candidate CI34061274315 and service34061276621 are the validation references. Publication waits for successful validation and the final main push CI at the exact release SHA.
Promote frozen dev source cf9f662 as 2.45.0.

The repository owner explicitly authorized this main/preview release promotion and admin PR-only merge. This is a release-specific owner decision, not an independent approval or the dev-only maintainer exception.

Frozen candidate full CI34061274315 passed all25jobs after one unchanged-source rerun of Windows5; the initial holder busy assertion remains recorded without a root-cause resolution claim. Service lifecycle34061276621 passed Linux/macOS/Windows. Dev version pre-move3812 is merged. Publication still requires this actual main merge SHA's own successful push CI and Service lifecycle. No local suites were run.
[WRONG BRANCH] chore(release): promote verified 2.46.0 to main
[WRONG BRANCH] release: promote 2.47.0 to main
[WRONG BRANCH] release: apply final roster correction to main
[WRONG BRANCH] release: promote 2.48.0 to main
…in-01a08498

release: promote verified 2.49.0 product tree to main
Promotes the audited freeze SHA 12c248f unchanged. The resulting tree is byte-identical to that commit's tree, d8f5a71, so what ships is exactly what the six-lane regression audit read.
…in-01a08a81

[WRONG BRANCH] release: promote verified 2.50.0 product tree to main
[WRONG BRANCH] release: promote verified 2.51.0 product tree to main
Product tree is dev at 7bfb2ad. Only package.json differs, carrying the
stable channel version 2.52.0.

This promotion follows a CI repair and a regression sweep: dev had drifted 79
commits past its last finished run and the one run allowed to complete had
failed. lidge-jun#4390 fixed an integration test that never denied anything and had been
red on dev since lidge-jun#4342; lidge-jun#4396/lidge-jun#4397/lidge-jun#4398 closed four gaps in the quota
avoidance contract lidge-jun#4368 introduced; lidge-jun#4403 made a port fixture deterministic.
release: promote verified 2.52.0 product tree to main
Product tree is dev at eb81eaa, byte-identical (dev already carries the
2.53.0 version line).

This promotion follows a 364-commit regression audit (origin/main..981b53e)
by 15 parallel subagent lanes plus two audit-spawned fixes reviewed and merged
to dev: lidge-jun#4496 (live sideband connect watchdog) and lidge-jun#4497 (chat image part
shapes). Zero unresolved P0/P1 at promotion time. Exact-head hosted CI green
on eb81eaa (run 34750934849). Local suite NOT RUN per task rule; hosted
exact-head CI is the gate.
[WRONG BRANCH] release: promote verified 2.53.0 product tree to main
Product tree is dev at a84e6e8, byte-identical (dev already carries the
2.54.0 version line).

Headed by the Codex model-picker incident fix (lidge-jun#4531). On Codex
0.154.0-alpha.6.2 a paginated-history preflight vetoed the entire Codex config
write, so model_catalog_json never reached config.toml and both the Codex app
and the CLI fell back to their six built-in models, while ocx sync reported that
failure as success. The refusal is now scoped to the conversation-history
relabel unit on the apply direction only, narrowed to the one permanent reason,
and a provider table the home already published survives the write.

Exact-head hosted CI green on a84e6e8 via lidge-jun#4531 (run 34772128322): all four
Linux test shards, both macOS shards, gates, hygiene, storage policy, api usage,
keyring x3, npm-global x3, docker smoke, react-doctor. Local suite NOT RUN per
task rule; hosted exact-head CI is the gate.
[WRONG BRANCH] release: promote verified 2.54.0 product tree to main
@luvs01
luvs01 changed the base branch from main to Dev September 14, 2026 00:27
@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 1edd3f5f-1cfe-4e4e-9179-7f5433180618


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 14, 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-09-14T00:29:59.636950Z 8a1705a 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.

@github-actions github-actions Bot added the bug Something isn't working label Sep 14, 2026
@github-actions

Copy link
Copy Markdown

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot changed the title fix(devin): bound remote image prompt references [WRONG BRANCH] fix(devin): bound remote image prompt references Sep 14, 2026
@github-actions

github-actions Bot commented Sep 14, 2026

Copy link
Copy Markdown

⏳ DRAFT

  • wrong target branch (Dev); retarget to dev. UI screenshot required.

What to do

  • Retarget this PR to dev — all contributions go to dev.
  • Add a screenshot of the UI change to the PR description.

Its title has been prefixed with [WRONG BRANCH].
This pull request was already a draft. Its draft status will be preserved after every issue above is resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

aardvark bug Something isn't working codex

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants