Gateway
보안 감사 검사
openclaw security audit는 checkId를 키로 하는 구조화된 발견 사항을 내보냅니다. 이
페이지는 해당 ID의 참조 카탈로그입니다. 상위 수준의 위협 모델과 강화 지침은 보안을 참조하세요.
실제 배포에서 가장 흔히 보게 될 가능성이 높은 신호가 강한 checkId 값(전체 목록은 아님):
checkId |
심각도 | 중요한 이유 | 기본 수정 키/경로 | 자동 수정 |
|---|---|---|---|---|
fs.state_dir.perms_world_writable |
치명적 | 다른 사용자/프로세스가 전체 OpenClaw 상태를 수정할 수 있음 | ~/.openclaw의 파일 시스템 권한 |
예 |
fs.state_dir.perms_group_writable |
경고 | 그룹 사용자가 전체 OpenClaw 상태를 수정할 수 있음 | ~/.openclaw의 파일 시스템 권한 |
예 |
fs.state_dir.perms_readable |
경고 | 상태 디렉터리를 다른 사용자가 읽을 수 있음 | ~/.openclaw의 파일 시스템 권한 |
예 |
fs.state_dir.symlink |
경고 | 상태 디렉터리 대상이 또 다른 신뢰 경계가 됨 | 상태 디렉터리 파일 시스템 레이아웃 | 아니요 |
fs.config.perms_writable |
치명적 | 다른 사용자가 인증/도구 정책/구성을 변경할 수 있음 | ~/.openclaw/openclaw.json의 파일 시스템 권한 |
예 |
fs.config.symlink |
경고 | 심볼릭 링크된 구성 파일은 쓰기가 지원되지 않으며 또 다른 신뢰 경계를 추가함 | 일반 구성 파일로 교체하거나 OPENCLAW_CONFIG_PATH가 실제 파일을 가리키도록 설정 |
아니요 |
fs.config.perms_group_readable |
경고 | 그룹 사용자가 구성 토큰/설정을 읽을 수 있음 | 구성 파일의 파일 시스템 권한 | 예 |
fs.config.perms_world_readable |
치명적 | 구성이 토큰/설정을 노출할 수 있음 | 구성 파일의 파일 시스템 권한 | 예 |
fs.config_include.perms_writable |
치명적 | 구성 include 파일을 다른 사용자가 수정할 수 있음 | openclaw.json에서 참조되는 include 파일 권한 |
예 |
fs.config_include.perms_group_readable |
경고 | 그룹 사용자가 포함된 비밀 정보/설정을 읽을 수 있음 | openclaw.json에서 참조되는 include 파일 권한 |
예 |
fs.config_include.perms_world_readable |
치명적 | 포함된 비밀 정보/설정을 모든 사용자가 읽을 수 있음 | openclaw.json에서 참조되는 include 파일 권한 |
예 |
fs.auth_profiles.perms_writable |
치명적 | 다른 사용자가 저장된 모델 자격 증명을 주입하거나 교체할 수 있음 | agents/<agentId>/agent/auth-profiles.json 권한 |
예 |
fs.auth_profiles.perms_readable |
경고 | 다른 사용자가 API 키와 OAuth 토큰을 읽을 수 있음 | agents/<agentId>/agent/auth-profiles.json 권한 |
예 |
fs.credentials_dir.perms_writable |
치명적 | 다른 사용자가 채널 페어링/자격 증명 상태를 수정할 수 있음 | ~/.openclaw/credentials의 파일 시스템 권한 |
예 |
fs.credentials_dir.perms_readable |
경고 | 다른 사용자가 채널 자격 증명 상태를 읽을 수 있음 | ~/.openclaw/credentials의 파일 시스템 권한 |
예 |
fs.sessions_store.perms_readable |
경고 | 다른 사용자가 세션 transcript/메타데이터를 읽을 수 있음 | 세션 저장소 권한 | 예 |
fs.log_file.perms_readable |
경고 | 다른 사용자가 수정되었지만 여전히 민감한 로그를 읽을 수 있음 | gateway 로그 파일 권한 | 예 |
fs.synced_dir |
경고 | iCloud/Dropbox/Drive의 상태/구성은 토큰/transcript 노출 범위를 넓힘 | 동기화 폴더 밖으로 구성/상태 이동 | 아니요 |
gateway.bind_no_auth |
치명적 | 공유 비밀 없이 원격 바인딩 | gateway.bind, gateway.auth.* |
아니요 |
gateway.loopback_no_auth |
치명적 | 역방향 프록시된 loopback이 인증되지 않은 상태가 될 수 있음 | gateway.auth.*, 프록시 설정 |
아니요 |
gateway.trusted_proxies_missing |
경고 | 역방향 프록시 헤더가 있지만 신뢰되지 않음 | gateway.trustedProxies |
아니요 |
gateway.http.no_auth |
경고/치명적 | auth.mode="none"으로 Gateway HTTP API에 접근할 수 있음 |
gateway.auth.mode, gateway.http.endpoints.* |
아니요 |
gateway.http.session_key_override_enabled |
정보 | HTTP API 호출자가 sessionKey를 재정의할 수 있음 |
gateway.http.allowSessionKeyOverride |
아니요 |
gateway.tools_invoke_http.dangerous_allow |
경고/치명적 | HTTP API를 통해 위험한 도구를 다시 활성화함 | gateway.tools.allow |
아니요 |
gateway.nodes.allow_commands_dangerous |
경고/치명적 | 영향이 큰 Node 명령(camera/screen/contacts/calendar/SMS)을 활성화함 | gateway.nodes.allowCommands |
아니요 |
gateway.nodes.deny_commands_ineffective |
경고 | 패턴 같은 deny 항목이 셸 텍스트나 그룹과 일치하지 않음 | gateway.nodes.denyCommands |
아니요 |
gateway.tailscale_funnel |
치명적 | 공개 인터넷 노출 | gateway.tailscale.mode |
아니요 |
gateway.tailscale_serve |
정보 | Serve를 통해 tailnet 노출이 활성화됨 | gateway.tailscale.mode |
아니요 |
gateway.control_ui.allowed_origins_required |
치명적 | 명시적인 브라우저 origin allowlist가 없는 비 loopback Control UI | gateway.controlUi.allowedOrigins |
아니요 |
gateway.control_ui.allowed_origins_wildcard |
경고/치명적 | allowedOrigins=["*"]가 브라우저 origin allowlisting을 비활성화함 |
gateway.controlUi.allowedOrigins |
아니요 |
gateway.control_ui.host_header_origin_fallback |
경고/치명적 | Host 헤더 origin fallback을 활성화함(DNS 리바인딩 강화 수준 하향) | gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback |
아니요 |
gateway.control_ui.insecure_auth |
경고 | insecure-auth 호환성 토글이 활성화됨 | gateway.controlUi.allowInsecureAuth |
아니요 |
gateway.control_ui.device_auth_disabled |
치명적 | 기기 ID 확인을 비활성화함 | gateway.controlUi.dangerouslyDisableDeviceAuth |
아니요 |
gateway.real_ip_fallback_enabled |
경고/치명적 | X-Real-IP fallback을 신뢰하면 프록시 오구성을 통해 소스 IP 스푸핑이 가능해질 수 있음 |
gateway.allowRealIpFallback, gateway.trustedProxies |
아니요 |
gateway.token_too_short |
경고 | 짧은 공유 토큰은 무차별 대입 공격을 받기 쉬움 | gateway.auth.token |
아니요 |
gateway.auth_no_rate_limit |
경고 | rate limiting 없이 인증을 노출하면 무차별 대입 위험이 증가함 | gateway.auth.rateLimit |
아니요 |
gateway.trusted_proxy_auth |
치명적 | 프록시 ID가 이제 인증 경계가 됨 | gateway.auth.mode="trusted-proxy" |
아니요 |
gateway.trusted_proxy_no_proxies |
치명적 | 신뢰할 수 있는 프록시 IP 없이 trusted-proxy 인증을 사용하는 것은 안전하지 않음 | gateway.trustedProxies |
아니요 |
gateway.trusted_proxy_no_user_header |
치명적 | trusted-proxy 인증이 사용자 ID를 안전하게 확인할 수 없음 | gateway.auth.trustedProxy.userHeader |
아니요 |
gateway.trusted_proxy_no_allowlist |
경고 | trusted-proxy 인증이 인증된 모든 upstream 사용자를 허용함 | gateway.auth.trustedProxy.allowUsers |
아니요 |
gateway.trusted_proxy_allow_loopback |
경고 | 신뢰 프록시 인증이 명시적으로 허용된 루프백 프록시 소스를 허용함 | gateway.auth.trustedProxy.allowLoopback |
아니요 |
gateway.probe_auth_secretref_unavailable |
경고 | 이 명령 경로에서 심층 프로브가 인증 SecretRefs를 해석할 수 없음 | 심층 프로브 인증 소스 / SecretRef 가용성 | 아니요 |
gateway.probe_failed |
경고/치명적 | 라이브 Gateway 프로브 실패 | Gateway 도달 가능성/인증 | 아니요 |
discovery.mdns_full_mode |
경고/치명적 | mDNS 전체 모드가 로컬 네트워크에 cliPath/sshPort 메타데이터를 알림 |
discovery.mdns.mode, gateway.bind |
아니요 |
config.insecure_or_dangerous_flags |
경고 | 안전하지 않거나 위험한 디버그 플래그가 활성화됨 | 여러 키(발견 세부 정보 참조) | 아니요 |
config.secrets.gateway_password_in_config |
경고 | Gateway 비밀번호가 구성에 직접 저장됨 | gateway.auth.password |
아니요 |
config.secrets.hooks_token_in_config |
경고 | 훅 전달자 토큰이 구성에 직접 저장됨 | hooks.token |
아니요 |
hooks.token_reuse_gateway_token |
치명적 | 훅 인그레스 토큰이 Gateway 인증도 해제함 | hooks.token, gateway.auth.token |
아니요 |
hooks.token_too_short |
경고 | 훅 인그레스에 대한 무차별 대입 공격이 더 쉬워짐 | hooks.token |
아니요 |
hooks.default_session_key_unset |
경고 | 훅 에이전트 실행이 생성된 요청별 세션으로 팬아웃됨 | hooks.defaultSessionKey |
아니요 |
hooks.allowed_agent_ids_unrestricted |
경고/치명적 | 인증된 훅 호출자가 구성된 모든 에이전트로 라우팅할 수 있음 | hooks.allowedAgentIds |
아니요 |
hooks.request_session_key_enabled |
경고/치명적 | 외부 호출자가 sessionKey를 선택할 수 있음 | hooks.allowRequestSessionKey |
아니요 |
hooks.request_session_key_prefixes_missing |
경고/치명적 | 외부 세션 키 형태에 제한이 없음 | hooks.allowedSessionKeyPrefixes |
아니요 |
hooks.path_root |
치명적 | 훅 경로가 /라서 인그레스가 충돌하거나 잘못 라우팅되기 쉬움 |
hooks.path |
아니요 |
hooks.installs_unpinned_npm_specs |
경고 | 훅 설치 기록이 변경 불가능한 npm 명세에 고정되지 않음 | 훅 설치 메타데이터 | 아니요 |
hooks.installs_missing_integrity |
경고 | 훅 설치 기록에 무결성 메타데이터가 없음 | 훅 설치 메타데이터 | 아니요 |
hooks.installs_version_drift |
경고 | 훅 설치 기록이 설치된 패키지와 달라짐 | 훅 설치 메타데이터 | 아니요 |
logging.redact_off |
경고 | 민감한 값이 로그/상태에 유출됨 | logging.redactSensitive |
예 |
browser.control_invalid_config |
경고 | 브라우저 제어 구성이 런타임 전에 유효하지 않음 | browser.* |
아니요 |
browser.control_no_auth |
치명적 | 브라우저 제어가 토큰/비밀번호 인증 없이 노출됨 | gateway.auth.* |
아니요 |
browser.remote_cdp_http |
경고 | 일반 HTTP를 통한 원격 CDP에는 전송 암호화가 없음 | 브라우저 프로필 cdpUrl |
아니요 |
browser.remote_cdp_private_host |
경고 | 원격 CDP가 사설/내부 호스트를 대상으로 함 | 브라우저 프로필 cdpUrl, browser.ssrfPolicy.* |
아니요 |
sandbox.docker_config_mode_off |
경고 | Sandbox Docker 구성이 있지만 비활성 상태임 | agents.*.sandbox.mode |
아니요 |
sandbox.bind_mount_non_absolute |
경고 | 상대 바인드 마운트가 예측 불가능하게 해석될 수 있음 | agents.*.sandbox.docker.binds[] |
아니요 |
sandbox.dangerous_bind_mount |
치명적 | Sandbox 바인드 마운트가 차단된 시스템, 자격 증명 또는 Docker 소켓 경로를 대상으로 함 | agents.*.sandbox.docker.binds[] |
아니요 |
sandbox.dangerous_network_mode |
치명적 | Sandbox Docker 네트워크가 host 또는 container:* 네임스페이스 조인 모드를 사용함 |
agents.*.sandbox.docker.network |
아니요 |
sandbox.dangerous_seccomp_profile |
치명적 | Sandbox seccomp 프로필이 컨테이너 격리를 약화함 | agents.*.sandbox.docker.securityOpt |
아니요 |
sandbox.dangerous_apparmor_profile |
치명적 | Sandbox AppArmor 프로필이 컨테이너 격리를 약화함 | agents.*.sandbox.docker.securityOpt |
아니요 |
sandbox.browser_cdp_bridge_unrestricted |
경고 | Sandbox 브라우저 브리지가 소스 범위 제한 없이 노출됨 | sandbox.browser.cdpSourceRange |
아니요 |
sandbox.browser_container.non_loopback_publish |
치명적 | 기존 브라우저 컨테이너가 비루프백 인터페이스에 CDP를 게시함 | 브라우저 Sandbox 컨테이너 게시 구성 | 아니요 |
sandbox.browser_container.hash_label_missing |
경고 | 기존 브라우저 컨테이너가 현재 구성 해시 레이블보다 오래됨 | openclaw sandbox recreate --browser --all |
아니요 |
sandbox.browser_container.hash_epoch_stale |
경고 | 기존 브라우저 컨테이너가 현재 브라우저 구성 epoch보다 오래됨 | openclaw sandbox recreate --browser --all |
아니요 |
tools.exec.host_sandbox_no_sandbox_defaults |
경고 | Sandbox가 꺼져 있으면 exec host=sandbox가 폐쇄적으로 실패함 |
tools.exec.host, agents.defaults.sandbox.mode |
아니요 |
tools.exec.host_sandbox_no_sandbox_agents |
경고 | Sandbox가 꺼져 있으면 에이전트별 exec host=sandbox가 폐쇄적으로 실패함 |
agents.list[].tools.exec.host, agents.list[].sandbox.mode |
아니요 |
tools.exec.security_full_configured |
경고/치명적 | 호스트 exec가 security="full"로 실행 중임 |
tools.exec.security, agents.list[].tools.exec.security |
아니요 |
tools.exec.auto_allow_skills_enabled |
경고 | Exec 승인이 스킬 bin을 암묵적으로 신뢰함 | ~/.openclaw/exec-approvals.json |
아니요 |
tools.exec.allowlist_interpreter_without_strict_inline_eval |
경고 | 인터프리터 허용 목록이 강제 재승인 없이 인라인 eval을 허용함 | tools.exec.strictInlineEval, agents.list[].tools.exec.strictInlineEval, exec 승인 허용 목록 |
아니요 |
tools.exec.safe_bins_interpreter_unprofiled |
경고 | 명시적 프로필 없이 safeBins에 있는 인터프리터/런타임 bin이 exec 위험을 넓힘 |
tools.exec.safeBins, tools.exec.safeBinProfiles, agents.list[].tools.exec.* |
아니요 |
tools.exec.safe_bins_broad_behavior |
경고 | safeBins의 광범위 동작 도구가 저위험 stdin 필터 신뢰 모델을 약화함 |
tools.exec.safeBins, agents.list[].tools.exec.safeBins |
아니요 |
tools.exec.safe_bin_trusted_dirs_risky |
경고 | safeBinTrustedDirs에 변경 가능하거나 위험한 디렉터리가 포함됨 |
tools.exec.safeBinTrustedDirs, agents.list[].tools.exec.safeBinTrustedDirs |
아니요 |
skills.workspace.symlink_escape |
경고 | 워크스페이스 skills/**/SKILL.md가 워크스페이스 루트 밖으로 해석됨(심볼릭 링크 체인 드리프트) |
워크스페이스 skills/** 파일 시스템 상태 |
아니요 |
plugins.extensions_no_allowlist |
경고 | 명시적 Plugin 허용 목록 없이 Plugin이 설치됨 | plugins.allowlist |
아니요 |
plugins.installs_unpinned_npm_specs |
warn | Plugin 인덱스 레코드가 변경 불가능한 npm 사양에 고정되어 있지 않음 | Plugin 설치 메타데이터 | no |
plugins.installs_missing_integrity |
warn | Plugin 인덱스 레코드에 무결성 메타데이터가 없음 | Plugin 설치 메타데이터 | no |
plugins.installs_version_drift |
warn | Plugin 인덱스 레코드가 설치된 패키지와 달라짐 | Plugin 설치 메타데이터 | no |
plugins.code_safety |
warn/critical | Plugin 코드 검사에서 의심스럽거나 위험한 패턴을 발견함 | Plugin 코드 / 설치 소스 | no |
plugins.code_safety.entry_path |
warn | Plugin 진입 경로가 숨김 위치 또는 node_modules 위치를 가리킴 |
Plugin 매니페스트 entry |
no |
plugins.code_safety.entry_escape |
critical | Plugin 진입 경로가 Plugin 디렉터리를 벗어남 | Plugin 매니페스트 entry |
no |
plugins.code_safety.scan_failed |
warn | Plugin 코드 검사를 완료할 수 없음 | Plugin 경로 / 검사 환경 | no |
skills.code_safety |
warn/critical | Skill 설치 관리자 메타데이터/코드에 의심스럽거나 위험한 패턴이 포함됨 | Skill 설치 소스 | no |
skills.code_safety.scan_failed |
warn | Skill 코드 검사를 완료할 수 없음 | Skill 검사 환경 | no |
security.exposure.open_channels_with_exec |
warn/critical | 공유/공개 방에서 exec 활성화 에이전트에 접근할 수 있음 | channels.*.dmPolicy, channels.*.groupPolicy, tools.exec.*, agents.list[].tools.exec.* |
no |
security.exposure.open_groups_with_elevated |
critical | 열린 그룹과 상승된 도구가 영향도 높은 프롬프트 인젝션 경로를 만듦 | channels.*.groupPolicy, tools.elevated.* |
no |
security.exposure.open_groups_with_runtime_or_fs |
critical/warn | 열린 그룹이 샌드박스/작업공간 보호 없이 명령/파일 도구에 접근할 수 있음 | channels.*.groupPolicy, tools.profile/deny, tools.fs.workspaceOnly, agents.*.sandbox.mode |
no |
security.trust_model.multi_user_heuristic |
warn | Gateway 신뢰 모델은 개인 비서인데 구성이 다중 사용자처럼 보임 | 신뢰 경계 분리 또는 공유 사용자 강화(sandbox.mode, 도구 거부/작업공간 범위 지정) |
no |
tools.profile_minimal_overridden |
warn | 에이전트 재정의가 전역 최소 프로필을 우회함 | agents.list[].tools.profile |
no |
plugins.tools_reachable_permissive_policy |
warn | 허용적인 컨텍스트에서 확장 도구에 접근할 수 있음 | tools.profile + 도구 허용/거부 |
no |
models.legacy |
warn | 레거시 모델 계열이 아직 구성되어 있음 | 모델 선택 | no |
models.weak_tier |
warn | 구성된 모델이 현재 권장 티어보다 낮음 | 모델 선택 | no |
models.small_params |
critical/info | 소형 모델과 안전하지 않은 도구 표면이 결합되어 인젝션 위험이 증가함 | 모델 선택 + 샌드박스/도구 정책 | no |
summary.attack_surface |
info | 인증, 채널, 도구, 노출 상태의 롤업 요약 | 여러 키(발견 세부 정보 참조) | no |