Skip to content

fix(deps): raise vulnerable dependency floors - #68648

Closed
martinramos002-bot wants to merge 1 commit into
NousResearch:mainfrom
martinramos002-bot:fix/security-dependency-floors-v2
Closed

martinramos002-bot wants to merge 1 commit into
NousResearch:mainfrom
martinramos002-bot:fix/security-dependency-floors-v2

Conversation

@martinramos002-bot

Copy link
Copy Markdown
Contributor

Summary

Raise vulnerable dependency floors and regenerate uv.lock from current main rather than reusing an older lockfile.

Direct/lazy-install pins are updated for:

  • cryptography 48.0.1
  • MCP 1.28.1
  • Pillow 12.3.0
  • pytest 9.0.3
  • python-multipart 0.0.32
  • Starlette 1.3.1
  • setuptools 83.0.0

The targeted lock refresh also resolves patched Click, httplib2, pydantic-settings, Pygments, and Tornado releases. Root dashboard metadata now carries explicit FastAPI/Starlette/multipart security floors so lean installs cannot resolve below them.

Audit evidence

Auditing the previous environment found:

  • PyPI advisory service: 43 vulnerabilities across 13 packages
  • OSV: 58 vulnerability records across 13 packages

Auditing an isolated environment built from this PR leaves only PyNaCl 1.5.0:

  • discord.py[voice] 2.7.1 requires PyNaCl>=1.5,<1.6
  • the fixed PyNaCl release is 1.6.2

That residual is documented rather than bypassing the resolver or silently removing voice support.

Validation

  • isolated Python 3.11 environment built from the regenerated frozen lock
  • pytest -q tests/test_project_metadata.py tests/tools/test_computer_use.py tests/hermes_cli/test_web_server_host_header.py239 passed
  • Ruff on changed Python/TOML paths — passed
  • uv lock --check — passed
  • uv pip check — all 93 installed packages compatible
  • source distribution and wheel build — passed
  • PyPI and OSV audit repeated against the isolated environment
  • git diff --check — passed
  • pre-publication sensitive-data scan — clean

@martinramos002-bot
martinramos002-bot force-pushed the fix/security-dependency-floors-v2 branch from 9407df3 to 667c248 Compare July 21, 2026 13:57
@alt-glitch alt-glitch added type/security Security vulnerability or hardening P3 Low — cosmetic, nice to have comp/tools Tool registry, model_tools, toolsets area/config Config system, migrations, profiles dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code labels Jul 21, 2026
@martinramos002-bot
martinramos002-bot marked this pull request as ready for review July 21, 2026 14:17
Copilot AI review requested due to automatic review settings July 21, 2026 14:17
@martinramos002-bot

Copy link
Copy Markdown
Contributor Author

Validation update: head 667c2488b30da82e9d1d4122a2d16469c4d5e7c1 completed all 37 GitHub checks with 0 failures and 0 pending. Local validation: 239 focused tests passed, frozen lock and package compatibility checks passed, and wheel/sdist builds succeeded. PyPI and OSV re-audits leave only the documented PyNaCl constraint from discord.py[voice].

@martinramos002-bot
martinramos002-bot requested a review from a team July 21, 2026 14:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@teknium1

Copy link
Copy Markdown
Collaborator

Thanks for the dependency-floor work. The remaining premise is still valid on current main, but this branch now requires conflict-aware salvage.

Problems

  • Current main already contains part of this proposal: pyproject.toml:87 pins cryptography==48.0.1, and the web/MCP paths already use starlette==1.3.1 and web python-multipart==0.0.32 (pyproject.toml:229, :301). Commit 623762f2f0 landed that remediation.
  • The remaining targets are still stale on main (pyproject.toml:105, :111, :125, :164, :229, :240, :337; tools/lazy_deps.py:279, :286). GitHub reports this PR as DIRTY, so its old-base lock snapshot cannot be reused unchanged.

Suggested changes

  • Salvage the still-needed floors onto current metadata, preserve the already-landed remediation, and regenerate uv.lock from that reconciled state.
  • Keep lazy-install pins synchronized with the project extras, using the existing parity contracts in tests/test_project_metadata.py:137-185 and :253-295.

Automated hermes-sweeper review.

@teknium1 teknium1 added sweeper:risk-security-boundary Sweeper risk: may affect sandboxing, auth, credentials, or sensitive data sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-broad Sweeper blast radius: broad — a core path most sessions hit labels Jul 30, 2026
@martinramos002-bot
martinramos002-bot force-pushed the fix/security-dependency-floors-v2 branch from 667c248 to 1ed8d90 Compare July 30, 2026 13:48
@martinramos002-bot

Copy link
Copy Markdown
Contributor Author

Rebased onto current main and reconciled only the dependency floors still missing there. Already-landed cryptography/Starlette/multipart remediation was preserved; lazy dependency specs and focused metadata expectations were updated, and uv.lock was regenerated with directed upgrades rather than conflict-edited. Verification on this head: uv lock --check; 87 focused metadata, computer-use, and web-host tests passed; syntax/TOML and git diff --check clean. The upstream build command remains gated by the repository's existing README/PyPI-description policy, unrelated to this diff.

@teknium1

teknium1 commented Aug 1, 2026

Copy link
Copy Markdown
Collaborator

Thanks — all bumps here are implemented on main (mcp 1.28.1, Pillow 12.3.0, starlette 1.3.1, and the setuptools==83.0.0 move in both dev extra and build-system). Main's tests/test_packaging_metadata.py already carries the starlette security-floor invariants. Closing as implemented on main.

@teknium1 teknium1 closed this Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/config Config system, migrations, profiles comp/tools Tool registry, model_tools, toolsets dependencies Pull requests that update a dependency file P3 Low — cosmetic, nice to have python:uv Pull requests that update python:uv code sweeper:blast-broad Sweeper blast radius: broad — a core path most sessions hit sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-security-boundary Sweeper risk: may affect sandboxing, auth, credentials, or sensitive data type/security Security vulnerability or hardening

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants