Skip to content

fix(deps): upgrade uv.lock for Critical/High advisories (13 Critical + 116 High -> 4 + 15); adapt agent_xray to gradio 6 - #50

Open
vanessasalas-cog wants to merge 8 commits into
mainfrom
devin/1791212967-uv-lock-security-bumps
Open

vanessasalas-cog wants to merge 8 commits into
mainfrom
devin/1791212967-uv-lock-security-bumps

Conversation

@vanessasalas-cog

@vanessasalas-cog vanessasalas-cog commented Oct 5, 2026 •

Copy link
Copy Markdown

Summary

A fresh scan of the locked environment (uv export + Snyk / pip-audit, severities cross-checked against OSV) reported 13 Critical and 115 High advisories across 25 packages. This PR re-locks only the affected packages (plus the pins that were blocking them) with uv lock --upgrade-package ...; pyproject.toml constraints are unchanged and every new version satisfies the existing >= ranges. After the change the locked tree has 4 Critical / 15 High, all in packages that cannot move further (see "Residual").

Package Before -> After Before (C/H) Example advisories
nltk 3.9.1 -> 3.10.3 4C / 22H CVE-2026-0847, CVE-2026-0846, CVE-2025-14009
gitpython 3.1.45 -> 3.2.0 1C / 22H CVE-2026-87819, CVE-2026-67326
litellm 1.75.3 -> 1.80.0 3C / 6H CVE-2026-35030, CVE-2026-49468 (partially fixed, see residual)
ray 2.48.0 -> 2.59.0 3C / 2H CVE-2023-48022, CVE-2025-62593, CVE-2025-34351
torch 2.2.2 -> 2.14.1 1C / 1H CVE-2025-32434, CVE-2026-24747
anyio 4.10.0 -> 4.14.2 1C CVE-2026-63374
pillow 11.3.0 -> 12.3.0 13H CVE-2026-40192, CVE-2026-54059
tornado 6.5.2 -> 6.5.10 8H CVE-2026-31958, CVE-2025-67725
urllib3 2.5.0 -> 2.8.0 6H CVE-2026-44431, CVE-2025-66418
pyasn1 0.6.1 -> 0.6.4 5H CVE-2026-23490, CVE-2026-30922
gradio 5.41.1 -> 6.17.3 3H CVE-2026-28416, CVE-2026-28414, CVE-2026-48545
mcp 1.10.1 -> 2.3.0 3H CVE-2025-66416, CVE-2026-59950
starlette 0.47.2 -> 1.7.0 3H CVE-2026-54283, CVE-2025-62727
python-multipart 0.0.20 -> 0.0.32 3H CVE-2026-24486, CVE-2026-53539
virtualenv 20.33.1 -> 21.14.5 3H CVE-2026-102930 (dev-only, via pre-commit/ray)
aiohttp, soupsieve 3.12.15 -> 3.14.3 (now 3.14.5, see below), 2.7 -> 2.10 2H each CVE-2025-69223, CVE-2026-49477
brotli, msgpack, orjson, protobuf, pyarrow 1.2.0, 1.2.3, 3.12.0, 7.36.2, 25.0.1 1H each CVE-2025-6176, CVE-2026-57585, CVE-2025-67221, CVE-2026-0994, CVE-2026-25087
black, click (dev) 25.1.0 -> 26.10.0, 8.2.1 -> 8.5.0 1C / 2H PYSEC-2026-2120, PYSEC-2026-2132
fsspec (added 2026-10-06) 2026.2.0 -> 2026.9.0 1H CVE-2026-104851 / GHSA-27vj-qcqg-25rc (SSTI -> RCE in ReferenceFileSystem, CVSS 8.8; transitive via torch/dask/datasets/huggingface-hub, published 2026-10-05)
aiohttp (+yarl), added 2026-10-20 3.14.3 -> 3.14.5 (yarl 1.20.1 -> 1.25.1, required by aiohttp>=3.14.4) 2H CVE-2026-111064 / GHSA-5wr8-gcqf-gqf3 (server lacks initial request/header timeout), GHSA-2g87-pp6c-29x5 (excessive/unbounded memory/CPU use); transitive, both published 2026-10-19, fixed in 3.14.4
certifi, added 2026-10-21 2025.8.3 -> 2026.10.19 1C PYSEC-2026-4320 / GHSA-6q48-6c7w-9gw2 (bundled emSign root CAs whose intermediate CA keys were compromised; fixed in 2026.10.18 by removing those roots). Transitive via requests/httpx; affects every TLS connection that trusts the certifi bundle. Published 2026-10-20
virtualenv, added 2026-10-22 21.14.5 -> 21.14.12 2H CVE-2026-113725, CVE-2026-113722 (dev-only, via pre-commit/ray)
gitpython, brotli, black, added 2026-10-23 3.2.0 -> 3.2.1, 1.2.0 -> 1.2.1, 26.10.0 -> 26.10.1 1H / 1H (CVSS4 AV:N, OSV has no severity label) / 1H gitpython CVE-2026-114145 / GHSA-83vg-56qc-22m7 (submodule .git path validated only after clone -> RCE; used by reproducibility_util.py); brotli PYSEC-2026-4322 / CVE-2026-111497 (out-of-bounds write in the decoder; transitive); black CVE-2026-114134 / GHSA-cg8m-r9f2-5wm2 (dev-only; the advisory targets the black GitHub Action, which CI does not use — code_format.yml runs uv run black — bumped anyway because it is a patch release)
filelock, added 2026-10-24 4.0.12 -> 4.2.4 on Python >=3.11; 4.0.12 -> 4.1.0 on Python 3.10 1H (+2 Low) CVE-2026-112940 / GHSA-v4x8-3wr5-3wq8 (CVSS 3.1 7.1, AV:L: ReadWriteLock reopens its SQLite DB by name, so a planted symlink/journal file lets a local attacker make the lock owner overwrite/unlink its own files; transitive via torch/huggingface-hub/datasets/virtualenv, GHSA published 2026-10-23, fixed in 4.2.1). Also clears CVE-2026-112907, CVE-2026-112913 (Low)

