2026 年 1 月、OpenClaw は CVE-2026-25253 を公開しました。デフォルト設定が緩いため、遠隔コード実行が可能となり、公的にアクセス可能な 135,000 インスタンス以上が影響を受けました。 お使いの OpenClaw(npm/Docker/VPS いずれも)がセキュリティベースライン監査をまだ Pass していないなら、今すぐ硬化する最後の機会です。本記事では脆弱性 incidents の振り返り、3 つのデプロイ形态 (Docker/systemd/VPS/npm グローバル) 向け硬化チェックリスト、そして5 段階対応プレイブック (検知 → バックアップ → アップグレード → 検証 → 72 時間監視)を提供し、「動く」状態から「戦場でテストされた」レベルへ引き上げます。
2026 年 1 月中旬、OpenClaw セキュリティチームは CVE-2026-25253 を開示しました。Gateway がデフォルト設定(0.0.0.0 リッスン、認証なし)で動作している場合、細工された WebSocket ハンドシェイクによりリモートコード実行が可能になるという内容です。Shodan スキャンによると、当時135,000 以上のインスタンスが認証なしでアクセス可能であり、個人開発者、小規模チーム、トンネリング誤設定の企業環境まで含まれていました。
根本原因はコードのバグではなくデフォルトの緩すぎる設定にあります:
0.0.0.0。ファイアウォールやリバースプロキシ認証がなければ、管理ポートがインターネット全体に公開されます。OPENCLAW_GATEWAY_TOKEN や TLS の設定を強制せず、平文チャネルが MITM 攻撃に晒されます。openclaw onboard を実行し「デプロイ完了」と判断し、その後の gateway.bind の締め付けや ufw 設定をスキップしました。この事件を受けて、v2026.2.0 以降はデフォルト bind アドレスが 127.0.0.1 に変更され、インストーラにセキュリティチェックが組み込まれました。しかし既存インスタンスは手動での修正が必要——本記事がそのための実行可能チェックリストです。
デプロイ形態を問わず、以下の 3 つを同時に満たす必要があります:
OPENCLAW_GATEWAY_TOKEN を帯びること(≥32 文字、90 日ごとにローテーション)。Docker / Docker Compose で OpenClaw を運用する場合、以下を監査してください:
| チェック項目 | 安全な設定 | 危険な設定例 | 修正コマンド / 手順 |
|---|---|---|---|
| network_mode | カスタム bridge または host + ポート制限 | ports: "0.0.0.0:18789:18789" | 127.0.0.1:18789:18789 に変更、またはリバースプロキシ経由のみ |
| --read-only | コンテナルートを read-only;ボリューム明示列出力 | read_only: true 未設定 | Compose に read_only: true 追加;./openclaw-data:/home/node/.openclaw 等ボリューム確保 |
| user とボリューム権限 | non-root (node:1000) で実行;ホストボリューム UID/GID 一致 | コンテナ root、ホスト dir 755 宽松 | user: "1000:1000";ボリューム dir を事前に chown 1000:1000 |
| restart policy | unless-stopped または on-failure:3 | restart 無し(クラッシュ時 Exit) | self-healing を確保;healthcheck と組み合わせ |
| OPENCLAW_GATEWAY_TOKEN | 環境変数注入;長さ ≥32;CLI 設定と一致 | 空トークンまたはイメージ内ハードコード | environment: OPENCLAW_GATEWAY_TOKEN=${TOKEN};ホスト側でも openclaw config set gateway.token $TOKEN |
変更後、docker exec <container> netstat -tlnp で Gateway が 127.0.0.1:18789(またはリバプロポート)のみリッスンしていることを確認してください。
VPS 上で systemd サービスとして OpenClaw を常駐させる場合、以下のファイアウォールと OS レベル制御を適用してください:
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp # SSH sudo ufw allow 443/tcp # HTTPS (リバースプロキシ使用時) sudo ufw allow 80/tcp # HTTP (任意、HTTPS へリダイレクト) sudo ufw enable
sudo ufw status numbered # 18789/tcp の allow 規則が表示されないはず
PasswordAuthentication noOpenClaw ログはデフォルトで /tmp/openclaw/openclaw-YYYY-MM-DD.log に出力されます。logrotate を設定しディスク不足を防止:
# /etc/logrotate.d/openclaw
/tmp/openclaw/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
[Unit]
Description=OpenClaw Gateway
After=network.target
[Service]
Type=simple
User=node
Group=node
ExecStart=/usr/bin/openclaw gateway start
ExecStop=/usr/bin/openclaw gateway stop
Restart=on-failure
RestartSec=5
# セキュリティ強化
PrivateTmp=yes
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/home/node/.openclaw /var/log/openclaw
Environment="OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}"
# リソース制限 (任意)
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
本機 npm インストール(開発機や手動運用で共通)では、Gateway bind アドレスを必ず締め付けてください:
# Gateway を 127.0.0.1 のみリッスンさせる openclaw config set gateway.bind 127.0.0.1 # 確認 openclaw config get gateway.bind # 127.0.0.1 と出力されるべき
外部アクセスが必要な場合は、リバースプロキシ (Nginx/Caddy) と HTTP ベーシック認証または OAuth を併用:
location /openclaw/ {
proxy_pass http://127.0.0.1:18789/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# Basic auth (例)
auth_basic "OpenClaw Admin";
auth_basic_user_file /etc/nginx/.htpasswd;
# または OAuth2 プロキシ統合
openclaw --version。もし < 2026.2.0 かつ Gateway がインターネットに露出していたら、直ちに高リスクと判定。nmap -p 18789 <your-public-ip> でポートの到達性を確認。~/.openclaw/ 全体をアーカイブ:tar -czf openclaw-backup-$(date +%F).tar.gz ~/.openclawopenclaw gateway export > gateway-state.jsonnpm update -g openclaw または docker pull openclaw/openclaw:latestgateway.bind を 127.0.0.1 にリセット;リバースプロキシ使用時は TLS と認証が有効であることを確認。openclaw gateway token rotate;すべての CLI インスタンスと CI 環境変数を更新。openclaw gateway restartopenclaw gateway status が "healthy" を示すこと。openclaw logs --follow | grep -i error以下 5 項目を月 1 回以上実行し、OpenClaw が設定ゆらぎやバージョン落后で再露出しないように維持:
| カテゴリ | チェックコマンド / 動作 | 合格基準 | 不合格時の修正 |
|---|---|---|---|
| ポート | ss -tlnp | grep 18789 | リッスンアドレス = 127.0.0.1 | openclaw config set gateway.bind 127.0.0.1 + 再起動 |
| 認証 | openclaw config get gateway.token (長さと更新日) | トークン ≥32 文字、90 日以内に回轉済 | openclaw gateway token rotate;全依存更新 |
| ログ | du -sh /tmp/openclaw/ と logrotate 状況 | ログdir <500MB、logrotate 有効 | logrotate 設定調整、古いログ削除 |
| 更新 | openclaw --version と最新リリース比較 | バージョン ≥ 2026.2.0 (最新 stable) | npm update -g openclaw または docker pull |
| バックアップ | ~/.openclaw/backup/ に 7 日以内のアーカイブ有無 | 直近 7 日以内に完全バックアップ存在 | openclaw backup を即時実行 |
openclaw/openclaw:latest、:2026.3.13、:stable。多くのチームが PoC や一時デプロイの間、「とにかく動かす」姿勢で、ファイアウォール設定、トークンローテーション、ログローテーションを省略します。開発機では 15 分節約できるかもしれませんが、本番環境では 3 つの致命的リスクがあります:
したがって、セキュリティ硬化は事後補丁ではなく第一步です。安定した長期間運用を求める本番 OpenClaw の場合、MACCOME のマネージド offering はすべてのベースラインを初期状態から組み込み(自動トークンローテーション、ファイアウォールホワイトリスト、24/7 侵入監視)——自己ホスティングのわずらわしさなしに利用できます。自ホスティングを選択する場合は、本記事のチェックリストを audit し、結果をチーム运维マニュアルに記録してください。
よくある質問
OpenClaw v2026.1.0 を使用していますが、CVE-2026-25253 の影響を受けますか?
影響バージョンは <2026.2.0 ですが、Gateway が直接公開されている場合に only 悪用可能です。バージョンが該当しても、127.0.0.1 に bind または制御されたトンネルを使用していればリスクは大幅低減。いずれにしてもアップグレードと bind 強化を推奨。
Docker Compose で read_only: true を設定済み——ファイアウォールは不要ですか?
必要です。read_only はコンテナ内ファイル改竄を防ぎますが、Gateway ポートが外部から直接アクセス可能なままかもしれません。完全な硬化には、read-only + 127.0.0.1 bind + リバースプロキシ認證の 3 点全てが必要です。
トークンローテーションで既存のチャネル (Telegram/Slack) は切れますか?
はい。Gateway トークンは CLI ↔ Gateway 間の認證情報;ローテ後は全 CLI/Agent が再ペアリング必要。チャネル層トークン(Telegram bot token)は影響なし。
本番で对外提供服务が必要な場合、最小権限はどう設定すれば?
最小権限 = (Gateway localhost のみリッスン) + (リバースプロキシ層で TLS + 認證強制) + (可能なら送信元 IP ホワイトリスト)。プロキシ層 (Nginx/Caddy/Traefik) は独立コンテナまたはエッジノードに置き、认证済みリクエストのみ 127.0.0.1:18789 へ転送。
自分のインスタンスが既に侵害されているかどうかを確認する方法は?
痕跡チェック:1) openclaw config list に不明な CLI トークンがある;2) ~/.openclaw/logs/ に不審 IP の接続記録;3) システムプロセスに curl/wget 外部通信のような不審子プロセス。いずれかがあれば、直ちに隔離、バックアップ後、再構築。