Skip to content

fix(security): bump certifi to 2026.10.19 (CVE-2026-111943) - #474

Open
TechnoFinch wants to merge 1 commit into
mainfrom
fix/sec-3320-python-certifi
Open

TechnoFinch wants to merge 1 commit into
mainfrom
fix/sec-3320-python-certifi

Conversation

@TechnoFinch

@TechnoFinch TechnoFinch commented Oct 21, 2026 •

Copy link
Copy Markdown

Summary

Bumps certifi to 2026.10.19 in response to CVE-2026-111943 (eMudhra/emSign intermediate CA compromise). certifi 2026.10.19 removes the emSign root from the CA bundle used by requests/httpx/urllib3/aiohttp.

Changes (old -> new)

  • poetry.lock: certifi 2025.4.26 -> 2026.10.19

Only the certifi entry was changed (version, python-versions, and both file hashes, verified against PyPI). No other packages were touched. poetry update certifi --lock with a newer Poetry also rewrote some unrelated formatting, so only the certifi entry was kept.

No pip or uv pins are present in the repo, so none were changed.

Notes

The fix applies once the package or images are rebuilt and redeployed. Images should also pick up the updated OS ca-certificates.


Note

Low Risk
Single transitive dependency bump in the lockfile for a known CA-bundle CVE; no app logic changes, though TLS trust behavior updates after rebuild/redeploy.

Overview
Updates the locked certifi dependency in poetry.lock from 2025.4.26 to 2026.10.19 to address CVE-2026-111943 (compromised eMudhra/emSign intermediate CA). The new bundle drops the affected emSign root, which flows through to TLS clients that use this lockfile (e.g. requests, httpx).

Only the certifi lock entry changes (version, minimum Python version, and wheel/sdist hashes). No application code or other packages are modified.

Reviewed by Cursor Bugbot for commit 8575104. Bugbot is set up for automated code reviews on this repo. Configure here.

@broly-code-security-scanner

Copy link
Copy Markdown

Broly Security Scan

Warning

Summary

14 actionable finding(s) in this PR

  • 🔴 3 critical
  • 🟠 5 high
  • 🟡 6 medium

Main table: 13 shown, 1 omitted of 14 actionable finding(s) above the reporting threshold. See the repository Security tab for the full set.

Severity Scanner Issue Location Dismiss Verdict
🔴 CRITICAL SCA black@25.9.0 — 3 vulnerabilities (worst:
PYSEC-2026-2120)
poetry.lock:1 d1 🔺 TRUE_POSITIVE · Confidence: HIGH
🔴 CRITICAL SCA transformers@4.56.2 — 15 vulnerabilities (worst:
PYSEC-2026-2290)
poetry.lock:1 d3 🔺 TRUE_POSITIVE · Confidence: HIGH
🔴 CRITICAL SCA pillow@11.3.0 — 45 vulnerabilities (worst:
GHSA-8g5g-8vmr-9782)
poetry.lock:1 d2 🔺 TRUE_POSITIVE · Confidence: HIGH
🟠 HIGH SCA urllib3@2.4.0 — 16 vulnerabilities (worst:
GHSA-2xpw-w6gg-jr37)
poetry.lock:1 d7 🔺 TRUE_POSITIVE · Confidence: HIGH
🟠 HIGH SCA fsspec@2025.3.0 — 2 vulnerabilities (worst:
GHSA-27vj-qcqg-25rc)
→ fixed in 2026.6.0
poetry.lock:1 d5 🔺 TRUE_POSITIVE · Confidence: HIGH
🟠 HIGH SCA aiohttp@3.12.15 — 72 vulnerabilities (worst:
GHSA-2g87-pp6c-29x5)
poetry.lock:1 d4 🔺 TRUE_POSITIVE · Confidence: HIGH
🟠 HIGH SCA virtualenv@20.34.0 — 10 vulnerabilities (worst:
GHSA-p58f-9548-mpm2)
poetry.lock:1 d8 🔺 TRUE_POSITIVE · Confidence: HIGH
🟠 HIGH SCA pyarrow@21.0.0 — 2 vulnerabilities (worst:
GHSA-rgxp-2hwp-jwgg)
→ fixed in 23.0.1
poetry.lock:1 d6 🔺 TRUE_POSITIVE · Confidence: HIGH
🟡 MEDIUM SCA datasets@4.1.1 — 2 vulnerabilities (worst:
GHSA-379c-qx7v-6h59)
→ fixed in 5.0.1
poetry.lock:1 d9 🔺 TRUE_POSITIVE · Confidence: HIGH
🟡 MEDIUM SCA idna@3.10 — 2 vulnerabilities (worst:
GHSA-65pc-fj4g-8rjx)
→ fixed in 3.15
poetry.lock:1 d11 🔺 TRUE_POSITIVE · Confidence: HIGH
🟡 MEDIUM SCA pytest@8.4.2 — 2 vulnerabilities (worst:
GHSA-6w46-j5rx-g56g)
→ fixed in 9.0.3
poetry.lock:1 d13 🔺 TRUE_POSITIVE · Confidence: HIGH
🟡 MEDIUM SCA filelock@3.19.1 — 4 vulnerabilities (worst:
GHSA-w853-jp5j-5j7f)
poetry.lock:1 d10 🔺 TRUE_POSITIVE · Confidence: HIGH
🟡 MEDIUM SCA requests@2.32.5 — 2 vulnerabilities (worst:
PYSEC-2026-2275)
→ fixed in 2.33.0
poetry.lock:1 d14 🔺 TRUE_POSITIVE · Confidence: HIGH

Fix Suggestions

black@25.9.0 — 3 vulnerabilities (worst: PYSEC-2026-2120) — poetry.lock:1

Pin black to a patched version once available (e.g., poetry add black@latest --group dev) or, as a workaround, remove/upgrade black and run the formatter only in an isolated, untrusted-input-free CI environment; monitor PYSEC-2026-2120, PYSEC-2026-2121, and GHSA-3936-cmfr-pm3m for fixed releases.

transformers@4.56.2 — 15 vulnerabilities (worst: PYSEC-2026-2290) — poetry.lock:1

Upgrade to the latest transformers release that addresses the individual advisories (e.g., poetry add transformers@latest or poetry update transformers), and since no single fixed version covers all 15 advisories, review each advisory individually and pin to the newest available version while monitoring for patched releases; as an interim mitigation, avoid loading untrusted models/checkpoints and disable unsafe deserialization paths.

pillow@11.3.0 — 45 vulnerabilities (worst: GHSA-8g5g-8vmr-9782) — poetry.lock:1

Upgrade to the latest available Pillow release (e.g., poetry add pillow@latest or poetry update pillow) and monitor for patched releases addressing GHSA-8g5g-8vmr-9782; as an interim workaround, restrict or sandbox processing of untrusted image inputs.


Dismiss false positives

Tick a box to dismiss the finding; untick it to bring the finding back. That is the same as replying /broly dismiss d1 and /broly undismiss d1. To record why it is a false positive, reply with /broly dismiss d1: your reason instead — Broly reuses those reasons to triage similar findings across the org.

  • d1 · 🔴 CRITICAL · poetry.lock:1 · black@25.9.0 — 3 vulnerabilities (worst: PYSEC-2026-2120)
  • d2 · 🔴 CRITICAL · poetry.lock:1 · pillow@11.3.0 — 45 vulnerabilities (worst: GHSA-8g5g-8vmr-9782)
  • d3 · 🔴 CRITICAL · poetry.lock:1 · transformers@4.56.2 — 15 vulnerabilities (worst: PYSEC-2026-2290)
  • d4 · 🟠 HIGH     · poetry.lock:1 · aiohttp@3.12.15 — 72 vulnerabilities (worst: GHSA-2g87-pp6c-29x5)
  • d5 · 🟠 HIGH     · poetry.lock:1 · fsspec@2025.3.0 — 2 vulnerabilities (worst: GHSA-27vj-qcqg-25rc)
  • d6 · 🟠 HIGH     · poetry.lock:1 · pyarrow@21.0.0 — 2 vulnerabilities (worst: GHSA-rgxp-2hwp-jwgg)
  • d7 · 🟠 HIGH     · poetry.lock:1 · urllib3@2.4.0 — 16 vulnerabilities (worst: GHSA-2xpw-w6gg-jr37)
  • d8 · 🟠 HIGH     · poetry.lock:1 · virtualenv@20.34.0 — 10 vulnerabilities (worst: GHSA-p58f-9548-mpm2)
  • d9 · 🟡 MEDIUM   · poetry.lock:1 · datasets@4.1.1 — 2 vulnerabilities (worst: GHSA-379c-qx7v-6h59)
  • d10 · 🟡 MEDIUM   · poetry.lock:1 · filelock@3.19.1 — 4 vulnerabilities (worst: GHSA-w853-jp5j-5j7f)
  • d11 · 🟡 MEDIUM   · poetry.lock:1 · idna@3.10 — 2 vulnerabilities (worst: GHSA-65pc-fj4g-8rjx)
  • d12 · 🟡 MEDIUM   · poetry.lock:1 · pygments@2.19.1 — 2 vulnerabilities (worst: PYSEC-2026-2987)
  • d13 · 🟡 MEDIUM   · poetry.lock:1 · pytest@8.4.2 — 2 vulnerabilities (worst: GHSA-6w46-j5rx-g56g)
  • d14 · 🟡 MEDIUM   · poetry.lock:1 · requests@2.32.5 — 2 vulnerabilities (worst: PYSEC-2026-2275)

Note

Re-scan this PR anytime with /broly scan — useful after /broly undismiss, or to refresh findings without a new push.

Broly — SAST (GLM-5.3-Flash) · Secrets · SCA · IaC · GH Actions · Base Images · Supply Chain Threats · Attack Hypotheses · Adversarial Verification

We're continuously improving Broly's accuracy and finding quality — your feedback is valuable. False positives, missed findings, bugs, and feature requests all welcome.

Ask in #security-engineering   Powered by Together 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.

1 participant