Code change (gradio 6): gradio 5 -> 6 removes show_copy_button / show_download_button and moves theme=/css= from gr.Blocks(...) to .launch(...). src/agentlab/analyze/agent_xray.py is adapted accordingly:

- with gr.Blocks(theme=gr.themes.Soft(), css=css) as demo:
+ with gr.Blocks() as demo:
...
- gr.Markdown(elem_classes="error-report", show_copy_button=True)
+ gr.Markdown(elem_classes="error-report", buttons=["copy"])
- gr.Image(..., show_download_button=False)
+ gr.Image(..., buttons=[])
...
- demo.launch(server_port=port, share=do_share)
+ demo.launch(server_port=port, share=do_share, theme=gr.themes.Soft(), css=css)

Platform trade-off — Intel macOS is dropped. PyTorch 2.2.x was the last line with macOS x86_64 wheels; every torch release that fixes CVE-2025-32434 / CVE-2026-24747 is arm64/Linux/Windows only, so the new lock cannot uv sync on Intel Macs (ray 2.59 likewise). CI runs on Linux and is unaffected. If Intel-Mac development must remain supported, the alternative is a marker-split torch dependency in pyproject.toml that keeps 2.2.2 on Darwin/x86_64 and accepts the two torch findings there — maintainer decision requested.

Residual (not fixable in this PR, documented for risk acceptance):

  • litellm stops at 1.80.0 (3C/8H remain, fixed in 1.83–1.84): newer litellm needs openai>=2, but libwebarena / libvisualwebarena pin openai<2.
  • transformers stops at 4.57.6 (1C/5H remain, fixed in 5.x): libwebarena / libvisualwebarena pin transformers<5.
  • lxml 5.4.0 (1H, fixed in 6.1.0): pinned <6 by browsergym-core, sacrebleu, weblinx-browsergym.
  • text-generation 0.7.0 (1H, fixed in 3.3.7): pinned by libwebarena / libvisualwebarena.
  • nltk 3.10.3 GHSA-8mgp-746c-j5xp (1H): no fixed release published.
  • filelock on Python 3.10 only stays affected (4.1.0): every fixed release (4.2.1+) declares requires-python >=3.11 and the project allows >3.10, so uv forks the lock by Python version. AgentLab code does not import filelock or use ReadWriteLock. Fully fixed if the project raises its floor to 3.11.
  • pillow 12.3.0 (6H published 2026-10-19/20, e.g. GHSA-58r4-6rv3-gfh8, GHSA-p4wg-p73j-c528; fixed only in 13.0.0, no 12.x backport): gradio (latest 6.30.0) still pins pillow<13 (streamlit 1.66.1 now allows <14); as of 2026-10-24 this includes 2 Critical (GHSA-w889-685w-c8fh, GHSA-332p-7hrc-92wf), and pillow 13 needs Python >=3.11 while the project allows >3.10.
    Unblocking these requires upstream releases of the webarena packages (or dropping them), which is out of scope for a lockfile PR.

