Conformité
Transparence, audits et mise en conformité de l'infrastructure Biofibers
Dernière mise à jour : 22 mars 2026
- 9
- Dimensions
- 73
- Constats
- 5.0
- Score /10
- Proton
- Standards
Audit du 22 mars 2026
Audit 9 dimensions · 73 constats · Score global 5.0/10
Répartition : 3 S1 25 S2 15 S3 30 S4
| ID | Sév. | Constat | Statut |
|---|---|---|---|
CQ-001 | S2 | server.js monolithique (4500+ lignes) → refactoré en 10 modules (354 lignes orchestrateur) | Corrigé 22/03 |
CQ-002 | S2 | Duplication config providers IA (CIA/PAPI) | Ouvert |
CQ-008 | S2 | Tests automatisés vitest : 92 tests (30 unit + 62 intégration), 1.4s | Corrigé 22/03 |
CQ-009 | S2 | Système de migrations versionné (runner SQL + table schema_migrations + hash SHA256) | Corrigé 22/03 |
CQ-010 | S2 | Pas de error handler Express global | Corrigé |
CQ-011 | S2 | Pas de unhandledRejection / uncaughtException | Corrigé |
| ID | Sév. | Constat | Statut |
|---|---|---|---|
SEC-018b | S1 | Magic link poll : requestId séquentiel (SERIAL), session_token dans la réponse | Corrigé |
SEC-001 | S2 | JWT_SECRET non vérifié au démarrage | Corrigé |
SEC-002 | S3 | jwt.verify sans restriction algorithme | Corrigé |
SEC-005 | S3 | Pas de révocation sessions après changement de rôle | Corrigé |
SEC-008 | S2 | localStorage token (XSS vector) | Corrigé |
SEC-010 | S2 | Fallback Bearer dans authMiddleware | Corrigé |
SEC-014 | S2 | Markdown non sanitizé (XSS via marked.parse) | Corrigé |
SEC-015 | S2 | Pas de DOMPurify sur sorties HTML | Corrigé |
SEC-021 | S2 | Pas de rate-limit sur /api/cia/chat | Corrigé |
SEC-024 | S4 | KDF clé vault | Corrigé |
SEC-031 | S2 | npm audit : vulnérabilités connues | Corrigé |
SEC-033 | S4 | Infisical binaire sans vérification checksum | Ouvert |
| ID | Sév. | Constat | Statut |
|---|---|---|---|
DB-002 | S2 | Pas de contraintes CHECK/UNIQUE (email, montants) | Corrigé |
DB-005 | S2 | Index manquants sur tables H4Y | Corrigé |
DB-006 | S3 | Pool PG non configuré (max, timeout) | Corrigé |
DB-007 | S4 | Transaction refresh token manquante | Ouvert |
DB-009 | S4 | Anonymisation PII clients absente | Ouvert |
DB-010 | S3 | .catch(() => {}) silencieux | Corrigé |
DB-013 | S2 | generateNumber() utilise pool au lieu de pgClient (race condition) | Corrigé |
| ID | Sév. | Constat | Statut |
|---|---|---|---|
INFRA-007 | S1 | Pas de backup PostgreSQL automatisé | Corrigé |
INFRA-001 | S3 | .dockerignore manquant dans le container API | Corrigé |
INFRA-013 | S2 | Pas de graceful shutdown (SIGTERM) | Corrigé |
| ID | Sév. | Constat | Statut |
|---|---|---|---|
LEG-001 | S1 | Mentions légales LCEN incomplètes (adresse complète manquante) | Corrigé |
LEG-008 | S3 | Contradiction « cookies non essentiels » dans privacy | Corrigé |
LEG-010 | S3 | Pas de badge « Généré par IA » dans UI CIA/OSINT | Corrigé |
LEG-012 | S2 | CGU : pas d'article rétractation 14j ni médiateur | Corrigé |
| ID | Sév. | Constat | Statut |
|---|---|---|---|
FUNC-004 | S2 | Webhook Stripe : pas de traitement invoice.payment_failed et charge.dispute.created | Corrigé |
FUNC-007 | S3 | Health check superficiel (pas de vérification pool PG ni SMTP) | Corrigé |
| ID | Sév. | Constat | Statut |
|---|---|---|---|
UX-001 | S2 | Attributs ARIA manquants sur drawers (role, tabindex, aria-expanded) | Corrigé |
UX-002 | S3 | Drawers non navigables au clavier (Enter/Space) | Corrigé |
UX-003 | S3 | Contraste --bf-muted insuffisant (< 4.5:1) | Corrigé |
| ID | Sév. | Constat | Statut |
|---|---|---|---|
PERF-001 | S4 | Assets non utilisés (cleanup) | Ouvert |
PERF-002 | S4 | Pas de minification JS/CSS | Ouvert |
PERF-004 | S3 | Pas de gzip nginx ni cache-busting | Corrigé |
PERF-005 | S4 | Images non optimisées | Ouvert |
PERF-008 | S3 | Timeout nginx vérifié (CIA 180s, neural 120s) | Corrigé |
| ID | Sév. | Constat | Statut |
|---|---|---|---|
DOC-001 | S4 | Pas de README projet | Ouvert |
DOC-002 | S4 | Pas de documentation API | Ouvert |
DOC-003 | S4 | Pas de guide de déploiement | Ouvert |
DOC-004 | S4 | Pas de documentation architecture | Ouvert |
DOC-005 | S4 | Pas de changelog | Ouvert |
DOC-013 | S4 | Documentation complète absente (13 items) | Ouvert |
Plan de remédiation structuré en sprints, aligné sur les standards Proton Technology : audit public, sécurité by design, zero-knowledge, privacy-first.
Délai : 72 heures · Priorité : maximale · 3 findings S1
- ☑ SEC-018b —
poll_idUUID,session_tokenvia cookie httpOnly — corrigé le 22 mars 2026 - ☑ INFRA-007 — pg_dump quotidien, rétention 30j, timer systemd 03h — déployé le 22 mars 2026
- ☑ LEG-001 — Page mentions légales LCEN — corrigé le 20 mars 2026
Délai : 2 semaines · Priorité : haute · 14 findings S2
- ☑ SEC-014/015 —
sanitize-htmlsurmarked.parse()— 22 mars 2026 - ☑ SEC-021 — Rate-limit
/api/cia/chat: 10/min guest, 60/min auth — 22 mars 2026 - ☑ SEC-031 —
npm audit fix, nodemailer 8.0.3 — 1er avril 2026 - ☑ SEC-001 — Fail-fast si
JWT_SECRETabsent — 22 mars 2026 - ☑ SEC-008/010 — Cookie-only, localStorage + Bearer supprimés — 22 mars 2026
- ☑ DB-013 —
pgClienttransaction dansgenerateNumber()— 22 mars 2026 - ☑ DB-002 — Contraintes CHECK/UNIQUE déployées — 22 mars 2026
- ☑ DB-005 — 3 index ajoutés — 22 mars 2026
- ☑ CQ-010 — Error handler Express global — 22 mars 2026
- ☑ CQ-011 —
unhandledRejection+uncaughtException— 22 mars 2026 - ☑ LEG-012 — Drawer 16 médiation + rétractation existante — 22 mars 2026
- ☑ UX-001 — ARIA + navigation clavier sur 4 pages — 22 mars 2026
- ☑ FUNC-004 —
payment_failed+dispute.created— 22 mars 2026 - ☑ INFRA-013 — Graceful shutdown SIGTERM — 22 mars 2026
Délai : 1 mois · Priorité : moyenne · 12 findings S3
- ☑ PERF-004 — gzip nginx activé — 22 mars 2026
- ☑ DB-006 — Pool PG : max 20, timeouts 5s/30s — 22 mars 2026
- ☑ PERF-008 — Timeouts nginx vérifiés : CIA 180s, neural 120s — 22 mars 2026
- ☑ SEC-002 —
algorithms: ['HS256']— 22 mars 2026 - ☑ SEC-005 — Sessions révoquées après changement rôle — 22 mars 2026
- ☑ DB-010 — 28
.catchsilencieux remplacés par logging — 22 mars 2026 - ☑ INFRA-001 —
.dockerignorecréé — 22 mars 2026 - ☑ FUNC-007 — Health check profond : PG
SELECT 1— 22 mars 2026 - ☑ LEG-008 — Mention cookies corrigée — 22 mars 2026
- ☑ LEG-010 — Badge « Généré par IA » CIA + OSINT — 22 mars 2026
- ☑ UX-003 —
--bf-muted#8b929e (contraste 4.6:1) — 22 mars 2026 - ☑ UX-002 — Enter/Space sur drawers (4 pages) — 22 mars 2026
Priorité : basse · Planification au fil des sprints
- ☑ SEC-024 — KDF v3 : Argon2id memory-hard (hash-wasm) + fallback PBKDF2 v2 + anti-downgrade 409 + migration transparente — 1er avril 2026
- ☑ SEC-033 — Infisical via apk (signatures vérifiées) + version log — 22 mars 2026
- ☑ CQ-001 — Refactoring
server.js: 5055→354 lignes, 10 modules (lib/db, lib/logger, lib/helpers, routes/auth, routes/papi, routes/cia, routes/admin) — 22 mars 2026 - ☑ CQ-008 — Tests vitest : 92 tests (unit auth-utils/helpers + intégration DB/migrations/schema), 1.4s — 22 mars 2026
- ☑ CQ-002 — Duplication providers vérifiée :
PAPI_PROVIDERSunique, pas de duplication réelle — 22 mars 2026 - ☑ CQ-009 — Système de migrations versionné : runner SQL maison, table
schema_migrations, 5 fichiers SQL, hash SHA256 anti-drift — 22 mars 2026 - ☑ PERF-001 — 4 assets inutilisés supprimés (5,1 Mo) — 22 mars 2026
- ☑ PERF-002 — esbuild minification : 1,3 Mo → 889 Ko JS/CSS (-32%) + cache-busting hash — 22 mars 2026
- ☑ PERF-005 — PNG → WebP : 4,4 Mo → 792 Ko images (-82%) — 22 mars 2026
- ☑ DOC-001→013 — Page
/docs/publique (7 drawers) +CHANGELOG.md— 22 mars 2026 - ☑ DB-007 — Transaction refresh token (BEGIN/COMMIT) — 22 mars 2026
- ☑ DB-009 — Anonymisation PII clients (90j post-suppression) — 22 mars 2026
- ☑ COH-001 — Route
/api/contactcréée (zod + rate-limit + email) — 22 mars 2026 - ☑ COH-002 — Compteur endpoints corrigé (128→176) — 22 mars 2026
- ☑ COH-003 — Réduction surface d'attaque : retrait endpoints, timing, hardware, secrets de /docs/, /portfolio/, /infra/ — 22 mars 2026
- ☑ COH-004 — Suppression doublons inter-pages (changelog, SIREN, stack, RGPD) — 22 mars 2026
- ☑ COH-005 — Tests anti-régression : liens HTML (30 tests) + routes API (9 tests) — 22 mars 2026
- ☑ COH-006 — Retrait section Connaissances/Calibre du portfolio (media center exposé) — 22 mars 2026
- ☑ RBAC-001 — Rôles alignés sur abonnements : plan → rôles (cia, papi) + migration 006 — 23 mars 2026
- ☑ RBAC-002 — CIA member/council restreint aux abonnés (retrait plan free) — 23 mars 2026
- ☑ RBAC-003 — Fix auth flash : hint cookie enrichi, boot await, debounce sync — 23 mars 2026
Audit automatisé tous les 6 mois (mars et septembre) via un agent IA headless.
Architecture
- Déclencheur — Planificateur système semestriel (mars + septembre)
- Exécution — Agent IA headless sur serveur européen
- Sortie — Rapport structuré multi-format
- Publication — Mise à jour automatique de cette page
- Notification — Alerte interne avec score et lien rapport
État d'avancement
| Composant | Statut | Date |
|---|---|---|
| Script d'audit automatisé | Déployé | 22 mars 2026 |
| Planificateur semestriel | Activé | 22 mars 2026 |
| Agent IA headless | Installé | 22 mars 2026 |
| Workflow de sauvegarde | Planifié | — |
| Publication automatique des résultats | Déployé | 22 mars 2026 |
Classification des risques
Conformément au Règlement UE 2024/1689 (AI Act) :
- CIA & OSINT — Risque limité (obligations de transparence, Art. 50)
- PAPI — Risque minimal (outil technique d'optimisation de prompts)
Biofibers agit en tant que déployeur. Les obligations de fournisseur incombent aux prestataires IA listés dans notre Politique de Confidentialité (section 4).
Obligations de transparence (Art. 50)
- L'interface indique clairement que les réponses sont générées par des systèmes d'IA
- Chaque réponse CIA mentionne les modèles consultés et le mode activé
- Les briefs OSINT portent la mention « Analyse générée par IA »
- Aucune génération de deep fakes (images, vidéos, audio)
- La page conformité constitue la documentation publique du système (Art. 53)
Pratiques interdites respectées (Art. 5)
- Aucune manipulation subliminale ou exploitation de vulnérabilités
- Aucun scoring social ou catégorisation biométrique
- Aucune surveillance de masse ou profilage prédictif
- Aucune reconnaissance émotionnelle automatisée
- Aucune exploitation émotionnelle des utilisateurs
Infrastructure hébergée chez Hetzner Online GmbH (Allemagne), datacenter Helsinki, Finlande (UE). Cadre contractuel, certifications (ISO 27001, BSI C5, TÜV Rheinland) et mesures de protection détaillés dans notre Politique de Confidentialité (section 4.2).