diff --git a/hermes-perso/security/crowdsec-dsm.md b/hermes-perso/security/crowdsec-dsm.md index d5f7270..1667fe8 100644 --- a/hermes-perso/security/crowdsec-dsm.md +++ b/hermes-perso/security/crowdsec-dsm.md @@ -37,3 +37,30 @@ Attendu : IP presente dans ipset list crowdsec-blacklist ET regle DROP active da ## References - https://docs.crowdsec.net + + +--- + +## BUG CRITIQUE — sync.sh O(n2) CPU 109pct (resolu 2026-06-29) + +### Symptome +crowdsec-firewall-bouncer consomme +100pct CPU en continu. + +### Cause +Double boucle for IP in NEW_IPS grep-qxF dans CURRENT_IPS : +O(n2) grep-forks toutes les 10 secondes. 50+ IPs = 2500 forks/cycle. + +### Cause restart loop (v2 echec) +set -e dans script ash : commandes || chaines sans || true final = exit 1 immediat. +pipe cmd | while read ; do condition && cmd ; done retourne exit 1 si condition fausse. + +### Fix v3 valide +- set -e supprime (poison pour daemon ash) +- comm -23 / comm -13 sur fichiers tries : O(n log n), zero fork imbrique +- while read < file au lieu de cmd | while read (pas de subshell, exit code propre) +- || true systematique sur toutes les commandes externes +- Resultat : 0.1pct CPU stable, zero restart + +### Source rebuild +/volume1/docker/crowdsec/bouncer-sync/sync.sh + Dockerfile +Image : crowdsec-sync:dsm