Verification

  • uv sync --frozen --extra dev --python 3.12 succeeds (macOS arm64).
  • pytest tests -m "not pricy": 60 passed, 8 failed, 15 skipped — the same 8 failures occur on main with the old lock (tests/agents/test_agent.py, tests/experiments/test_launch_exp.py; all need MINIWOB_URL / a running MiniWoB server). No new failures.
  • AgentXray UI: run_gradio() builds all 91 blocks under gradio 6.17.3 with launch stubbed; not driven interactively in a browser.
  • black --check src/ (CI code_format.yml runs the locked black, now 26.10.0): black 26 changed its style for multi-line f-string call arguments, so six untouched files (generic_agent.py, generic_agent_prompt.py, most_basic_agent.py, visual_agent_prompts.py, episode_to_html.py, reproduce_study.py) are reformatted in a separate formatting-only commit (style: reformat with black 26.10, +30/-63, whitespace/parenthesis changes only).
  • 2026-10-06 follow-up (fsspec): uv sync --frozen --extra dev OK, pip-audit shows no fsspec findings; pytest tests -m "not pricy" 59 passed / 9 failed / 15 skipped — the 8 known failures plus tests/experiments/test_ray.py::test_execute_task_graph ("node timed out during startup", raylet waiting on the dashboard agent's metrics port file). That ray failure reproduces identically with fsspec pinned back to 2026.2.0, so it is environmental on the verification host, not caused by the bump.
  • 2026-10-20 follow-up (aiohttp/yarl): only aiohttp and yarl versions change in uv.lock (other hunks are uv re-normalising environment markers, no version changes). uv lock --check and uv sync --frozen --extra dev --python 3.12 OK; pip-audit shows no aiohttp findings and no Critical/High yarl findings, and the residual Critical/High package set is unchanged (litellm, lxml, nltk, text-generation, transformers). black src/ --check OK. pytest tests -m "not pricy": 59 passed / 9 failed / 15 skipped — the same 8 known MiniWoB failures plus the macOS ray startup timeout (test_execute_task_graph) as on the 2026-10-06 run.
  • 2026-10-21 follow-up (certifi): uv lock --upgrade-package certifi changes only certifi in uv.lock. uv lock --check, uv sync --frozen --extra dev --python 3.12 OK; HTTPS request with requests against the new bundle succeeds. pip-audit + OSV: certifi finding gone; remaining Critical/High packages are litellm, lxml, nltk, pillow (new, blocked as above), text-generation, transformers. black src/ --check OK. pytest tests -m "not pricy": 59 passed / 9 failed / 15 skipped — identical to the 2026-10-20 run (8 MiniWoB + macOS ray startup timeout).
  • 2026-10-23 follow-up (gitpython/brotli/black): uv lock --upgrade-package gitpython --upgrade-package brotli --upgrade-package black changes only those three versions in uv.lock. uv sync --frozen --extra dev --python 3.12 OK; black src/ --check OK with black 26.10.1 (no reformat). pip-audit + OSV: the three findings are gone and no new advisory IDs appear; pillow remains blocked (gradio 6.30.0 still declares pillow<13.0). pytest tests -m "not pricy": 59 passed / 9 failed / 15 skipped, same as the 2026-10-21 run (8 MiniWoB + macOS ray startup timeout).
  • 2026-10-24 follow-up (filelock): uv lock --upgrade-package filelock changes only filelock entries in uv.lock (split into 4.1.0 for python_full_version < '3.11' and 4.2.4 for >= '3.11'). uv lock --check OK; uv sync --frozen OK on Python 3.10, 3.11 and 3.12 (the python_version_compatibility.yml matrix); black src/ --check OK. pip-audit + OSV (Python 3.12 markers): the three filelock findings are gone and no new advisory IDs appear. pytest tests -m "not pricy" (ray test file deselected): 58 passed / 8 failed / 15 skipped, the same 8 failures at the previous head 89a19b6 (5 test_agent.py + 2 test_launch_exp.py need MINIWOB_URL; test_launch_system_ray is the macOS ray startup timeout).

Impact: runtime dependencies (torch, transformers, gradio, ray, litellm are all imported by agentlab). Several bumps are major (gradio 5->6, mcp 1->2, starlette 0.47->1.x, protobuf 6->7, pyarrow 21->25, torch 2.2->2.14); only gradio needed a code change for import/build, but downstream behaviour should be smoke-tested.

Architecture review

ARB triage: ARB_LIGHT
Triggers:

  • T7 (minor): major-version bumps of existing libraries inside one repo (gradio 5->6, torch 2.2->2.14, protobuf 6->7, starlette 0.47->1.7, mcp 1->2). No new framework, runtime, or language.
    Not triggered: T1, T2, T3 (no new vendor/package), T4, T5, T6, T8, T9
    Required next steps: none (async review by one architect)
    2026-10-21 certifi patch bump of an existing transitive dependency adds no triggers.
    2026-10-22 virtualenv and 2026-10-23 gitpython/brotli/black patch bumps of existing dependencies add no triggers.
    2026-10-24 filelock minor bump of an existing transitive dependency adds no triggers.

Review & Testing Checklist

  • uv sync --frozen on a clean (Linux or Apple Silicon) machine; confirm uv pip list | grep -E "torch|gradio|transformers|ray" shows the versions above
  • Decide on Intel macOS support (see Platform trade-off)
  • Launch agentlab-xray against a real results dir and click through the Screenshot / Error Report tabs (gradio 6)
  • Run a short experiment with ray and joblib backends (ray 2.59 / pydantic 2.13)
  • Confirm no new peer warnings from uv sync
  • Open a risk-acceptance ticket for the litellm / transformers / lxml / text-generation / pillow residuals blocked by libwebarena pins

Link to Devin session: https://devin-gtm.devinenterprise.com/sessions/895f03bf6f04417a883971b914cd22e1
Open in Devin Desktop: https://devin-gtm.devinenterprise.com/desktop/session/895f03bf6f04417a883971b914cd22e1?variant=devin
Requested by: @vanessasalas-cog


Devin Review

…xray to gradio 6

Co-Authored-By: vanessa.salas <vanessa.salas@cognition.ai>
@devin-ai-integration

Copy link
Copy Markdown

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

@devin-ai-integration devin-ai-integration 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.

Note

Newer findings are available below. Devin Review posted a newer report on this PR, in addition to the findings presented here.

Devin Review found 1 potential issue.

🐛 1 issue in files not directly in the diff

🐛 Locked environment cannot install on Intel Macs

On Intel macOS, torch 2.14.1 and ray 2.59.0 have no compatible wheels or source distributions. uv sync --frozen cannot install agentlab there.

Devin Review

@devin-ai-integration

Copy link
Copy Markdown

Re "Locked environment cannot install on Intel Macs": correct, and it is an unavoidable consequence of the torch fix rather than a lock-resolution mistake. PyTorch 2.2.x was the last release line with macOS x86_64 wheels; every torch version that fixes CVE-2025-32434 / CVE-2026-24747 (2.6+) ships only arm64 (Apple Silicon) and Linux/Windows builds, so there is no lock that is both Intel-Mac-installable and free of these Critical/High findings. CI (unit_tests.yml, code_format.yml, darglint.yml) runs on Linux and is unaffected.

If Intel macOS development must stay supported, the options are (a) keep torch==2.2.2 for platform_system == "Darwin" and platform_machine == "x86_64" via a marker-split dependency in pyproject.toml and accept the two torch findings on that platform only, or (b) treat Intel macOS as unsupported (PyTorch itself has dropped it). I have noted the trade-off in the PR description and left the lock as-is pending a maintainer decision.

ReferenceFileSystem rendered attacker-controlled Kerchunk JSON through
un-sandboxed jinja2 templates (SSTI -> RCE); fixed in fsspec 2026.6.0.
Transitive via torch/dask/datasets/huggingface-hub; all parents accept the new version.

Co-Authored-By: vanessa.salas <vanessa.salas@cognition.ai>
@devin-ai-integration devin-ai-integration Bot changed the title fix(deps): upgrade uv.lock for Critical/High advisories (13 Critical + 115 High -> 4 + 16); adapt agent_xray to gradio 6 fix(deps): upgrade uv.lock for Critical/High advisories (13 Critical + 116 High -> 4 + 15); adapt agent_xray to gradio 6 Oct 6, 2026

@devin-ai-integration devin-ai-integration 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.

Note

Newer findings are available below. Devin Review posted a newer report on this PR, in addition to the findings presented here.

Devin Review found 0 new potential issues.

Devin Review

Co-Authored-By: vanessa.salas <vanessa.salas@cognition.ai>

@devin-ai-integration devin-ai-integration 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.

Devin Review found 0 new potential issues.

Devin Review

devin-ai-integration Bot and others added 5 commits October 20, 2026 08:20
…SA-2g87-pp6c-29x5, High)

Co-Authored-By: vanessa.salas <vanessa.salas@cognition.ai>
…7w-9gw2, Critical)

Co-Authored-By: vanessa.salas <vanessa.salas@cognition.ai>
, High)

Co-Authored-By: vanessa.salas <vanessa.salas@cognition.ai>
…HSA-v4x8-3wr5-3wq8, High)

filelock 4.2.1+ requires Python >=3.11, so uv forks the resolution:
Python 3.10 moves 4.0.12 -> 4.1.0 (latest 3.10-compatible, still affected).

Co-Authored-By: vanessa.salas <vanessa.salas@cognition.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants