Aller au contenu principal

Modèle de menaces

English: en/threat-model.md

Actifs​

ActifOù
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 canarisControl Plane, eai.domains.llm.guard
Chaîne d'auditPostgreSQL, vérifiée par eai.domains.observability.audit_api.verify
Budget et quotas (coût LLM)Control Plane, LiteLLM
Images et chaîne de livraisonHarbor, CI Forgejo et GitLab, GitOps

Frontières de confiance​

  1. Internet vers portail et passerelle APISIX (TLS, WAF Coraza + OWASP CRS).
  2. Passerelle vers API Control Plane (seuls les pairs de EAI_TRUSTED_PROXIES peuvent poser X-Forwarded-For et X-SPIFFE-ID).
  3. Control Plane vers bases de données (TLS, sslmode=verify-full, RLS par tenant).
  4. Control Plane vers fournisseurs LLM, outils, MCP, connecteurs (sortie filtrée par eai.security.egress et Cilium).
  5. Contenu non fiable (documents, résultats d'outils, pages web) vers le modèle (détection d'injection, encapsulation avec nonce).
  6. Sortie du modèle vers l'utilisateur (filtrage des liens et images, canari).
  7. Code source vers production (CI, signature, SBOM, Kyverno).

Profils d'attaquants​

ProfilObjectif typiqueContrôles principaux
Anonyme sur InternetDéni de service, force brute, scanWAF, AnonymousRateLimitMiddleware, EAI_RATE_LIMIT_AUTH_FAILURES_PER_MINUTE, LimitsMiddleware
Utilisateur malveillant d'un tenantIDOR, élévation de rôle, SSRF via un outil, accès inter-tenantRLS, require_role, set_clause avec colonnes autorisées, EgressPolicy
Agent ou outil compromisExfiltration, appels internesGarde de sortie, liste blanche par tenant egress_allowed_hosts, secrets hors prompt, safe_exec.run
Document ou prompt empoisonnéInjection indirecte, exfiltration par lien markdowneai.domains.privacy.injection.detect, guard.wrap_messages, OutputGuard, StreamGuard
Fournisseur compromisRéponses malveillantes, fuiteSortie traitée comme non fiable, OutputGuard, Cilium deploy/cilium/egress-providers.yaml
Initié (insider)Lecture de secrets, altération de l'auditOpenBao, 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.

CoucheMenaces principalesContrôles
PortailS : vol de session ; T/I : XSS ; E : redirection ouverteportal/src/middleware.ts (CSP avec nonce), buildCsp, safeHref, safeReturnTo, SECURITY_HEADERS dans portal/src/lib/security.ts
Passerelle API et WAFD : inondation ; T : charges d'injectiondeploy/apisix/apisix.yaml, deploy/apisix/config.yaml, waf-gateway
API Control PlaneS : JWT forgé ; E : IDOR ; D : corps géants ; I : fuite d'erreurseai.auth, eai.security.limits, eai.security.ratelimit, eai.security.headers, eai.errors
Passerelle LLM et fournisseursI : fuite du prompt système ; D : coûtguard.add_canary, quotas, EAI_RATE_LIMIT_GATEWAY_PER_MINUTE
Runtime d'agentsE : détournement par injection ; I : exfiltrationprompt_injection_mode, untrusted_content_wrapping, output_links
Outils, MCP et connecteursI/E : SSRF, rebinding DNS ; T : webhooks forgéseai.integrations.outbound, eai.security.egress.GuardedTransport, signatures (connectors.service._parse_signature, channels.service._check_signature)
DonnéesI : accès inter-tenant ; T : injection SQLRLS via eai.db.tx, ident, qualified, frag, set_clause, like_pattern, int_limit
RAG et mémoireT : documents empoisonnésDétection d'injection à l'ingestion (test_rag_injection_risk_and_ingestion_flag)
Multimodal et temps réelE : injection de commande via ffmpegsafe_exec.media_input, safe_exec.run (liste d'arguments, pas de shell)
Réseau et DNSI : tunnel DNS, métadonnées cloud ; S : usurpation ARP/DNSCilium default deny et DNS L7, network-dns-hardening, pod-security
Chaîne d'approvisionnement et CI/CDT : image ou dépendance piégéeTrivy, SBOM et signature (sbom-sign), Kyverno, ci-security-gates