Modèle de menaces
English: en/threat-model.md
Actifs
| Actif | Où |
|---|---|
| Données des tenants (conversations, documents, mémoire, embeddings) | PostgreSQL (RLS), Qdrant, stockage S3 |
| Secrets (clés fournisseurs LLM, jetons OAuth des connecteurs, clés API) | OpenBao, ou chiffrés par EAI_MASTER_KEY |
| Prompts système et canaris | Control Plane, eai.domains.llm.guard |
| Chaîne d'audit | PostgreSQL, vérifiée par eai.domains.observability.audit_api.verify |
| Budget et quotas (coût LLM) | Control Plane, LiteLLM |
| Images et chaîne de livraison | Harbor, CI Forgejo et GitLab, GitOps |
Frontières de confiance
- Internet vers portail et passerelle APISIX (TLS, WAF Coraza + OWASP CRS).
- Passerelle vers API Control Plane (seuls les pairs de
EAI_TRUSTED_PROXIESpeuvent poserX-Forwarded-ForetX-SPIFFE-ID). - Control Plane vers bases de données (TLS,
sslmode=verify-full, RLS par tenant). - Control Plane vers fournisseurs LLM, outils, MCP, connecteurs (sortie filtrée par
eai.security.egresset Cilium). - Contenu non fiable (documents, résultats d'outils, pages web) vers le modèle (détection d'injection, encapsulation avec nonce).
- Sortie du modèle vers l'utilisateur (filtrage des liens et images, canari).
- Code source vers production (CI, signature, SBOM, Kyverno).
Profils d'attaquants
| Profil | Objectif typique | Contrôles principaux |
|---|---|---|
| Anonyme sur Internet | Déni de service, force brute, scan | WAF, AnonymousRateLimitMiddleware, EAI_RATE_LIMIT_AUTH_FAILURES_PER_MINUTE, LimitsMiddleware |
| Utilisateur malveillant d'un tenant | IDOR, élévation de rôle, SSRF via un outil, accès inter-tenant | RLS, require_role, set_clause avec colonnes autorisées, EgressPolicy |
| Agent ou outil compromis | Exfiltration, appels internes | Garde de sortie, liste blanche par tenant egress_allowed_hosts, secrets hors prompt, safe_exec.run |
| Document ou prompt empoisonné | Injection indirecte, exfiltration par lien markdown | eai.domains.privacy.injection.detect, guard.wrap_messages, OutputGuard, StreamGuard |
| Fournisseur compromis | Réponses malveillantes, fuite | Sortie traitée comme non fiable, OutputGuard, Cilium deploy/cilium/egress-providers.yaml |
| Initié (insider) | Lecture de secrets, altération de l'audit | OpenBao, chaîne d'audit vérifiable, Kyverno, revue de code et CI |
STRIDE par couche
S = usurpation, T = altération, R = répudiation, I = divulgation, D = déni de service, E = élévation de privilèges.
| Couche | Menaces principales | Contrôles |
|---|---|---|
| Portail | S : vol de session ; T/I : XSS ; E : redirection ouverte | portal/src/middleware.ts (CSP avec nonce), buildCsp, safeHref, safeReturnTo, SECURITY_HEADERS dans portal/src/lib/security.ts |
| Passerelle API et WAF | D : inondation ; T : charges d'injection | deploy/apisix/apisix.yaml, deploy/apisix/config.yaml, waf-gateway |
| API Control Plane | S : JWT forgé ; E : IDOR ; D : corps géants ; I : fuite d'erreurs | eai.auth, eai.security.limits, eai.security.ratelimit, eai.security.headers, eai.errors |
| Passerelle LLM et fournisseurs | I : fuite du prompt système ; D : coût | guard.add_canary, quotas, EAI_RATE_LIMIT_GATEWAY_PER_MINUTE |
| Runtime d'agents | E : détournement par injection ; I : exfiltration | prompt_injection_mode, untrusted_content_wrapping, output_links |
| Outils, MCP et connecteurs | I/E : SSRF, rebinding DNS ; T : webhooks forgés | eai.integrations.outbound, eai.security.egress.GuardedTransport, signatures (connectors.service._parse_signature, channels.service._check_signature) |
| Données | I : accès inter-tenant ; T : injection SQL | RLS via eai.db.tx, ident, qualified, frag, set_clause, like_pattern, int_limit |
| RAG et mémoire | T : documents empoisonnés | Détection d'injection à l'ingestion (test_rag_injection_risk_and_ingestion_flag) |
| Multimodal et temps réel | E : injection de commande via ffmpeg | safe_exec.media_input, safe_exec.run (liste d'arguments, pas de shell) |
| Réseau et DNS | I : tunnel DNS, métadonnées cloud ; S : usurpation ARP/DNS | Cilium default deny et DNS L7, network-dns-hardening, pod-security |
| Chaîne d'approvisionnement et CI/CD | T : image ou dépendance piégée | Trivy, SBOM et signature (sbom-sign), Kyverno, ci-security-gates |