Skip to content

Daily security sweep — backlog #12

Description

@benfrank241

Tracking issue for advisories in langchain/uv.lock that the daily security sweep could not clear, so they are not silently lost. Updated per run.

Context: Dependabot is not scanning this repo

GET /repos/vectorize-io/integrations-python/dependabot/alerts returns HTTP 200 with an empty array in every state (open, fixed, dismissed, auto_dismissed) while langchain/uv.lock is committed — the repo has never been scanned, so there are no alert numbers anywhere in this issue, only GHSA/CVE ids.

Action for a maintainer: enable Dependabot alerts under Settings -> Code security. Until then this repo is invisible to it and every sweep has to re-derive the advisory set by hand with uv export | uvx pip-audit.


2026-09-02

Baseline on main: 23 findings across 8 packages (uvx pip-audit, py3.13 resolution leg).

Shipped: #10 (12 advisories: h11, idna, orjson, requests, urllib3, pytest) and #11 (9 advisories: langchain-core, langsmith — major, needs review).

No check failed; nothing was backlogged for a build failure. What follows is backlogged because no upgrade path exists, not because anything broke.

Root cause of everything below: requires-python = ">=3.9"

Python 3.9 has been EOL since October 2025 and every fix listed here dropped 3.9 support. The lock therefore resolves two legs, and the 3.9 leg cannot be made clean at any version. Concretely, after #10 + #11 the py3.9 leg still carries:

package best available on py3.9 still open fix version fix requires
urllib3 2.6.3 GHSA-qccp-gfcp-xxvc (CVE-2026-44431) 2.7.0 py>=3.10
urllib3 2.6.3 GHSA-mf9v-mfxr-j63j (CVE-2026-44432) 2.7.0 py>=3.10
requests 2.32.5 GHSA-gc5v-m9x4-r6x2 (CVE-2026-25645) 2.33.0 py>=3.10
orjson 3.11.5 GHSA-hx9q-6w63-j58v (CVE-2025-67221) 3.11.6 py>=3.10
pytest (dev) 8.4.2 GHSA-6w46-j5rx-g56g (CVE-2025-71176) 9.0.3 py>=3.10
langchain-core 0.3.86 GHSA-qh6h-p6c9-ff54 (CVE-2026-34070) 1.2.22 py>=3.10
langchain-core 0.3.86 GHSA-2g6r-c272-w58r (CVE-2026-26013) 1.2.11 py>=3.10
langsmith 0.4.37 GHSA-3644-q5cj-c5c7 (CVE-2026-45134) 0.8.0 py>=3.10
langsmith 0.4.37 GHSA-rr7j-v2q5-chgv (CVE-2026-41182) 0.7.31 py>=3.10
langsmith 0.4.37 GHSA-v34v-rq6j-cj6p (CVE-2026-25528) 0.6.3 py>=3.10
langsmith 0.4.37 GHSA-f4xh-w4cj-qxq8 0.8.18 py>=3.10

Proposed fix: drop Python 3.9. Remove it from requires-python, the classifiers block in langchain/pyproject.toml, and the matrices in .github/workflows/python_test.yml and lint.yml. That collapses the two resolution legs into one and clears every advisory above. It is an API-compatibility decision for the published langchain-vectorize package, so the sweep will not make it unilaterally.

Two regressions introduced on the py3.9 leg (accepted knowingly)

Both are cases where the newest 3.9-compatible version is itself vulnerable, and staying put would have been worse overall:

  1. urllib3 2.3.0 -> 2.6.3 introduces GHSA-mf9v-mfxr-j63j (introduced in 2.6.0, fixed in 2.7.0). It clears 5 other urllib3 advisories in exchange, so 6 -> 2.
  2. langsmith 0.3.15 -> 0.4.37 (forced by chore(security): bump langchain-core 0.3.45 -> 1.6.1 (9 advisories) - MAJOR, needs review #11: langchain-core 0.3.86 requires langsmith>=0.3.45) introduces GHSA-v34v-rq6j-cj6p (introduced in 0.4.10, fixed in 0.6.3). This one is a genuine net negative for the 3.9 leg: 3 -> 4. It is unavoidable while both langchain-core 0.3.86 and py3.9 are in play, and disappears entirely if 3.9 is dropped.

Note on local verification

langchain/tests/test_retrievers.py is a live integration suite, not a unit suite — its session fixture raises ValueError: Please set the VECTORIZE_TOKEN environment variable. It cannot be executed outside CI, on main or on any branch. Sweep verification is therefore limited to uv sync --dev, ruff format --check, ruff check, mypy . and pytest collection, on both py3.9 and py3.13; actual test execution is delegated to each PR's own CI run.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions