Claude commited on
Commit
657a5ae
Β·
unverified Β·
1 Parent(s): e4838d8

fix(docker): patch Debian + setuptools/wheel CVEs (Trivy CI remediation)

Browse files

Trivy v0.36.0 a remontΓ© 26 vulnΓ©rabilitΓ©s HIGH/CRITICAL sur l'image
docker construite depuis ``python:3.11.13-slim`` :

- 20 CVE OS-level (libc6, libssl3t64, openssl, openssl-provider-legacy)
- 6 CVE Python (setuptools 65.5.0/65.5.1, wheel 0.45.1)

Correctifs appliquΓ©s au Dockerfile (builder + runtime) :

1. ``apt-get upgrade -y`` AVANT ``apt-get install`` pour rΓ©cupΓ©rer les
patches Debian disponibles dans le repo stable (libssl3t64, libc6,
openssl…). La base ``python:3.11.13-slim`` n'embarque pas ces
patches par dΓ©faut.

2. Upgrade explicite de la copie système de ``pip``, ``setuptools`` et
``wheel`` (en dehors du venv) β€” Trivy scanne aussi
``/usr/local/lib/python3.11/site-packages`` indΓ©pendamment du venv :
- pip>=24.2
- setuptools>=78.1.1 (CVE-2022-40897, CVE-2024-6345, CVE-2025-47273)
- wheel>=0.46.2 (CVE-2026-24049)

3. Idem dans le venv créé par ``pip install -e``.

Note SPECS.md : remontΓ©e d'une rΓ©gression du test
``test_specs_addendum_present`` (test attend le mot ``Addendum`` avec
majuscule, le SPECS v2 le portait en minuscule depuis A14).
``addendum`` β†’ ``Addendum`` Γ  la ligne unique de la Β§12 ``Migration v1
β†’ v2``.

Refs:
- Audit institutional-readiness-2026-05 (sprint A14)
- Trivy CI run prΓ©cΓ©dent (26 CVE remontΓ©es)

https://claude.ai/code/session_013YP6f4LxfLKTZgmY1tucX7

Files changed (2) hide show
  1. Dockerfile +49 -26
  2. SPECS.md +1 -1
Dockerfile CHANGED
@@ -43,24 +43,36 @@ FROM ${PYTHON_BASE_IMAGE} AS builder
43
 
44
  WORKDIR /app
45
 
