fix: plancher pypdf >= 6.16.1 - deux DoS de ressources bloques le job security BUG-093
CI / lint (push) Successful in 2m30s
CI / security (push) Successful in 1m49s
CI / test (push) Successful in 4m17s
CI / build (push) Successful in 3m2s
CI / e2e (push) Successful in 15m9s

pip-audit bloquait sur PYSEC-2026-3910 (outlines) et PYSEC-2026-3911 (XForm),
toutes deux atteignables via backend/pdf_reader.py. Le plancher pypdf>=4.0 ne
protégeait rien : l'image Act du runner embarque 6.16.0 dans sa toolcache
Python, donc pip répondait « already satisfied » sans jamais aligner.

Au passage, le garde-fou TestSemgrepStep était en régression depuis la
désactivation de semgrep (v2.39.9) et aurait rougi le job `test` : il vérifie
désormais que l'étape n'exécute que son avertissement et que bandit et
pip-audit restent bloquants. Nouveau TestDependencySecurityFloors pour
verrouiller les planchers de sécurité (contre-preuve : pypdf remis à >=4.0).

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <[email protected]>
This commit is contained in:
2026-09-29 13:06:53 -04:00
parent 4de9ee038c
commit 856e654306
13 changed files with 228 additions and 21 deletions
+31 -1
View File
@@ -6,7 +6,7 @@ Format basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/),
et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
> **En cours de développement** : les changements à venir sont listés dans la section
> [Unreleased](#unreleased). La dernière version livrée est **2.39.9**.
> [Unreleased](#unreleased). La dernière version livrée est **2.39.10**.
---
@@ -14,6 +14,36 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
---
## [2.39.10] — 2026-09-29
### Sécurité
- **BUG-093 — deux DoS de ressources dans `pypdf` 6.16.0 (PYSEC-2026-3910,
PYSEC-2026-3911) corrigés par le plancher `pypdf>=6.16.1`.**
Un PDF peut provoquer un temps de calcul et une consommation mémoire
arbitraires, soit via de nombreux contours (*outlines*), soit via une page
portant beaucoup d'objets XForm réutilisés. ObsiGate est **directement
exposé** : `backend/pdf_reader.py` extrait le texte et parcourt les contours
de PDF fournis par l'utilisateur. Le plancher `pypdf>=4.0` ne protégeait
rien en pratique — l'image du runner Act embarque 6.16.0 *préinstallé* dans
sa toolcache Python, donc `pip` répondait « already satisfied » et
n'alignait jamais la version. Tout plancher de sécurité doit désormais rester
au-dessus de la version préinstallée.
### Correction
- **Le job CI `security` n'est plus rouge : la désactivation de semgrep
fonctionne, et `pip-audit` est désormais réparé pour de bon.**
Le garde-fou `tests/test_ci_workflow.py::TestSemgrepStep`, en régression
depuis la désactivation (il exigeait encore l'exécution de semgrep),
vérifie maintenant que l'étape n'exécute que son `::warning::` et que
**bandit et pip-audit restent bloquants**. Nouveau garde-fou
`TestDependencySecurityFloors` : les planchers de sécurité (`pypdf`,
`pyjwt`) ne peuvent plus retomber sous leur correctif — contre-preuve
vérifiée (plancher remis à `>=4.0` → test rouge).
---
## [2.39.9] — 2026-09-29
### Correction