fastapi==0.141.1 uvicorn==0.54.0 websockets>=12.0 python-frontmatter==1.1.0 mistune==3.3.3 python-multipart==0.0.31 aiofiles==23.2.1 # Plancher de sécurité : 3.14.3 est vulnérable à 8 CVE (dont # CVE-2026-111063/111064 et GHSA-2g87-pp6c-29x5), toutes corrigées en # 3.14.4 — pip-audit (CI, bloquant) exige de rester au-dessus. aiohttp>=3.14.4 watchdog>=4.0.0 argon2-cffi>=23.1.0 python-jose>=3.3.0 sortedcontainers>=2.4.0 snowballstemmer>=2.2.0 weasyprint>=70.0 httpx>=0.27.0 # Plancher de sécurité (BUG-093, relevé par #224) : 6.16.0 est vulnérable à # deux DoS de ressources (PYSEC-2026-3910 outlines, PYSEC-2026-3911 XForm, # fix 6.16.1), atteignables via backend/pdf_reader.py (PDF fournis par # l'utilisateur). #224 : la version préinstallée dans la toolcache du # runner (6.19.0) est frappée par 11 CVE supplémentaires (dont # CVE-2026-113786, CVE-2026-115572, CVE-2026-115585, CVE-2026-115580), # corrigées au plus tard en 6.21.2 — le plancher doit être >= 6.21.2 : # en dessous, pip répond « already satisfied » pour la toolcache et # n'aligne jamais (même piège que BUG-093). pypdf>=6.21.2 pyotp>=2.10.0 segno>=1.5.0 webauthn==2.6.0 psutil>=5.9 pywebpush>=2.3.0 # 1.28.1 vulnérable (CVE-2026-59951, fix 1.30.0) — épinglé sur la # première version corrigée de la même ligne 1.x. mcp==1.30.0 # Plancher de sécurité (BUG-091, BUG-095) : pyjwt est une dépendance transitive # (mcp). 2.12.x → PYSEC-2026-178 (fix 2.13.0) ; 2.13.0 → CVE-2026-102274 # (fix 2.14.0). pip-audit étant bloquant, on reste au-dessus du dernier correctif. pyjwt[crypto]>=2.14.0 sse-starlette==2.1.3 openpyxl>=3.1 xlrd==2.0.2 odfpy==1.4.1 python-docx>=1.1 reportlab>=4.0 # Plancher de sécurité : 12.3.0 est vulnérable à 8 CVE (dont # CVE-2026-112895 et CVE-2026-112400), toutes corrigées en 13.0.0. pillow>=13.0.0 # Plancher urllib3 >= 2.8.0 (CVE-2026-97687, CVE-2026-97688, CVE-2026-97689) urllib3>=2.8.0 # Plancher de sécurité (CVE-2026-104874, fix 6.9.1) : multidict est transitive # (aiohttp/yarl). 6.7.x est la version pré-installée dans la toolcache de # l'image du runner — sans plancher, pip répond « already satisfied » et # n'aligne jamais (même piège que pypdf, BUG-093). multidict>=6.9.1 # Plancher de sécurité (PYSEC-2026-4320, fix 2026.10.19) : certifi est # transitive (httpx/requests) — sans plancher explicite, pip-audit # signale la version héritée de l'environnement. certifi>=2026.10.19 # Planchers de sécurité (#224) : paquets transitifs ou préinstallés dans # la toolcache du runner, audités par pip-audit (CI, bloquant) mais jamais # alignés sans plancher explicite — « already satisfied » (même piège que # BUG-093). Versions relevées par le job security du run sur 2.78.0 : # brotli 1.2.0 (transitive fonttools[woff] via weasyprint) — PYSEC-2026-4322 # et GHSA-9v8h-qqgm-4m35, corrigées en 1.2.1. brotli>=1.2.1 # filelock 3.32.3 (transitive de CacheControl, outil pip-audit, et # préinstallée dans la toolcache) — CVE-2026-112940, CVE-2026-112913 et # CVE-2026-112907, corrigées en 4.2.1. filelock>=4.2.1 # opentelemetry-api 1.37.0 (préinstallée dans la toolcache du runner, # aucune dépendance directe d'ObsiGate) — CVE-2026-114603, corrigée # en 1.45.1. opentelemetry-api>=1.45.1