🇬🇧 English version

Politique de sécurité

Versions prises en charge

Version Prise en charge
1.0.x (release candidates comprises) âś…
≤ 0.9.x (beta) ❌

Seule la dernière release publiée (actuellement la ligne release-candidate 1.0.0) reçoit des correctifs de sécurité.

Signaler une vulnérabilité

Merci de ne pas ouvrir d'issue publique pour les vulnérabilités de sécurité.

Signalez les vulnérabilités via le GitHub Private Vulnerability Reporting de ce dépôt (onglet « Security » → « Report a vulnerability »).

Ă€ inclure dans le signalement :

  • Une description de la vulnĂ©rabilitĂ© et de son impact.
  • Les Ă©tapes de reproduction (code ou configuration de preuve de concept si possible).
  • Le composant affectĂ© (outil, fournisseur LLM, fournisseur de mĂ©moire, orchestrateur…).

Nous visons un accusé de réception sous 72 heures et un plan de remédiation ou un correctif sous 30 jours pour les problèmes confirmés.

Modèle de menace — Exécution d'outils pilotée par LLM

Orkeon est un framework d'orchestration d'agents IA : la sortie d'un LLM peut déclencher l'exécution d'outils. Cela rend certains composants sensibles en matière de sécurité par conception, et vous devez considérer toute configuration de crew comme faisant partie de votre surface d'attaque :

  • Outils d'exĂ©cution de code/shell (ShellCommandTool, SecureCodeInterpreterTool) : les commandes sont restreintes par allowlist par dĂ©faut (ensemble en lecture seule) et les interprĂ©teurs (node, dotnet, npm) nĂ©cessitent un opt-in explicite. Il n'y a aucun confinement au niveau de l'OS sauf si vous routez l'exĂ©cution Ă  travers le sandbox Docker (DockerSandbox).
  • Outils rĂ©seau (WebScrapeTool, HttpApiTool, recherche web, rag_ingest et le repli web RAG opt-in) : la validation d'URL est fail-closed — les adresses privĂ©es, de loopback, link-local, IPv6 non spĂ©cifiĂ©e, multicast, NAT64 et de mĂ©tadonnĂ©es cloud sont refusĂ©es par dĂ©faut (protection SSRF), et l'ingestion d'URL refuse de fetcher tant qu'aucun IUrlValidator n'est enregistrĂ© (AddOrkeonInfrastructure en enregistre un). Les redirections ne sont pas suivies : AddOrkeonWebTools donne aux outils web leur propre HttpClient nommĂ© et au loader de pages RAG son propre client typĂ©, tous deux avec AllowAutoRedirect = false, de sorte qu'une redirection ne peut pas emmener une requĂŞte au-delĂ  du validateur qui a autorisĂ© le premier saut.
  • Outils de système de fichiers : tout accès aux fichiers passe par le Virtual File System (IFileSystemService), validĂ© contre les montages configurĂ©s et les droits d'accès.
  • Outils de base de donnĂ©es : les requĂŞtes passent par IDatabaseSecurityPolicy (allowlist par type d'instruction).
  • Injection de prompt : tout contenu rĂ©cupĂ©rĂ© par les outils (pages web, fichiers, lignes de base de donnĂ©es) peut contenir des instructions adverses. ExĂ©cutez les agents avec l'ensemble d'outils au moindre privilège que votre cas d'usage permet.

Les vulnérabilités dans ces couches (contournement d'allowlist, contournement du filtre SSRF, évasion du VFS, évasion du sandbox, fuite de secrets dans les logs) sont considérées comme de sévérité haute — merci de les signaler en privé.

Recommandations de durcissement

  • code_interpreter n'est jamais exposĂ© comme IBaseTool : SecureCodeInterpreterTool n'est enregistrĂ© que comme type concret, donc aucun agent ne peut l'appeler tant que vous ne l'exposez pas vous-mĂŞme.
  • shell_command, lui, est livrĂ© enregistrĂ©. AddOrkeonCodeTools() l'enregistre comme IBaseTool, et les deux runners livrĂ©s (orkeon run, orkeon-repl) appellent cette mĂ©thode sans condition : l'outil est donc au catalogue par dĂ©faut. Son allowlist par dĂ©faut est en lecture seule (ls, cat, pwd, grep… plus les sous-commandes git non mutantes) ; les interprĂ©teurs et le git mutant restent fermĂ©s tant que vous ne posez pas Orkeon:Tools:Shell:AllowInterpreters, qui est Ă©quivalent Ă  une RCE et fait Ă©mettre Ă  l'outil un avertissement de sĂ©curitĂ©. Pour tenir shell_command hors de portĂ©e d'un agent, composez votre hĂ´te sans AddOrkeonCodeTools().
  • Utilisez DockerSandbox pour tout scĂ©nario d'exĂ©cution de code avec des entrĂ©es non fiables.
  • Configurez les clĂ©s d'API via des variables d'environnement ou un gestionnaire de secrets — jamais dans les dĂ©finitions YAML de crew.
  • Activez le chiffrement de la mĂ©moire au repos (EncryptedMemoryProviderDecorator) pour les charges de travail sensibles.

Vérifier ce que vous installez

Chaque artefact — paquets NuGet, installeurs, archives CLI, .deb, MSI — est construit par un workflow GitHub Actions public et porte une attestation de provenance de build signée par GitHub (SLSA v1) qui nomme le workflow, le tag et le commit ayant produit ces octets exacts. La publication sur NuGet.org passe par Trusted Publishing (OIDC) : aucune clé API longue durée n'existe. Chaque release livre aussi SHA256SUMS et, à partir de la prochaine, un SBOM CycloneDX couvert par la même attestation.

gh attestation verify orkeon-cli-<version>-osx-arm64.tar.gz --repo Orkeon/orkeon

Un paquet téléchargé depuis nuget.org est re-signé par nuget.org, ce qui change ses octets : retirez d'abord cette signature (scripts/nupkg-unsign.py), puis vérifiez. Les commandes exactes, ce que chaque mécanisme prouve ou non, et la conduite à tenir quand une vérification échoue sont dans Vérifier ce que vous installez. Un artefact qui échoue à la vérification est un signalement de sécurité, pas une question de support.