Gateway
Contrôles d’audit de sécurité
openclaw security audit émet des constats structurés indexés par checkId. Cette
page est le catalogue de référence pour ces ID. Pour le modèle de menace général
et les recommandations de durcissement, consultez Sécurité.
Valeurs checkId à forte valeur informative que vous verrez très probablement dans des déploiements réels (liste
non exhaustive):
checkId |
Gravité | Pourquoi c’est important | Clé/chemin de correction principal | Correction automatique |
|---|---|---|---|---|
fs.state_dir.perms_world_writable |
critique | D’autres utilisateurs/processus peuvent modifier tout l’état OpenClaw | permissions du système de fichiers sur ~/.openclaw |
oui |
fs.state_dir.perms_group_writable |
avertissement | Les utilisateurs du groupe peuvent modifier tout l’état OpenClaw | permissions du système de fichiers sur ~/.openclaw |
oui |
fs.state_dir.perms_readable |
avertissement | Le répertoire d’état est lisible par d’autres | permissions du système de fichiers sur ~/.openclaw |
oui |
fs.state_dir.symlink |
avertissement | La cible du répertoire d’état devient une autre frontière de confiance | disposition du système de fichiers du répertoire d’état | non |
fs.config.perms_writable |
critique | D’autres peuvent modifier la politique d’authentification/d’outils/la configuration | permissions du système de fichiers sur ~/.openclaw/openclaw.json |
oui |
fs.config.symlink |
avertissement | Les fichiers de configuration liés par symlink ne sont pas pris en charge en écriture et ajoutent une autre frontière de confiance | remplacer par un fichier de configuration standard ou pointer OPENCLAW_CONFIG_PATH vers le vrai fichier |
non |
fs.config.perms_group_readable |
avertissement | Les utilisateurs du groupe peuvent lire les jetons/paramètres de configuration | permissions du système de fichiers sur le fichier de configuration | oui |
fs.config.perms_world_readable |
critique | La configuration peut exposer des jetons/paramètres | permissions du système de fichiers sur le fichier de configuration | oui |
fs.config_include.perms_writable |
critique | Le fichier inclus de configuration peut être modifié par d’autres | permissions du fichier inclus référencé depuis openclaw.json |
oui |
fs.config_include.perms_group_readable |
avertissement | Les utilisateurs du groupe peuvent lire les secrets/paramètres inclus | permissions du fichier inclus référencé depuis openclaw.json |
oui |
fs.config_include.perms_world_readable |
critique | Les secrets/paramètres inclus sont lisibles par tout le monde | permissions du fichier inclus référencé depuis openclaw.json |
oui |
fs.auth_profiles.perms_writable |
critique | D’autres peuvent injecter ou remplacer des identifiants de modèle stockés | permissions de agents/<agentId>/agent/auth-profiles.json |
oui |
fs.auth_profiles.perms_readable |
avertissement | D’autres peuvent lire les clés API et les jetons OAuth | permissions de agents/<agentId>/agent/auth-profiles.json |
oui |
fs.credentials_dir.perms_writable |
critique | D’autres peuvent modifier l’état d’appairage/d’identifiants du canal | permissions du système de fichiers sur ~/.openclaw/credentials |
oui |
fs.credentials_dir.perms_readable |
avertissement | D’autres peuvent lire l’état des identifiants du canal | permissions du système de fichiers sur ~/.openclaw/credentials |
oui |
fs.sessions_store.perms_readable |
avertissement | D’autres peuvent lire les transcriptions/métadonnées de session | permissions du stockage de sessions | oui |
fs.log_file.perms_readable |
avertissement | D’autres peuvent lire des journaux expurgés mais encore sensibles | permissions du fichier journal du Gateway | oui |
fs.synced_dir |
avertissement | L’état/la configuration dans iCloud/Dropbox/Drive élargit l’exposition des jetons/transcriptions | déplacer la configuration/l’état hors des dossiers synchronisés | non |
gateway.bind_no_auth |
critique | Liaison distante sans secret partagé | gateway.bind, gateway.auth.* |
non |
gateway.loopback_no_auth |
critique | Un loopback avec proxy inverse peut devenir non authentifié | gateway.auth.*, configuration du proxy |
non |
gateway.trusted_proxies_missing |
avertissement | Des en-têtes de proxy inverse sont présents mais ne sont pas approuvés | gateway.trustedProxies |
non |
gateway.http.no_auth |
avertissement/critique | API HTTP du Gateway accessibles avec auth.mode="none" |
gateway.auth.mode, gateway.http.endpoints.* |
non |
gateway.http.session_key_override_enabled |
info | Les appelants de l’API HTTP peuvent remplacer sessionKey |
gateway.http.allowSessionKeyOverride |
non |
gateway.tools_invoke_http.dangerous_allow |
avertissement/critique | Réactive des outils dangereux via l’API HTTP | gateway.tools.allow |
non |
gateway.nodes.allow_commands_dangerous |
avertissement/critique | Active des commandes de nœud à fort impact (caméra/écran/contacts/calendrier/SMS) | gateway.nodes.allowCommands |
non |
gateway.nodes.deny_commands_ineffective |
avertissement | Les entrées de refus de type motif ne correspondent ni au texte shell ni aux groupes | gateway.nodes.denyCommands |
non |
gateway.tailscale_funnel |
critique | Exposition à l’Internet public | gateway.tailscale.mode |
non |
gateway.tailscale_serve |
info | L’exposition au tailnet est activée via Serve | gateway.tailscale.mode |
non |
gateway.control_ui.allowed_origins_required |
critique | Control UI non-loopback sans liste d’autorisation explicite des origines de navigateur | gateway.controlUi.allowedOrigins |
non |
gateway.control_ui.allowed_origins_wildcard |
avertissement/critique | allowedOrigins=["*"] désactive la liste d’autorisation des origines de navigateur |
gateway.controlUi.allowedOrigins |
non |
gateway.control_ui.host_header_origin_fallback |
avertissement/critique | Active le repli d’origine par en-tête Host (affaiblissement du durcissement contre le DNS rebinding) | gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback |
non |
gateway.control_ui.insecure_auth |
avertissement | Le commutateur de compatibilité d’authentification non sécurisée est activé | gateway.controlUi.allowInsecureAuth |
non |
gateway.control_ui.device_auth_disabled |
critique | Désactive la vérification d’identité de l’appareil | gateway.controlUi.dangerouslyDisableDeviceAuth |
non |
gateway.real_ip_fallback_enabled |
avertissement/critique | Faire confiance au repli X-Real-IP peut permettre l’usurpation d’IP source via une mauvaise configuration du proxy |
gateway.allowRealIpFallback, gateway.trustedProxies |
non |
gateway.token_too_short |
avertissement | Un jeton partagé court est plus facile à forcer par brute force | gateway.auth.token |
non |
gateway.auth_no_rate_limit |
avertissement | Une authentification exposée sans limitation de débit augmente le risque de brute force | gateway.auth.rateLimit |
non |
gateway.trusted_proxy_auth |
critique | L’identité du proxy devient désormais la frontière d’authentification | gateway.auth.mode="trusted-proxy" |
non |
gateway.trusted_proxy_no_proxies |
critique | L’authentification par proxy de confiance sans IP de proxy de confiance est dangereuse | gateway.trustedProxies |
non |
gateway.trusted_proxy_no_user_header |
critique | L’authentification par proxy de confiance ne peut pas résoudre l’identité utilisateur en toute sécurité | gateway.auth.trustedProxy.userHeader |
non |
gateway.trusted_proxy_no_allowlist |
avertissement | L’authentification par proxy de confiance accepte tout utilisateur amont authentifié | gateway.auth.trustedProxy.allowUsers |
non |
gateway.trusted_proxy_allow_loopback |
avertissement | L’authentification trusted-proxy accepte des sources de proxy loopback explicitement autorisées | gateway.auth.trustedProxy.allowLoopback |
non |
gateway.probe_auth_secretref_unavailable |
avertissement | La sonde approfondie n’a pas pu résoudre les SecretRefs d’authentification dans ce chemin de commande | source d’authentification deep-probe / disponibilité de SecretRef | non |
gateway.probe_failed |
avertissement/critique | La sonde Gateway en direct a échoué | joignabilité/authentification du gateway | non |
discovery.mdns_full_mode |
avertissement/critique | Le mode complet mDNS annonce les métadonnées cliPath/sshPort sur le réseau local |
discovery.mdns.mode, gateway.bind |
non |
config.insecure_or_dangerous_flags |
avertissement | Des indicateurs de débogage non sécurisés/dangereux sont activés | plusieurs clés (voir le détail du constat) | non |
config.secrets.gateway_password_in_config |
avertissement | Le mot de passe du Gateway est stocké directement dans la configuration | gateway.auth.password |
non |
config.secrets.hooks_token_in_config |
avertissement | Le jeton bearer de hook est stocké directement dans la configuration | hooks.token |
non |
hooks.token_reuse_gateway_token |
critique | Le jeton d’entrée du hook déverrouille aussi l’authentification du Gateway | hooks.token, gateway.auth.token |
non |
hooks.token_too_short |
avertissement | Force brute plus facile sur l’entrée du hook | hooks.token |
non |
hooks.default_session_key_unset |
avertissement | Les exécutions de l’agent de hook se dispersent dans des sessions générées par requête | hooks.defaultSessionKey |
non |
hooks.allowed_agent_ids_unrestricted |
avertissement/critique | Les appelants de hook authentifiés peuvent router vers n’importe quel agent configuré | hooks.allowedAgentIds |
non |
hooks.request_session_key_enabled |
avertissement/critique | L’appelant externe peut choisir sessionKey | hooks.allowRequestSessionKey |
non |
hooks.request_session_key_prefixes_missing |
avertissement/critique | Aucune limite sur les formes de clés de session externes | hooks.allowedSessionKeyPrefixes |
non |
hooks.path_root |
critique | Le chemin du hook est /, ce qui rend l’entrée plus facile à faire entrer en collision ou à mal router |
hooks.path |
non |
hooks.installs_unpinned_npm_specs |
avertissement | Les enregistrements d’installation de hook ne sont pas épinglés à des spécifications npm immuables | métadonnées d’installation de hook | non |
hooks.installs_missing_integrity |
avertissement | Les enregistrements d’installation de hook n’ont pas de métadonnées d’intégrité | métadonnées d’installation de hook | non |
hooks.installs_version_drift |
avertissement | Les enregistrements d’installation de hook divergent des paquets installés | métadonnées d’installation de hook | non |
logging.redact_off |
avertissement | Des valeurs sensibles fuitent dans les journaux/statuts | logging.redactSensitive |
oui |
browser.control_invalid_config |
avertissement | La configuration du contrôle du navigateur est invalide avant l’exécution | browser.* |
non |
browser.control_no_auth |
critique | Contrôle du navigateur exposé sans authentification par jeton/mot de passe | gateway.auth.* |
non |
browser.remote_cdp_http |
avertissement | Le CDP distant sur HTTP en clair n’a pas de chiffrement du transport | profil de navigateur cdpUrl |
non |
browser.remote_cdp_private_host |
avertissement | Le CDP distant cible un hôte privé/interne | profil de navigateur cdpUrl, browser.ssrfPolicy.* |
non |
sandbox.docker_config_mode_off |
avertissement | Configuration Docker du bac à sable présente mais inactive | agents.*.sandbox.mode |
non |
sandbox.bind_mount_non_absolute |
avertissement | Les montages liés relatifs peuvent se résoudre de façon imprévisible | agents.*.sandbox.docker.binds[] |
non |
sandbox.dangerous_bind_mount |
critique | Le montage lié du bac à sable cible des chemins système, d’identifiants ou de socket Docker bloqués | agents.*.sandbox.docker.binds[] |
non |
sandbox.dangerous_network_mode |
critique | Le réseau Docker du bac à sable utilise le mode de jonction d’espace de noms host ou container:* |
agents.*.sandbox.docker.network |
non |
sandbox.dangerous_seccomp_profile |
critique | Le profil seccomp du bac à sable affaiblit l’isolation du conteneur | agents.*.sandbox.docker.securityOpt |
non |
sandbox.dangerous_apparmor_profile |
critique | Le profil AppArmor du bac à sable affaiblit l’isolation du conteneur | agents.*.sandbox.docker.securityOpt |
non |
sandbox.browser_cdp_bridge_unrestricted |
avertissement | Le pont navigateur du bac à sable est exposé sans restriction de plage source | sandbox.browser.cdpSourceRange |
non |
sandbox.browser_container.non_loopback_publish |
critique | Le conteneur de navigateur existant publie CDP sur des interfaces non-loopback | configuration de publication du conteneur de bac à sable du navigateur | non |
sandbox.browser_container.hash_label_missing |
avertissement | Le conteneur de navigateur existant est antérieur aux libellés de hachage de configuration actuels | openclaw sandbox recreate --browser --all |
non |
sandbox.browser_container.hash_epoch_stale |
avertissement | Le conteneur de navigateur existant est antérieur à l’époque de configuration du navigateur actuelle | openclaw sandbox recreate --browser --all |
non |
tools.exec.host_sandbox_no_sandbox_defaults |
avertissement | exec host=sandbox échoue fermé lorsque le bac à sable est désactivé |
tools.exec.host, agents.defaults.sandbox.mode |
non |
tools.exec.host_sandbox_no_sandbox_agents |
avertissement | exec host=sandbox par agent échoue fermé lorsque le bac à sable est désactivé |
agents.list[].tools.exec.host, agents.list[].sandbox.mode |
non |
tools.exec.security_full_configured |
avertissement/critique | L’exécution hôte fonctionne avec security="full" |
tools.exec.security, agents.list[].tools.exec.security |
non |
tools.exec.auto_allow_skills_enabled |
avertissement | Les approbations d’exécution font implicitement confiance aux bins de Skills | ~/.openclaw/exec-approvals.json |
non |
tools.exec.allowlist_interpreter_without_strict_inline_eval |
avertissement | Les listes d’autorisation d’interpréteurs permettent l’évaluation en ligne sans réapprobation forcée | tools.exec.strictInlineEval, agents.list[].tools.exec.strictInlineEval, liste d’autorisation des approbations d’exécution |
non |
tools.exec.safe_bins_interpreter_unprofiled |
avertissement | Les bins d’interpréteur/exécution dans safeBins sans profils explicites élargissent le risque d’exécution |
tools.exec.safeBins, tools.exec.safeBinProfiles, agents.list[].tools.exec.* |
non |
tools.exec.safe_bins_broad_behavior |
avertissement | Les outils au comportement large dans safeBins affaiblissent le modèle de confiance à faible risque du filtre stdin |
tools.exec.safeBins, agents.list[].tools.exec.safeBins |
non |
tools.exec.safe_bin_trusted_dirs_risky |
avertissement | safeBinTrustedDirs inclut des répertoires mutables ou risqués |
tools.exec.safeBinTrustedDirs, agents.list[].tools.exec.safeBinTrustedDirs |
non |
skills.workspace.symlink_escape |
avertissement | Workspace skills/**/SKILL.md se résout hors de la racine du workspace (dérive de chaîne de liens symboliques) |
état du système de fichiers workspace skills/** |
non |
plugins.extensions_no_allowlist |
avertissement | Les Plugins sont installés sans liste d’autorisation de plugins explicite | plugins.allowlist |
non |
plugins.installs_unpinned_npm_specs |
warn | Les enregistrements de l’index des Plugin ne sont pas épinglés à des spécifications npm immuables | métadonnées d’installation des Plugin | no |
plugins.installs_missing_integrity |
warn | Les enregistrements de l’index des Plugin ne contiennent pas de métadonnées d’intégrité | métadonnées d’installation des Plugin | no |
plugins.installs_version_drift |
warn | Les enregistrements de l’index des Plugin divergent des packages installés | métadonnées d’installation des Plugin | no |
plugins.code_safety |
warn/critical | L’analyse du code du Plugin a trouvé des motifs suspects ou dangereux | code du Plugin / source d’installation | no |
plugins.code_safety.entry_path |
warn | Le chemin d’entrée du Plugin pointe vers des emplacements cachés ou des emplacements node_modules |
entry du manifeste du Plugin |
no |
plugins.code_safety.entry_escape |
critical | L’entrée du Plugin s’échappe du répertoire du Plugin | entry du manifeste du Plugin |
no |
plugins.code_safety.scan_failed |
warn | L’analyse du code du Plugin n’a pas pu se terminer | chemin du Plugin / environnement d’analyse | no |
skills.code_safety |
warn/critical | Les métadonnées/le code de l’installateur de Skill contiennent des motifs suspects ou dangereux | source d’installation du Skill | no |
skills.code_safety.scan_failed |
warn | L’analyse du code du Skill n’a pas pu se terminer | environnement d’analyse du Skill | no |
security.exposure.open_channels_with_exec |
warn/critical | Les salons partagés/publics peuvent atteindre des agents avec exec activé | channels.*.dmPolicy, channels.*.groupPolicy, tools.exec.*, agents.list[].tools.exec.* |
no |
security.exposure.open_groups_with_elevated |
critical | Les groupes ouverts + les outils élevés créent des chemins d’injection de prompt à fort impact | channels.*.groupPolicy, tools.elevated.* |
no |
security.exposure.open_groups_with_runtime_or_fs |
critical/warn | Les groupes ouverts peuvent atteindre des outils de commande/fichier sans protections de sandbox/espace de travail | channels.*.groupPolicy, tools.profile/deny, tools.fs.workspaceOnly, agents.*.sandbox.mode |
no |
security.trust_model.multi_user_heuristic |
warn | La configuration semble multi-utilisateur alors que le modèle de confiance du Gateway est celui d’un assistant personnel | limites de confiance séparées, ou durcissement utilisateur partagé (sandbox.mode, refus d’outils/portée d’espace de travail) |
no |
tools.profile_minimal_overridden |
warn | Les remplacements de l’agent contournent le profil minimal global | agents.list[].tools.profile |
no |
plugins.tools_reachable_permissive_policy |
warn | Les outils d’extension sont accessibles dans des contextes permissifs | tools.profile + autorisation/refus d’outils |
no |
models.legacy |
warn | Des familles de modèles héritées sont encore configurées | sélection du modèle | no |
models.weak_tier |
warn | Les modèles configurés sont sous les niveaux actuellement recommandés | sélection du modèle | no |
models.small_params |
critical/info | Les petits modèles + les surfaces d’outils non sûres augmentent le risque d’injection | choix du modèle + politique de sandbox/outils | no |
summary.attack_surface |
info | Résumé global de la posture d’authentification, de canal, d’outil et d’exposition | plusieurs clés (voir le détail du constat) | no |