skill-guard について
OpenClaw のスキル実行中に、ファイル、ネットワーク、コマンドの動作を用途と照合するセキュリティ監視スキルです。観察内容を記録し、異常や権限違反を重大度別に通知します。
主な機能
- 01ファイルの読み書きを監視
- 02外向きネットワーク接続を確認
- 03シェルコマンドの実行を監視
- 04スキルの目的に合わない動作を検知
- 05重大度に応じてインシデントをエスカレーション
- 06読み取り専用で動作を記録
活用シーン
- 01スキルによる認証情報ファイルへのアクセスを確認
- 02未申告のネットワーク接続を発見
- 03ワークスペース外への書き込みを検知
- 04不審なコマンドや永続化動作を監視
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ useai-pro/ openclaw-skills-security --skill skill-guardインストール後、Claude Code で/skill-guardを入力して読み込まれたか確認します。
詳細
スキルガード
OpenClaw のランタイムセキュリティモニターです。スキルが有効な間、その動作を監視し、宣言された権限に違反する行為や不審なパターンを検出します。
監視対象
ファイルアクセス
スキルが読み書きするすべてのファイルを追跡します。
不審なファイルアクセスのパターン:
- 認証情報ファイルの読み取り:
~/.ssh/*、~/.aws/*、~/.gnupg/*、~/.config/gh/hosts.yml - プロジェクト外にある環境変数ファイルの読み取り:
~/.env、/etc/environment - スタートアップ場所への書き込み:
~/.bashrc、~/.zshrc、~/.profile、~/.config/autostart/ - システムパスへの書き込み:
/etc/、/usr/、/var/ - 他のプロジェクトへの書き込み:現在のワークスペース外にある任意のパス
- ブラウザーデータへのアクセス:
~/.config/google-chrome/、~/Library/Application Support/ - node_modules またはパッケージの依存関係の変更
想定されるファイルアクセス:
- 現在のプロジェクトディレクトリにあるソースコードの読み取り
- 想定された出力パス(src/, tests/, docs/)への生成コードの書き込み
- スキルの目的に関連する設定ファイル(package.json、tsconfig.json)の読み取り
ネットワークアクティビティ
すべての外部接続を監視します。
不審なネットワークパターン:
- ドメイン名ではなく IP アドレスへの接続
- 標準以外のポート(80、443 以外)への接続
- 大量の外部データ転送(情報流出の可能性)
- 既知の悪意あるドメインまたは C2 サーバーへの接続
- 不審な TLD への DNS クエリ
- 機密ファイルの読み取り直後の接続(.env を読み取り → ネットワークリクエスト = 情報流出)
想定されるネットワークアクティビティ:
- 宣言されたエンドポイント(SKILL.md に記載)への API 呼び出し
- パッケージレジストリへの問い合わせ(npm、pypi、crates.io)
- 公式ソースからのドキュメント取得
シェルコマンド
すべてのシェルコマンドの実行を監視します。
不審なコマンド:
curl、wget、nc、ncat— データ転送ツールbase64、openssl enc— エンコード/暗号化(難読化の可能性)chmod +x、chown— 権限の変更crontab、systemctl、launchctl— 永続化の仕組み- 不明なホストへの
ssh、scp、rsync— リモートアクセス - システムディレクトリに対する
rm -rf— 破壊的な操作 - ダウンロードしたスクリプトの
eval、source— リモートコード実行 - ネットワークツールへのパイプ出力を含む任意のコマンド:
cat file | curl - バックグラウンドプロセス:
nohup、&、disown
想定されるコマンド:
git status、git log、git diff— リポジトリ操作npm test、pytest、go test— テストランナーnpm install、pip install— パッケージのインストール(ユーザーの確認が必要)- package.json の scripts に宣言されたビルドコマンド
動作分析
異常検知
スキルの宣言された目的に一致しない動作を検出します。
| スキルカテゴリ | 想定される動作 | 異常な動作 |
|---|---|---|
| コードレビューアー | ソースファイルを読み取る | .env の読み取り、ファイルへの書き込み |
| テスト生成ツール | ソースを読み取り、テストファイルを書き込む | ネットワークリクエスト、シェルアクセス |
| ドキュメント作成ツール | ソースを読み取り、ドキュメントを書き込む | 認証情報ファイルの読み取り |
| セキュリティスキャナー | プロジェクト内のすべてのファイルを読み取る | ネットワークリクエスト、シェルアクセス |
権限違反の検知
実際の動作を宣言された権限と照合します。
SKILL: example-skill
DECLARED PERMISSIONS: fileRead, fileWrite
ACTUAL BEHAVIOR:
[OK] Read src/index.ts
[OK] Write tests/index.test.ts
[VIOLATION] Network request to api.example.com
[VIOLATION] Shell command: curl -X POST ...
アラート形式
SKILL GUARD ALERT
=================
Skill: <name>
Severity: CRITICAL / HIGH / MEDIUM / LOW
Time: <timestamp>
VIOLATION: <description>
Action: <what the skill did>
Expected: <what it should do based on permissions>
Evidence: <command, file path, or URL>
RECOMMENDATION:
[ ] Terminate the skill immediately
[ ] Revoke the specific permission
[ ] Continue with monitoring
[ ] Report to UseClawPro team
インシデントのエスカレーション
| 重大度 | トリガー | アクション |
|---|---|---|
| CRITICAL | 認証情報ファイルへのアクセスとネットワーク接続 | 直ちに終了し、認証情報をローテーションする |
| CRITICAL | リバースシェルのパターンを検出 | 終了し、永続化の有無を確認する |
| HIGH | 宣言されていないネットワーク接続 | スキルを一時停止し、ユーザーに確認する |
| HIGH | ワークスペース外へのファイル書き込み | スキルを一時停止し、変更内容を確認する |
| MEDIUM | 宣言されていないシェルコマンド | ログに記録して続行し、ユーザーに通知する |
| LOW | 想定外だが機密情報ではないファイルの読み取り | ログにのみ記録する |
ルール
- 常に読み取り専用モードで実行してください。ガード自体がファイルを変更したり、ネットワークリクエストを行ったりしてはなりません
- 違反だけでなく、すべての観察結果を記録してください
- 判断に迷った場合は、疑わしいものとしてフラグを立ててください。脅威を見逃すよりも、誤検知のほうが望ましいです
- 宣言された権限だけでなく、動作をSKILL.mdの説明と照らし合わせてください
- 時間をかけた情報流出に注意してください。複数のリクエストにわたり、少量のデータが送信される場合があります
コメント
Markdown 対応