Gateway
Controlli di sicurezza dell'audit
openclaw security audit genera risultati strutturati identificati da checkId. Questa pagina è il catalogo di riferimento per tali ID. Per il modello delle minacce di alto livello e le indicazioni per il rafforzamento della sicurezza, consulta Sicurezza.
Alcuni controlli vengono eseguiti solo con openclaw security audit --deep: scansioni del codice di Plugin/Skills (plugins.code_safety*, skills.code_safety*) e controlli tramite sonde attive del Gateway (gateway.probe_*). Tutti gli altri controlli in questa tabella vengono eseguiti con un semplice openclaw security audit.
Una gravità come warn/critical indica che lo stesso checkId può essere generato a uno dei due livelli, a seconda della configurazione (ad esempio, se il Gateway è esposto da remoto). Valori ad alta rilevanza che è più probabile incontrare nelle distribuzioni reali (elenco non esaustivo):
checkId |
Gravità | Perché è importante | Chiave/percorso principale per la correzione | Correzione automatica |
|---|---|---|---|---|
fs.state_dir.perms_world_writable |
critica | Altri utenti/processi possono modificare l'intero stato di OpenClaw | permessi del file system su ~/.openclaw |
sì |
fs.state_dir.perms_group_writable |
avviso | Gli utenti del gruppo possono modificare l'intero stato di OpenClaw | permessi del file system su ~/.openclaw |
sì |
fs.state_dir.perms_readable |
avviso | La directory di stato è leggibile da altri | permessi del file system su ~/.openclaw |
sì |
fs.state_dir.symlink |
avviso | La destinazione della directory di stato diventa un ulteriore confine di attendibilità | struttura del file system della directory di stato | no |
fs.config.perms_writable |
critica | Altri possono modificare autenticazione, criteri degli strumenti e configurazione | permessi del file system su ~/.openclaw/openclaw.json |
sì |
fs.config.symlink |
avviso | I file di configurazione collegati simbolicamente non supportano la scrittura e aggiungono un ulteriore confine di attendibilità | sostituire con un normale file di configurazione o impostare OPENCLAW_CONFIG_PATH sul file reale |
no |
fs.config.perms_group_readable |
avviso | Gli utenti del gruppo possono leggere token e impostazioni della configurazione | permessi del file system sul file di configurazione | sì |
fs.config.perms_world_readable |
critica | La configurazione può esporre token e impostazioni | permessi del file system sul file di configurazione | sì |
fs.config_include.perms_writable |
critica | Il file incluso nella configurazione può essere modificato da altri | permessi del file incluso a cui fa riferimento openclaw.json |
sì |
fs.config_include.perms_group_readable |
avviso | Gli utenti del gruppo possono leggere segreti e impostazioni inclusi | permessi del file incluso a cui fa riferimento openclaw.json |
sì |
fs.config_include.perms_world_readable |
critica | I segreti e le impostazioni inclusi sono leggibili da chiunque | permessi del file incluso a cui fa riferimento openclaw.json |
sì |
fs.auth_profiles.perms_writable |
critica | Altri possono inserire o sostituire le credenziali dei modelli archiviate | permessi di agents/<agentId>/agent/auth-profiles.json |
sì |
fs.auth_profiles.perms_readable |
avviso | Altri possono leggere chiavi API e token OAuth | permessi di agents/<agentId>/agent/auth-profiles.json |
sì |
fs.credentials_dir.perms_writable |
critica | Altri possono modificare lo stato di associazione e delle credenziali dei canali | permessi del file system su ~/.openclaw/credentials |
sì |
fs.credentials_dir.perms_readable |
avviso | Altri possono leggere lo stato delle credenziali dei canali | permessi del file system su ~/.openclaw/credentials |
sì |
fs.sessions_store.perms_readable |
avviso | Altri possono leggere trascrizioni e metadati delle sessioni | permessi dell'archivio delle sessioni | sì |
fs.log_file.perms_readable |
avviso | Altri possono leggere registri oscurati ma comunque sensibili | permessi del file di registro del Gateway | sì |
fs.synced_dir |
avviso | Lo stato o la configurazione in iCloud/Dropbox/Drive ampliano l'esposizione di token e trascrizioni | spostare configurazione e stato fuori dalle cartelle sincronizzate | no |
gateway.bind_no_auth |
critica | Associazione remota senza segreto condiviso | gateway.bind, gateway.auth.* |
no |
gateway.loopback_no_auth |
critica | Il local loopback tramite proxy inverso potrebbe diventare privo di autenticazione | gateway.auth.*, configurazione del proxy |
no |
gateway.trusted_proxies_missing |
avviso | Le intestazioni del proxy inverso sono presenti ma non sono considerate attendibili | gateway.trustedProxies |
no |
gateway.http.no_auth |
avviso/critica | Le API HTTP del Gateway sono raggiungibili con auth.mode="none" |
gateway.auth.mode, gateway.http.endpoints.*, plugins.entries.admin-http-rpc |
no |
gateway.http.session_key_override_enabled |
informativa | I chiamanti dell'API HTTP possono sovrascrivere sessionKey |
gateway.http.allowSessionKeyOverride |
no |
gateway.tools_invoke_http.dangerous_allow |
avviso/critica | Riabilita strumenti pericolosi tramite l'API HTTP per i chiamanti proprietari/amministratori | gateway.tools.allow |
no |
gateway.nodes.allow_commands_dangerous |
avviso/critica | Abilita comandi Node ad alto impatto (input desktop/fotocamera/schermo/contatti/calendario/SMS) | gateway.nodes.allowCommands |
no |
gateway.nodes.deny_commands_ineffective |
avviso | Le voci di esclusione simili a modelli non corrispondono al testo della shell o ai gruppi | gateway.nodes.denyCommands |
no |
gateway.tailscale_funnel |
critica | Esposizione alla rete Internet pubblica | gateway.tailscale.mode |
no |
gateway.tailscale_serve |
informativa | L'esposizione alla tailnet è abilitata tramite Serve | gateway.tailscale.mode |
no |
gateway.control_ui.allowed_origins_required |
critica | UI di controllo non su local loopback senza un elenco esplicito delle origini del browser consentite | gateway.controlUi.allowedOrigins |
no |
gateway.control_ui.allowed_origins_wildcard |
avviso/critica | allowedOrigins=["*"] disabilita l'elenco delle origini del browser consentite |
gateway.controlUi.allowedOrigins |
no |
gateway.control_ui.host_header_origin_fallback |
avviso/critica | Abilita il ripiego sull'origine basata sull'intestazione Host, riducendo la protezione contro il rebinding DNS | gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback |
no |
gateway.control_ui.insecure_auth |
avviso | L'opzione di compatibilità per l'autenticazione non sicura è abilitata | gateway.controlUi.allowInsecureAuth |
no |
gateway.control_ui.device_auth_disabled |
critica | Disabilita la verifica dell'identità del dispositivo | gateway.controlUi.dangerouslyDisableDeviceAuth |
no |
gateway.real_ip_fallback_enabled |
avviso/critica | Considerare attendibile il ripiego su X-Real-IP può consentire la falsificazione dell'IP di origine tramite un'errata configurazione del proxy |
gateway.allowRealIpFallback, gateway.trustedProxies |
no |
gateway.token_too_short |
avviso | Un token condiviso breve è più facile da violare con un attacco di forza bruta | gateway.auth.token |
no |
gateway.auth_no_rate_limit |
avviso | L'autenticazione esposta senza limitazione della frequenza aumenta il rischio di attacchi di forza bruta | gateway.auth.rateLimit |
no |
gateway.trusted_proxy_auth |
critica | L'identità del proxy diventa il confine di autenticazione | gateway.auth.mode="trusted-proxy" |
no |
gateway.trusted_proxy_no_proxies |
critica | L'autenticazione tramite proxy attendibile senza IP di proxy attendibili non è sicura | gateway.trustedProxies |
no |
gateway.trusted_proxy_no_user_header |
critico | L'autenticazione tramite proxy attendibile non può determinare in modo sicuro l'identità dell'utente | gateway.auth.trustedProxy.userHeader |
no |
gateway.trusted_proxy_no_allowlist |
avviso | L'autenticazione tramite proxy attendibile accetta qualsiasi utente autenticato a monte | gateway.auth.trustedProxy.allowUsers |
no |
gateway.trusted_proxy_allow_loopback |
avviso | L'autenticazione tramite proxy attendibile accetta origini proxy loopback esplicitamente consentite | gateway.auth.trustedProxy.allowLoopback |
no |
gateway.probe_auth_secretref_unavailable |
avviso | Il controllo approfondito non ha potuto risolvere i SecretRef di autenticazione in questo percorso del comando | origine dell'autenticazione del controllo approfondito / disponibilità dei SecretRef | no |
gateway.probe_failed |
avviso | Il controllo in tempo reale del Gateway non è riuscito (solo --deep) |
raggiungibilità/autenticazione del Gateway | no |
discovery.mdns_full_mode |
avviso/critico | La modalità completa mDNS pubblicizza i metadati cliPath/sshPort sulla rete locale |
discovery.mdns.mode, gateway.bind |
no |
config.insecure_or_dangerous_flags |
avviso | È abilitato un flag di debug non sicuro/pericoloso | chiave indicata nei dettagli del rilevamento | no |
security.audit.suppressions.active |
info | L'output dell'audit contiene esclusioni configurate e potrebbe essere filtrato | security.audit.suppressions |
no |
config.secrets.gateway_password_in_config |
avviso | La password del Gateway è memorizzata direttamente nella configurazione | gateway.auth.password |
no |
config.secrets.hooks_token_in_config |
avviso | Il token bearer dell'hook è memorizzato direttamente nella configurazione | hooks.token |
no |
hooks.token_reuse_gateway_token |
critico | Il token di ingresso dell'hook consente anche l'accesso all'autenticazione del Gateway | hooks.token, gateway.auth.token, gateway.auth.password |
no |
hooks.token_too_short |
avviso | L'ingresso dell'hook è più vulnerabile agli attacchi di forza bruta | hooks.token |
no |
hooks.default_session_key_unset |
avviso | Le esecuzioni dell'agente dell'hook si distribuiscono in sessioni generate per ogni richiesta | hooks.defaultSessionKey |
no |
hooks.allowed_agent_ids_unrestricted |
avviso/critico | I chiamanti autenticati dell'hook possono instradare le richieste a qualsiasi agente configurato | hooks.allowedAgentIds |
no |
hooks.request_session_key_enabled |
avviso/critico | Il chiamante esterno può scegliere sessionKey |
hooks.allowRequestSessionKey |
no |
hooks.request_session_key_prefixes_missing |
avviso/critico | Non esistono limiti alle forme delle chiavi di sessione esterne | hooks.allowedSessionKeyPrefixes |
no |
hooks.path_root |
critico | Il percorso dell'hook è /, rendendo più probabili collisioni o instradamenti errati dell'ingresso |
hooks.path |
no |
hooks.installs_unpinned_npm_specs |
avviso | I record di installazione degli hook non sono vincolati a specifiche npm immutabili | metadati di installazione degli hook | no |
hooks.installs_missing_integrity |
avviso | I record di installazione degli hook non contengono metadati di integrità | metadati di installazione degli hook | no |
hooks.installs_version_drift |
avviso | I record di installazione degli hook non corrispondono più ai pacchetti installati | metadati di installazione degli hook | no |
logging.redact_off |
avviso | I valori sensibili vengono esposti nei log/nello stato | logging.redactSensitive |
sì |
browser.control_invalid_config |
avviso | La configurazione del controllo del browser non è valida prima dell'esecuzione | browser.* |
no |
browser.control_no_auth |
critico | Il controllo del browser è esposto senza autenticazione tramite token/password | gateway.auth.* |
no |
browser.remote_cdp_http |
avviso | Il CDP remoto tramite HTTP non cifrato non dispone della crittografia del trasporto | cdpUrl del profilo del browser |
no |
browser.remote_cdp_private_host |
avviso | Il CDP remoto è indirizzato a un host privato/interno | cdpUrl del profilo del browser, browser.ssrfPolicy.* |
no |
sandbox.docker_config_mode_off |
avviso | La configurazione Docker della sandbox è presente ma non attiva | agents.*.sandbox.mode |
no |
sandbox.bind_mount_non_absolute |
avviso | I montaggi bind relativi possono essere risolti in modo imprevedibile | agents.*.sandbox.docker.binds[] |
no |
sandbox.dangerous_bind_mount |
critico | Il montaggio bind della sandbox punta a percorsi bloccati di sistema, credenziali o socket Docker | agents.*.sandbox.docker.binds[] |
no |
sandbox.dangerous_network_mode |
critico | La rete Docker della sandbox usa la modalità di condivisione dello spazio dei nomi host o container:* |
agents.*.sandbox.docker.network |
no |
sandbox.dangerous_seccomp_profile |
critico | Il profilo seccomp della sandbox indebolisce l'isolamento del contenitore | agents.*.sandbox.docker.securityOpt |
no |
sandbox.dangerous_apparmor_profile |
critico | Il profilo AppArmor della sandbox indebolisce l'isolamento del contenitore | agents.*.sandbox.docker.securityOpt |
no |
sandbox.browser_cdp_bridge_unrestricted |
avviso | Il bridge del browser della sandbox è esposto senza restrizioni sull'intervallo di origine | sandbox.browser.cdpSourceRange |
no |
sandbox.browser_container.non_loopback_publish |
critico | Il contenitore del browser esistente pubblica il CDP su interfacce non loopback | configurazione di pubblicazione del contenitore sandbox del browser | no |
sandbox.browser_container.hash_label_missing |
avviso | Il contenitore del browser esistente è precedente alle attuali etichette hash della configurazione | openclaw sandbox recreate --browser --all |
no |
sandbox.browser_container.hash_epoch_stale |
avviso | Il contenitore del browser esistente è precedente all'attuale epoca di configurazione del browser | openclaw sandbox recreate --browser --all |
no |
sandbox.browser_container.docker_probe_timeout |
avviso | Il controllo delle etichette Docker per il contenitore del browser è scaduto | raggiungibilità del daemon Docker | no |
tools.exec.host_sandbox_no_sandbox_defaults |
avviso | exec host=sandbox nega l'esecuzione quando la sandbox è disattivata |
tools.exec.host, agents.defaults.sandbox.mode |
no |
tools.exec.host_sandbox_no_sandbox_agents |
avviso | exec host=sandbox per singolo agente nega l'esecuzione quando la sandbox è disattivata |
agents.list[].tools.exec.host, agents.list[].sandbox.mode |
no |
tools.exec.security_full_configured |
avviso/critico | L'esecuzione sull'host è in funzione con security="full" |
tools.exec.security, agents.list[].tools.exec.security |
no |
tools.exec.agent_skill_mcp_boundary_drift |
avviso | Sono presenti elenchi di autorizzazione delle Skills dell'agente mentre l'esecuzione sull'host può raggiungere client/registri MCP | agents.list[].tools.exec.*, isolamento sandbox/sistema operativo, credenziali del server MCP |
no |
tools.exec.fs_tools_disabled_but_exec_enabled |
avviso | La policy degli strumenti del filesystem non rende l'esecuzione della shell di sola lettura | tools.deny, agents.list[].tools.deny, agents.*.sandbox.workspaceAccess |
no |
tools.exec.auto_allow_skills_enabled |
avviso | Le approvazioni di esecuzione considerano implicitamente attendibili i binari delle Skills | file delle approvazioni dell'host | no |
tools.exec.allowlist_interpreter_without_strict_inline_eval |
avviso | Le liste consentite degli interpreti permettono la valutazione inline senza imporre una nuova approvazione | tools.exec.strictInlineEval, agents.list[].tools.exec.strictInlineEval, lista consentita delle approvazioni di esecuzione |
no |
tools.exec.safe_bins_interpreter_unprofiled |
avviso | I binari di interpreti/runtime in safeBins privi di profili espliciti ampliano il rischio di esecuzione |
tools.exec.safeBins, tools.exec.safeBinProfiles, agents.list[].tools.exec.* |
no |
tools.exec.safe_bins_broad_behavior |
avviso | Gli strumenti con comportamento ampio in safeBins indeboliscono il modello di attendibilità a basso rischio del filtro stdin |
tools.exec.safeBins, agents.list[].tools.exec.safeBins |
no |
tools.exec.safe_bin_trusted_dirs_risky |
avviso | safeBinTrustedDirs include directory modificabili o rischiose |
tools.exec.safeBinTrustedDirs, agents.list[].tools.exec.safeBinTrustedDirs |
no |
tools.elevated.allowFrom.<provider>.wildcard |
critico | tools.elevated.allowFrom.<provider> include "*", approvando ogni mittente |
tools.elevated.allowFrom.<provider> |
no |
tools.elevated.allowFrom.<provider>.large |
avviso | La lista consentita con privilegi elevati per <provider> contiene più di 25 voci |
tools.elevated.allowFrom.<provider> |
no |
agents.claude_cli.permission_mode_overridden_by_yolo |
avviso | --permission-mode di Claude CLI viene ignorato perché l'esecuzione di OpenClaw è completamente non presidiata |
argomenti di tools.exec.security, tools.exec.ask, cliBackends.claude-cli |
no |
skills.workspace.symlink_escape |
avviso | skills/**/SKILL.md dell'area di lavoro viene risolto fuori dalla radice dell'area di lavoro (deriva della catena di collegamenti simbolici) |
stato del filesystem di skills/** nell'area di lavoro |
no |
skills.workspace.scan_truncated |
avviso | La scansione delle Skills nell'area di lavoro ha raggiunto il limite di directory visitate prima di terminare | appiattire/semplificare l'albero delle directory skills/ dell'area di lavoro |
no |
plugins.extensions_no_allowlist |
avviso | I Plugin sono installati senza una lista consentita esplicita dei Plugin | plugins.allowlist |
no |
plugins.allow_phantom_entries |
avviso | plugins.allow elenca un ID senza alcun Plugin installato corrispondente |
plugins.allow |
no |
plugins.installs_unpinned_npm_specs |
avviso | I record dell'indice dei Plugin non sono vincolati a specifiche npm immutabili | metadati di installazione del Plugin | no |
plugins.installs_missing_integrity |
avviso | I record dell'indice dei Plugin non contengono metadati di integrità | metadati di installazione del Plugin | no |
plugins.installs_version_drift |
avviso | I record dell'indice dei Plugin non corrispondono più ai pacchetti installati | metadati di installazione del Plugin | no |
plugins.code_safety |
avviso/critico | La scansione del codice dei Plugin ha rilevato pattern sospetti o pericolosi (solo --deep) |
codice del Plugin / origine dell'installazione | no |
plugins.code_safety.entry_path |
avviso | Il percorso di ingresso del Plugin punta a posizioni nascoste o in node_modules |
entry del manifesto del Plugin |
no |
plugins.code_safety.entry_escape |
critico | Il percorso di ingresso del Plugin esce dalla directory del Plugin | entry del manifesto del Plugin |
no |
plugins.code_safety.manifest_parse_error |
avviso | Non è stato possibile analizzare il manifesto del Plugin durante la scansione di sicurezza del codice | file del manifesto del Plugin | no |
plugins.code_safety.scan_failed |
avviso | Non è stato possibile completare la scansione del codice del Plugin (solo --deep) |
percorso del Plugin / ambiente di scansione | no |
plugins.<pluginId>.security_audit_failed |
avviso | Un raccoglitore di audit di sicurezza gestito da un Plugin ha generato un errore | raccoglitore di audit di sicurezza di tale Plugin | no |
skills.code_safety |
avviso/critico | I metadati o il codice del programma di installazione delle Skills contengono pattern sospetti o pericolosi (solo --deep) |
origine dell'installazione della Skill | no |
skills.code_safety.scan_failed |
avviso | Non è stato possibile completare la scansione del codice della Skill (solo --deep) |
ambiente di scansione della Skill | no |
security.exposure.open_channels_with_exec |
avviso/critico | Le stanze condivise/pubbliche possono raggiungere agenti abilitati all'esecuzione | channels.*.dmPolicy, channels.*.groupPolicy, tools.exec.*, agents.list[].tools.exec.* |
no |
security.exposure.open_groups_with_elevated |
critico | I messaggi diretti/gruppi aperti e gli strumenti con privilegi elevati creano percorsi di prompt injection ad alto impatto | percorsi della policy dei messaggi diretti di primo livello o annidati, sostituzioni degli account, channels.*.groupPolicy |
no |
security.exposure.open_groups_with_runtime_or_fs |
critico/avviso | I messaggi diretti/gruppi aperti possono raggiungere strumenti per comandi/file senza protezioni della sandbox/area di lavoro | percorsi delle policy dei messaggi diretti/gruppi, tools.profile/deny, tools.fs.workspaceOnly, agents.*.sandbox.mode |
no |
security.exposure.open_groups_with_control_plane_tools |
critico | I messaggi diretti/gruppi aperti possono raggiungere gli strumenti del piano di controllo di Gateway/Cron | percorsi delle policy dei messaggi diretti/gruppi, tools.allow, tools.alsoAllow, tools.profile, gateway, cron |
no |
security.trust_model.multi_user_heuristic |
avviso | La configurazione sembra multiutente, mentre il modello di attendibilità del Gateway è quello di un assistente personale | separare i confini di attendibilità o rafforzare la sicurezza per utenti condivisi (sandbox.mode, negazione degli strumenti/definizione dell'ambito dell'area di lavoro) |
no |
tools.profile_minimal_overridden |
avviso | Le sostituzioni degli agenti aggirano il profilo minimo globale | agents.list[].tools.profile |
no |
plugins.tools_reachable_permissive_policy |
avviso | Gli strumenti delle estensioni sono raggiungibili in contesti permissivi | tools.profile + autorizzazione/negazione degli strumenti |
no |
models.legacy |
avviso | Sono ancora configurate famiglie di modelli obsolete | selezione del modello | no |
models.weak_tier |
avviso | I modelli configurati sono inferiori ai livelli attualmente consigliati | selezione del modello | no |
models.small_params |
critico/informativo | I modelli piccoli e le superfici degli strumenti non sicure aumentano il rischio di injection | scelta del modello + policy della sandbox/degli strumenti | no |
channels.<provider>.dm.open |
critico | La policy dei messaggi diretti di <provider> è "open"; chiunque può inviare messaggi diretti al bot |
channels.<provider>.dmPolicy, .allowFrom |
no |
channels.<provider>.dm.open_invalid |
avviso | dmPolicy="open" senza "*" in allowFrom non è coerente |
channels.<provider>.allowFrom |
no |
channels.<provider>.dm.scope_main_multiuser |
avviso | Più mittenti di messaggi diretti condividono attualmente la sessione principale | session.dmScope |
no |
channels.<provider>.allowFrom.dangerous_name_matching_enabled |
informativo | dangerouslyAllowNameMatching riabilita la corrispondenza dei mittenti basata su nomi/e-mail/tag modificabili |
disabilitare dangerouslyAllowNameMatching, utilizzare ID mittente stabili |
no |
channels.<provider>.account.read_only_resolution |
avviso | Non è stato possibile risolvere completamente un account del canale per l'audit (segreto/Gateway mancante) | assicurarsi che i segreti referenziati siano risolvibili oppure eseguire su un'istantanea di un Gateway attivo | no |
channels.<provider>.warning.<n> |
informativo/avviso/critico | Avviso di sicurezza specifico del provider, classificato a partire dal testo libero del Plugin | vedere i dettagli del risultato | no |
summary.attack_surface |
info | Riepilogo aggregato della configurazione di autenticazione, canali, strumenti ed esposizione | più chiavi (vedere i dettagli del rilevamento) | no |
I checkId channels.<provider>.* e tools.elevated.allowFrom.<provider>.* vengono
generati per ogni canale/provider configurato, quindi <provider> è un ID di canale reale
(ad esempio telegram, discord) nell'output effettivo, non una stringa letterale.