Skip to content

fix(deps): address critical and high severity security vulnerabilities#827

Merged
nicoloboschi merged 6 commits intomainfrom
fix/security-dependency-updates
Apr 1, 2026
Merged

fix(deps): address critical and high severity security vulnerabilities#827
nicoloboschi merged 6 commits intomainfrom
fix/security-dependency-updates

Conversation

@dcbouius
Copy link
Copy Markdown
Contributor

@dcbouius dcbouius commented Apr 1, 2026

Summary

  • Bump fastmcp >=2.14.0 → >=3.2.0 — fixes critical SSRF/path traversal, high OAuth confused deputy, and medium command injection vulnerabilities
  • Bump langchain-core >=1.2.11 → >=1.2.22 — fixes high severity path traversal in legacy load_prompt functions
  • Bump cryptography >=46.0.5 → >=46.0.6 — fixes incomplete DNS name constraint enforcement
  • Add pygments >=2.20.0 transitive pin — fixes ReDoS via inefficient GUID regex
  • Bump serialize-javascript ^7.0.3 → ^7.0.5 — fixes CPU exhaustion DoS
  • Add handlebars >=4.7.9 npm override — fixes critical/high JS injection via AST type confusion
  • Add path-to-regexp >=0.1.13 npm override — fixes high ReDoS via multiple route parameters
  • Add brace-expansion version range override — fixes medium process hang/memory exhaustion
  • Add type: ignore comments for FastMCP 2.x _tool_manager private attribute access (now flagged by ty since 3.x removed it; guarded by try/except and hasattr at runtime)
  • Regenerated all lock files (uv.lock, package-lock.json) across API, integrations, and tests

Addresses dependabot alerts: https://github.com/vectorize-io/hindsight/security/dependabot

Test plan

  • All lints pass (./scripts/hooks/lint.sh)
  • CI tests pass (existing test suite validates no regressions from dependency bumps)
  • Verify MCP tool registration works with FastMCP 3.2.0 (code already has 2.x/3.x compat layer)

Bump vulnerable dependencies to patched versions across the monorepo:

Python (critical/high):
- fastmcp >=2.14.0 → >=3.2.0 (SSRF, path traversal, OAuth confused deputy, command injection)
- langchain-core >=1.2.11 → >=1.2.22 (path traversal in legacy load_prompt)

Python (low):
- cryptography >=46.0.5 → >=46.0.6 (incomplete DNS name constraint enforcement)
- pygments: add >=2.20.0 pin (ReDoS via GUID regex)

Node.js:
- serialize-javascript ^7.0.3 → ^7.0.5 (CPU exhaustion DoS)
- handlebars: add >=4.7.9 override (JS injection via AST type confusion)
- path-to-regexp: add >=0.1.13 override (ReDoS via route params)
- brace-expansion: add version range override (process hang/memory exhaustion)

Also adds type: ignore comments for FastMCP 2.x private attribute access that
ty now flags since FastMCP 3.x removed _tool_manager (guarded by try/except
and hasattr at runtime).

Regenerated all lock files across API, integrations, and tests.
The global ajv ^6.14.0 override caused schema-utils and ajv-keywords to
receive ajv v6, but they require ajv v8 (for dist/compile/codegen). Add
scoped overrides to ensure these packages get ajv v8 while the global
override remains for packages that need v6.
FastMCP 3.x no longer accepts stateless_http in the constructor. The
tests call tools directly without HTTP transport, so the parameter is
not needed.
FastMCP 3.x removed _tool_manager. Tests now use
_local_provider._components for sync tool dict access and
mcp.list_tools() for async filtered tool listing.
…date)

- Remove global ajv ^6.14.0 override and scoped ajv-keywords/schema-utils
  overrides that caused webpack compilation errors manifesting as
  "Cannot read properties of undefined (reading 'date')" during SSR
  and "these parameters are deprecated" warnings. Natural version
  resolution (v6.12.6+ for v6 consumers, v8+ for v8 consumers) already
  satisfies the security fix (>= 6.12.3).
- Add missing date frontmatter to learning-capabilities blog post.
Copy link
Copy Markdown
Collaborator

@nicoloboschi nicoloboschi left a comment

Choose a reason for hiding this comment

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

LGTM, thanks

@nicoloboschi nicoloboschi merged commit ee4510a into main Apr 1, 2026
94 of 96 checks passed
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