46
- # Dépendances système pour la compilation
47
- RUN apt-get update && apt-get install -y --no-install-recommends \
48
- build-essential \
49
- git \
50
- && rm -rf /var/lib/apt/lists/*
 
 
 
 
 
51
 
52
  # Copier les fichiers de configuration du package
53
  COPY pyproject.toml .
54
  COPY README.md .
55
  COPY picarones/ picarones/
56
 
57
- # CrΓ©er un venv isolΓ© et installer Picarones avec les extras web
58
- RUN python -m venv /opt/venv
59
- ENV PATH="/opt/venv/bin:$PATH"
60
- RUN pip install --upgrade pip && \
 
 
61
  pip install -e ".[web,llm]" && \
62
  pip cache purge
63
 
 
 
 
 
 
64
  # ──────────────────────────────────────────────────────────────────
65
  # Γ‰tape 2 : runtime β€” image finale lΓ©gΓ¨re avec Tesseract
66
  # ──────────────────────────────────────────────────────────────────
@@ -78,23 +90,34 @@ LABEL org.opencontainers.image.licenses="Apache-2.0"
78
  WORKDIR /app
79
 
80
  # ── DΓ©pendances systΓ¨me ─────────────────────────────────────────
81
- RUN apt-get update && apt-get install -y --no-install-recommends \
82
- # Tesseract OCR 5 et modèles de langues
83
- tesseract-ocr \
84
- tesseract-ocr-fra \
85
- tesseract-ocr-lat \
86
- tesseract-ocr-eng \
87
- tesseract-ocr-deu \
88
- tesseract-ocr-ita \
89
- tesseract-ocr-spa \
90
- # Bibliothèques image pour Pillow
91
- libpng16-16 \
92
- libjpeg62-turbo \
93
- libtiff6 \
94
- libwebp7 \
95
- # Utilitaires
96
- curl \
97
- && rm -rf /var/lib/apt/lists/*
 
 
 
 
 
 
 
 
 
 
 
98
 
99
  # ── Venv Python depuis le builder ──────────────────────────────
100
  COPY --from=builder /opt/venv /opt/venv
 
43
 
44
  WORKDIR /app
45
 
46
+ # Sprint A14 (correctif suite scan Trivy CI) β€” applique en prioritΓ© les
47
+ # patches Debian disponibles AVANT d'installer build-essential/git, pour
48
+ # Γ©viter d'embarquer les CVE de la base image (libssl3t64, libc6, etc.).
49
+ RUN apt-get update && \
50
+ apt-get upgrade -y && \
51
+ apt-get install -y --no-install-recommends \
52
+ build-essential \
53
+ git && \
54
+ apt-get clean && \
55
+ rm -rf /var/lib/apt/lists/*
56
 
57
  # Copier les fichiers de configuration du package
58
  COPY pyproject.toml .
59
  COPY README.md .
60
  COPY picarones/ picarones/
61
 
62
+ # CrΓ©er un venv isolΓ© et installer Picarones avec les extras web.
63
+ # Sprint A14 (correctif Trivy) : upgrade explicite de setuptools et wheel
64
+ # (CVE-2022-40897, CVE-2024-6345, CVE-2025-47273, CVE-2026-24049) avant
65
+ # l'install du package, sinon les versions hΓ©ritΓ©es de la base image
66
+ # Python (65.5.1 / 0.45.1) restent vulnΓ©rables.
67
+ RUN pip install --upgrade pip setuptools wheel && \
68
  pip install -e ".[web,llm]" && \
69
  pip cache purge
70
 
71
+ # Patch également la copie système de pip/setuptools/wheel (en dehors du
72
+ # venv) que Trivy dΓ©tecte via /usr/local/lib/python3.11/site-packages.
73
+ RUN /usr/local/bin/pip install --upgrade --no-cache-dir \
74
+ "pip>=24.2" "setuptools>=78.1.1" "wheel>=0.46.2"
75
+
76
  # ──────────────────────────────────────────────────────────────────
77
  # Γ‰tape 2 : runtime β€” image finale lΓ©gΓ¨re avec Tesseract
78
  # ──────────────────────────────────────────────────────────────────
 
90
  WORKDIR /app
91
 
92
  # ── DΓ©pendances systΓ¨me ─────────────────────────────────────────
93
+ # Sprint A14 (correctif Trivy) : ``apt-get upgrade -y`` avant install
94
+ # pour rΓ©cupΓ©rer les patches de sΓ©curitΓ© Debian (libssl3t64, libc6,
95
+ # openssl, etc.) β€” la base image Python ne les inclut pas par dΓ©faut.
96
+ RUN apt-get update && \
97
+ apt-get upgrade -y && \
98
+ apt-get install -y --no-install-recommends \
99
+ # Tesseract OCR 5 et modèles de langues
100
+ tesseract-ocr \
101
+ tesseract-ocr-fra \
102
+ tesseract-ocr-lat \
103
+ tesseract-ocr-eng \
104
+ tesseract-ocr-deu \
105
+ tesseract-ocr-ita \
106
+ tesseract-ocr-spa \
107
+ # Bibliothèques image pour Pillow
108
+ libpng16-16 \
109
+ libjpeg62-turbo \
110
+ libtiff6 \
111
+ libwebp7 \
112
+ # Utilitaires
113
+ curl && \
114
+ apt-get clean && \
115
+ rm -rf /var/lib/apt/lists/*
116
+
117
+ # Patch pip/setuptools/wheel système du runtime (en dehors du venv).
118
+ # Trivy scanne /usr/local/lib/python3.11/site-packages indΓ©pendamment.
119
+ RUN /usr/local/bin/pip install --upgrade --no-cache-dir \
120
+ "pip>=24.2" "setuptools>=78.1.1" "wheel>=0.46.2"
121
 
122
  # ── Venv Python depuis le builder ──────────────────────────────
123
  COPY --from=builder /opt/venv /opt/venv
SPECS.md CHANGED
@@ -809,7 +809,7 @@ L'**Γ©tat du plan institutionnel** au 2 mai 2026 :
809
  ## 12. Migration v1 β†’ v2 β€” annexe historique
810
 
811
  Pour les lecteurs qui avaient pris connaissance de SPECS v1.0
812
- (mars 2025) ou de l'addendum Sprints 16-30, voici la table de
813
  migration des promesses changΓ©es :
814
 
815
  | SPECS v1 disait | SPECS v2 documente | Raison |
 
809
  ## 12. Migration v1 β†’ v2 β€” annexe historique
810
 
811
  Pour les lecteurs qui avaient pris connaissance de SPECS v1.0
812
+ (mars 2025) ou de l'Addendum Sprints 16-30, voici la table de
813
  migration des promesses changΓ©es :
814
 
815
  | SPECS v1 disait | SPECS v2 documente | Raison |