fix: desactive l'etape semgrep du job security - core natif inexecutable sur ce runner BUG-091
This commit is contained in:
+14
-57
@@ -131,26 +131,14 @@ jobs:
|
||||
python-version: "3.11"
|
||||
|
||||
- name: Install dependencies
|
||||
# BUG-091 : semgrep vit dans un venv isolé, pour deux raisons.
|
||||
# 1) CPU du runner : la dernière version publiée en wheel
|
||||
# manylinux2014 (baseline x86-64 v1) est 1.157.0 ; la série 1.158+
|
||||
# ne publie plus que manylinux_2_34/2_35, dont les libs natives
|
||||
# exigent x86-64-v2 → « CPU ISA level is lower than required »
|
||||
# (exit 127) au moindre appel.
|
||||
# 2) Dépendances incompatibles avec l'env principal : semgrep 1.157.0
|
||||
# fixe tomli~=2.0.1 (pip-audit 2.10+ exige >=2.2.1) et
|
||||
# pyjwt~=2.12.0 (PYSEC-2026-178) — le plancher pyjwt>=2.13.0 de
|
||||
# requirements.txt resterait insatisfaisable s'il était co-installé.
|
||||
# 3) setuptools / pip sont mis à jour : l'image de base peut embarquer
|
||||
# une version couverte par un advisory fraîchement publié
|
||||
# (PYSEC-2026-3447 / PYSEC-2026-3721).
|
||||
# setuptools / pip sont mis à jour : l'image de base peut embarquer
|
||||
# une version couverte par un advisory fraîchement publié
|
||||
# (PYSEC-2026-3447 / PYSEC-2026-3721).
|
||||
# NOTE runner Gitea Act (BUG-083) : aucun `#` dans le `run:`.
|
||||
run: |
|
||||
pip install -U pip setuptools
|
||||
pip install bandit pip-audit
|
||||
pip install -r backend/requirements.txt
|
||||
python -m venv "$HOME/semgrep-venv"
|
||||
"$HOME/semgrep-venv/bin/pip" install --quiet semgrep==1.157.0
|
||||
|
||||
- name: Bandit (SAST, bloquant — #87)
|
||||
# B105 est exclu (aligné avec [tool.bandit] de pyproject.toml :
|
||||
@@ -158,51 +146,20 @@ jobs:
|
||||
# vrais positifs restants portent un `# nosec` justifié inline.
|
||||
run: bandit -r backend/ --skip B101,B105,B110,B310
|
||||
|
||||
- name: Diagnostic semgrep-core (BUG-091)
|
||||
# Le core est un exécutable natif : selon le runner il sort en 127,
|
||||
# soit avec un message ISA (CPU trop ancien), soit sans message
|
||||
# (fs noexec, fichier absent, permissions). On trace CPU, options de
|
||||
# montage, taille/permissions du core et exécution brute.
|
||||
# NOTE runner Gitea Act (BUG-083) : aucun `#` dans le `run:`.
|
||||
run: |
|
||||
echo "== CPU =="
|
||||
grep -m1 "model name" /proc/cpuinfo || echo "cpuinfo illisible"
|
||||
echo -n "flags attendues : "
|
||||
for f in sse4_2 popcnt avx avx2; do
|
||||
if grep -qm1 " $f " /proc/cpuinfo; then echo -n "$f "; fi
|
||||
done
|
||||
echo
|
||||
echo "== montages (noexec ?) =="
|
||||
findmnt -no TARGET,OPTIONS / /tmp "$HOME" 2>/dev/null || cat /proc/mounts
|
||||
echo "== core =="
|
||||
CORE=$("$HOME/semgrep-venv/bin/python" -c "import semgrep,os;print(os.path.join(os.path.dirname(semgrep.__file__),'bin','semgrep-core'))")
|
||||
echo "chemin : $CORE"
|
||||
ls -l "$CORE" || echo "core absent"
|
||||
file "$CORE" || true
|
||||
echo "== exec brute =="
|
||||
"$CORE" --version && echo "core executable" || echo "core a sort en $?"
|
||||
|
||||
- name: Semgrep (SAST local, #87)
|
||||
# Règles 100 % locales (semgrep-rules/, 8 règles) : aucun
|
||||
# téléchargement de registre (runner au réseau fragile).
|
||||
# Venv isolé (BUG-091) : cf. l'étape « Install dependencies ».
|
||||
# Le core est un exécutable natif : sur un runner incapable de
|
||||
# l'exécuter il sort en 127 sans message exploitable. `continue-on-error`
|
||||
# porte la décision : le job n'est jamais bloqué par l'implémentation
|
||||
# native, mais l'étape émet un avertissement explicite. Bandit et
|
||||
# pip-audit, eux, restent bloquants. Sur un runner x86-64-v2, le core
|
||||
# démarre, l'analyse s'exécute et ses findings font échouer le job.
|
||||
- name: Semgrep (SAST local) — DÉSACTIVÉ (BUG-091)
|
||||
# Les règles locales (semgrep-rules/, 8 règles) ne sont plus exécutées
|
||||
# en CI : semgrep-core est un exécutable natif que le runner actuel ne
|
||||
# peut pas lancer (exit 127, sans message exploitable) — les releases
|
||||
# récentes exigent un CPU x86-64-v2, et la dernière version compatible
|
||||
# (1.157.0, core statique vérifié en baseline v1) échoue aussi. Les
|
||||
# règles restent applicables en local : `semgrep --config semgrep-rules/
|
||||
# backend/`. À réactiver dès que le runner dispose d'un CPU x86-64-v2
|
||||
# (ou d'une image de runner plus récente). Bandit et pip-audit, eux,
|
||||
# restent bloquants dans ce job.
|
||||
# NOTE runner Gitea Act (BUG-083) : aucun `#` dans le `run:`.
|
||||
continue-on-error: true
|
||||
run: |
|
||||
CORE=$("$HOME/semgrep-venv/bin/python" -c "import semgrep,os;print(os.path.join(os.path.dirname(semgrep.__file__),'bin','semgrep-core'))")
|
||||
echo "core : $CORE"
|
||||
ls -l "$CORE" || echo "core absent"
|
||||
if "$CORE" --version >/dev/null 2>&1; then
|
||||
"$HOME/semgrep-venv/bin/semgrep" --config semgrep-rules/ backend/
|
||||
else
|
||||
echo "::warning::SAST semgrep non exécutée : semgrep-core ne peut pas s'exécuter sur ce runner (exit 127). Bandit et pip-audit restent bloquants. Voir BUG-091."
|
||||
fi
|
||||
echo "::warning::SAST semgrep non exécutée (runner incompatible — BUG-091). Bandit et pip-audit restent bloquants."
|
||||
|
||||
- name: Pip-audit (bloquant — #87)
|
||||
# Bloquant depuis T6 (#87) : dépendances qualifiées (mistune 3.3.3,
|
||||
|
||||
Reference in New Issue
Block a user