
자체 호스팅 OpenClaw 설치를 위한 오프라인, 읽기 전용 강화 점검 — 게이트웨이 노출, 인증, CVE-2026-25253. 비밀번호를 출력하지 않으며, 네트워크 호출을 하지 않습니다.
이 스크립트는 읽기만 수행합니다. 아무것도 수정하지 않으며, 안전함을 보장하지 않습니다. 녹색 출력은 아래 나열된 검사만 통과했음을 의미하며 그 이상은 아닙니다.
openclaw-hardening-check.mjs는 의존성이 없고 오프라인에서 동작하는 작은 도구로, OpenClaw 설치 환경을 검토합니다. 로컬 설정, 패키지 메타데이터, 플러그인 및 스킬 매니페스트, 파일 모드, 그리고 Linux에서는 실행 중인 Gateway의 /proc 항목을 읽습니다. 파일을 변경하거나, OpenClaw 명령을 호출하거나, 레지스트리에 접속하거나, 네트워크 요청을 보내지 않습니다.
gateway.bind가 루프백 전용인지, 비루프백인지, 런타임 의존적인지 보고합니다. 감지된 Docker, Podman, Kubernetes 또는 Fly 컨테이너 내부에서 설정되지 않았거나 auto인 바인드는 OpenClaw의 컨테이너 기본값과 일치하도록 0.0.0.0으로 처리됩니다. 실행 중인 Linux Gateway는 별도로 확인하므로, 명령줄이나 서비스 오버라이드가 안전한 설정 값 뒤에 숨을 수 없습니다.gateway.auth.token과 .password에 대한 OpenClaw의 설정 우선 순위를 모델링합니다. 자격 증명을 측정하기 전에 ${VAR}, , , , 구조화된 SecretRef를 인식합니다. 인증 환경 증거는 일치하는 Gateway 프로세스, 또는 상태 에서 가져오며, 감사 프로세스에서는 절대 가져오지 않습니다. 비밀 값은 절대 출력되지 않으며, 보고서에는 존재 여부, 소스 클래스, 길이만 포함됩니다. 공개된 예제 플레이스홀더와 24자 미만의 토큰은 플래그가 지정됩니다.$VARsecretref-env:VAR__env__:VARgateway.systemd.env.env2026.1.29 이전 버전을 영향을 받는 것으로 처리합니다. 이 취약점으로 인해 쿼리 문자열 gatewayUrl로 Gateway 토큰을 노출하는 WebSocket 연결이 트리거될 수 있었습니다. NVD 항목 및 OpenClaw 권고를 참조하세요.latest, beta, main과 같은 변동 대상(target)을 구분합니다. npm과 pnpm은 설치된 패키지에 원래 요청된 dist-tag를 보존하지 않으므로, 출처가 없을 때는 추측하지 않고 "확인할 수 없음"을 보고합니다..env, gateway.systemd.env, 발견된 auth-profiles.json 파일, 그리고 해결된 파일 SecretRef의 그룹/전체 노출 또는 예상치 못한 소유권을 확인합니다.dist-runtime/extensions 포함)을 상태, 설정 디렉터리, 관리형, 워크스페이스, 개인, 설정된, npm 프로젝트 위치에서 찾은 항목과 별도로 목록화합니다. 번들되지 않은 항목은 수동 검토를 위해 표시되며, 악성으로 레이블링되지 않습니다./proc/net/tcp* 소켓 inode를 Gateway 항목 파일 또는 바이너리 프로세스로 매핑하고, 이들이 소유한 모든 비루프백 TCP 리스너에 플래그를 지정합니다. 예상 포트의 리스너가 소유자를 확인할 수 없으면 "Gateway가 실행 중이 아님"이 아닌 "확인할 수 없음"이 생성됩니다. Gateway가 중지된 상태에서도 디스크를 통해 검사가 작동합니다.경로와 기본값은 공식 설정 문서, 설정 참조, Gateway 노출 런북, 스킬 문서, 플러그인 관리 문서를 따릅니다.
스크립트를 OpenClaw가 실행 중인 머신에 복사한 후, 동일한 OS 사용자로 실행하세요:
node openclaw-hardening-check.mjs
OpenClaw의 기본 설정은 ~/.openclaw/openclaw.json입니다. 스크립트는 OPENCLAW_CONFIG_PATH, OPENCLAW_STATE_DIR, OPENCLAW_GATEWAY_PORT도 인식합니다.
비기본 레이아웃과 재현 가능한 고정 검사를 위해 선택적 재정의를 사용할 수 있습니다:
node openclaw-hardening-check.mjs \
--config /srv/openclaw/openclaw.json \
--state-dir /srv/openclaw \
--package-root /opt/openclaw/lib/node_modules/openclaw \
--install-spec 2026.6.10
--install-spec은 설치 관리자나 배포 정의에서 원래 사용한 대상이어야 합니다. 현재 설치된 버전을 출처 확인 없이 전달하는 것은 배포가 고정되었다는 증명이 되지 않습니다.
검사기는 비밀 자체를 절대 출력하지 않으므로, 공개 가능한 형태는 소스와 길이만 기록합니다:
OpenClaw hardening check
Read-only and offline. Secret values are never printed.
Config: ~/.openclaw/openclaw.json
[PASS] Config: loaded ~/.openclaw/openclaw.json without printing its contents.
[PASS] Gateway bind: loopback; configured for local-only access.
[PASS] Gateway authentication: present via Gateway process environment bootstrap, length 48; value was not printed.
[PASS] Listening sockets: OpenClaw TCP listeners are loopback-only: 127.0.0.1:18789, [::1]:18789.
[PASS] CVE-2026-25253: installed package version 2026.6.10 is at or newer than 2026.1.29.
[PASS] Installation pin: exact target 2026.6.10 is recorded for this check.
[WARN] Third-party plugins: 1: example-plugin. Review it yourself; no malware verdict was attempted.
Summary: No security problems found. 1 item flagged for your review; exit code 0.
Secret value: [REDACTED — never present in output].
요약은 보안 문제(FAIL), 수동 검토 항목(WARN), 불완전 검사(CANNOT CHECK)를 별도로 집계합니다. WARN 및 CANNOT CHECK 결과만으로는 프로세스가 실패하지 않으며, FAIL만 있을 때 종료 코드 1을 반환합니다.
| 코드 | 의미 |
|---|---|
0 | FAIL 보안 문제가 발견되지 않음; WARN 또는 CANNOT CHECK 결과는 여전히 존재할 수 있음. |
1 | 최소 하나 이상의 FAIL 보안 문제에 주의가 필요함. |
2 | 명령줄이 잘못되었거나, 설정 파일을 찾을 수 없거나, 읽거나, 포함하거나, 안전하게 구문 분석할 수 없음. |
/proc가 필요합니다. 다른 플랫폼에서는 명시적으로 "확인할 수 없음" 결과가 반환됩니다.@latest를 확인했는지 일반적으로 증명할 수 없습니다. --install-spec으로 신뢰할 수 있는 배포 출처를 제공하세요.테스트 스위트는 node:test와 임시 디렉토리만 사용합니다:
node --test test/openclaw-hardening-check.test.mjs
Ilya Prudnikov — cain-ai.com