From 15494a735f9c0eefdc4b221ce73b39cab15ed7b9 Mon Sep 17 00:00:00 2001 From: Nicolas Cantu Date: Wed, 27 Aug 2025 14:00:36 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=20latest=200.1.1=20+=20s=C3=A9c?= =?UTF-8?q?urit=C3=A9/CI/docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/ci.yml | 20 ++++++++++++++++++-- AGENTS.md | 15 +++++++++++++++ Cargo.lock | 2 +- VERSION | 1 + docs/SECURITY_AUDIT.md | 7 +++++-- scripts/security/audit.sh | 35 +++++++++++++++++++++++++++++++++++ 6 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 VERSION create mode 100644 scripts/security/audit.sh diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 7433757..6b56deb 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -259,11 +259,28 @@ jobs: run: | echo "Documentation checks completed" + security-audit: + name: Security Audit + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Ensure scripts executable + run: | + chmod +x scripts/security/audit.sh || true + - name: Run template security audit + run: | + if [ -f scripts/security/audit.sh ]; then + ./scripts/security/audit.sh + else + echo "No security audit script (ok)" + fi + # Job de release guard (cohérence release) release-guard: name: Release Guard runs-on: ubuntu-latest - needs: [code-quality, unit-tests, documentation-tests] + needs: [code-quality, unit-tests, documentation-tests, security-audit] steps: - name: Checkout code uses: actions/checkout@v3 @@ -334,4 +351,3 @@ jobs: run: | echo "❌ Some tests failed!" exit 1 - diff --git a/AGENTS.md b/AGENTS.md index f5f1e06..68fbf6c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -179,6 +179,21 @@ Les règles détaillées de réalisation et de contrôle sont précisées dans ` --- +### Agent Sécurité + +**Rôle (Responsable)** : + +- Mettre en œuvre et surveiller `scripts/security/audit.sh` (cargo audit, npm audit si applicable, scan de secrets). +- Garantir l’absence de secrets en clair; gérer la rotation des secrets CI. +- Vérifier permissions et non‑exposition d’endpoints. +- Intégrer l’audit au `release-guard` et bloquer en cas d’échec. + +**Artefacts :** + +- `scripts/security/audit.sh`, `.gitea/workflows/ci.yml` (job `security-audit`), `docs/SECURITY_AUDIT.md`, `SECURITY.md`. + +--- + ## Agents complémentaires ### Agent Coordination diff --git a/Cargo.lock b/Cargo.lock index a3e3d7b..03076f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1760,7 +1760,7 @@ dependencies = [ [[package]] name = "sdk_relay" -version = "0.1.0" +version = "0.1.1" dependencies = [ "anyhow", "async-trait", diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..8308b63 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +v0.1.1 diff --git a/docs/SECURITY_AUDIT.md b/docs/SECURITY_AUDIT.md index 309c8c9..10e152d 100644 --- a/docs/SECURITY_AUDIT.md +++ b/docs/SECURITY_AUDIT.md @@ -1,5 +1,10 @@ # Audit de Sécurité - sdk_relay +- CI: job `security-audit` exécutant `scripts/security/audit.sh`. +- Portée: cargo audit, npm audit si présent, scan de secrets. +- Critères bloquants: vulnérabilités élevées/critiques non ignorées, secrets détectés. +- Bloquant release via `release-guard`. + ## Portée - Serveur WebSocket (8090) - Serveur HTTP (8091) @@ -26,5 +31,3 @@ ## Résultats et suivi - Issues Gitea créées pour findings - Plan de remédiation par priorité - - diff --git a/scripts/security/audit.sh b/scripts/security/audit.sh new file mode 100644 index 0000000..06632ef --- /dev/null +++ b/scripts/security/audit.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +set -euo pipefail + +echo "[security-audit] démarrage" +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd)" +cd "$ROOT_DIR" + +rc=0 + +# 1) Audit Rust (si Cargo.toml présent et cargo disponible) +if command -v cargo >/dev/null 2>&1 && [ -f Cargo.toml ] || find . -maxdepth 2 -name Cargo.toml | grep -q . ; then + echo "[security-audit] cargo audit" + if ! cargo audit --deny warnings; then rc=1; fi || true +else + echo "[security-audit] pas de projet Rust (ok)" +fi + +# 2) Audit npm (si package.json présent) +if [ -f package.json ]; then + echo "[security-audit] npm audit --audit-level=moderate" + if ! npm audit --audit-level=moderate; then rc=1; fi || true +else + echo "[security-audit] pas de package.json (ok)" +fi + +# 3) Recherche de secrets grossiers +echo "[security-audit] scan secrets" +if grep -RIE "(?i)(api[_-]?key|secret|password|private[_-]?key)" --exclude-dir .git --exclude-dir node_modules --exclude-dir target --exclude "*.md" . >/dev/null 2>&1; then + echo "[security-audit] secrets potentiels détectés"; rc=1 +else + echo "[security-audit] aucun secret évident" +fi + +echo "[security-audit] terminé rc=$rc" +exit $rc