Skip to content

Pinned dependencies in requirements.txt carry 44 known HIGH/CRITICAL advisories, all with fixes available #5526

Description

@kobihikri

requirements.txt hasn't been regenerated since 2026-03-17, and because pyproject.toml:30 makes it the install set —

[tool.setuptools.dynamic]
dependencies = { file = "requirements.txt" }

— the pins in it are exactly what everyone gets from pip install aider-chat.

Scanning that file today reports 44 HIGH/CRITICAL advisories, and every one of them has a fixed version available. I checked the versions against OSV directly rather than trusting the scanner: litellm 1.82.3 → 25 advisories, gitpython 3.1.46 → 20, pillow 12.1.1 → 36, urllib3 2.6.3 → 4.

Two of the affected packages stood out to me as worth surfacing separately, because of what they do in aider specifically rather than because of their CVE counts:

litellm 1.82.3 — this is the path every provider request goes through, so it's the code holding the user's API keys. It carries three CRITICALs, including:

CVE Fixed in
CVE-2026-49468 — LiteLLM: Authentication Bypass via Host Header Injection (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) 1.84.0
CVE-2026-42208 1.83.7
CVE-2026-35030 1.83.0

gitpython 3.1.46 — aider touches the user's repository through this on essentially every run. Four HIGH advisories, fixed across 3.1.47–3.1.49 (CVE-2026-42215, CVE-2026-42284, CVE-2026-44243, CVE-2026-44244).

The rest, briefly: pillow 12.1.1 → 12.3.0 (9 HIGH), urllib3 2.6.3 → 2.7.0 (CVE-2026-44431/44432), starlette 0.52.1 (CVE-2026-48818, CVE-2026-54283), soupsieve 2.8.3 → 2.8.4.

I also noticed there's no .github/dependabot.yml, which would explain how five months passed without this surfacing — nothing is watching these pins.

On the fix: I don't think this is a case where an outside PR helps. CONTRIBUTING.md says these files are generated by ./scripts/pip-compile.sh and committed, so the change should come from that script on your toolchain rather than from me hand-editing pins. And a blanket regeneration isn't obviously safe either — litellm 1.82.3 → 1.84.0 crosses minor versions, and the model-name tables move with it, so that one probably wants deliberate validation rather than a bump.

So the realistic options as I see them, and it's your call which:

  1. Re-run ./scripts/pip-compile.sh and validate against the test suite.
  2. Targeted bumps of just the security-relevant pins (litellm, gitpython, pillow, urllib3, starlette), leaving the rest alone.
  3. Add a dependabot.yml so this surfaces automatically next time.

Happy to open a PR for any of these if it's useful — I held off because a large generated diff from an outside contributor seemed more likely to get in the way than help. Also happy to be told this is already tracked somewhere I didn't find; I searched open and closed issues and PRs for dependency/CVE/security and came up empty.


Disclosure: I used an AI coding agent (Claude Opus 5) to help run the scan and cross-check the advisories. I verified the pins against pyproject.toml, confirmed the CVE details against OSV myself, and checked the fix path in CONTRIBUTING.md before opening this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions