メインコンテンツまでスキップ

セキュリティファーストの設計

AI Skill は実行可能な命令です。skillshare はこれを信頼できない入力として扱います。

脅威モデル

GitHub から Skill をインストールすると、コード生成やファイル変更、場合によってはコマンド実行にまで影響を与える命令を AI ツールに与えることになります。悪意ある Skill は次のようなことをする可能性があります。

  • プロンプトインジェクションによって AI の安全ガイドラインを上書きする
  • ファイルの内容を外部 URL に送信するよう AI に指示してデータを窃取する
  • AI のシェルアクセスを通じて破壊的なコマンドを実行する
  • 環境変数や設定ファイルにアクセスして認証情報を盗む

これは理論上の話ではありません。プロンプトインジェクションは AI ツール群における最大級のセキュリティ懸念事項です。

Audit エンジン

skillshare には組み込みのセキュリティスキャナー(skillshare audit)が搭載されており、インストール済みのすべての Skill を、5 段階の深刻度にわたる 15 以上の検出パターンと照合します。

深刻度
CRITICALプロンプトインジェクション、システムプロンプトの上書き
HIGHデータ窃取用の URL、認証情報へのアクセスパターン
MEDIUM破壊的なコマンド(rm -rfDROP TABLE)、ファイルシステムへの書き込み
LOWネットワークリクエスト、外部ツールの呼び出し
INFO大きすぎるファイルサイズ、不自然なフォーマット

仕組み

Audit エンジンは、パターンマッチングとヒューリスティクスを用いて SKILL.md の内容をスキャンします。

# Scan all installed skills
skillshare audit

# JSON output for CI integration
skillshare audit --json

# Scan project skills only
skillshare audit -p

自動ブロック

skillshare install の実行中には Audit が自動的に実行されます。CRITICAL の指摘が検出された場合、インストールはブロックされます。

CRITICAL: Prompt injection detected in "malicious-skill"
→ Pattern: "ignore previous instructions"
→ Installation blocked. Use --force to override (not recommended).

多層防御

Audit エンジンはその一層にすぎません。skillshare のセキュリティモデルには次が含まれます。

  1. インストール時の Audit — 脅威が AI ツールに到達する前に検出する
  2. オンデマンドの Audit — 新しいパターンが追加されるたびに既存の Skill を再スキャンする
  3. シンボリックリンクによる隔離 — Skill はコピーではなくシンボリックリンクされるため、Source が引き続き権威を持つ
  4. 変更前のバックアップskillshare backup が Skill ライブラリ全体をスナップショットする
  5. TTL 付きの Trash — 削除された Skill はまず Trash に入り、即座には完全削除されない
  6. 操作ログ — すべての変更操作は operations.log(JSONL)に記録される

サプライチェーンに関する考慮事項

AI Skill エコシステムはまだ若く、レビュープロセスを備えたパッケージレジストリも、コード署名も、依存関係解決の仕組みもありません。Skill は git リポジトリ内の Markdown ファイルにすぎません。

skillshare のアプローチは次のとおりです。

  • すべてをスキャンする — 信頼できるソースからの Skill であっても
  • デフォルトでブロックする — CRITICAL の指摘はインストールを阻止する
  • すべてを記録する — Audit の結果はフォレンジックレビューのために保存される
  • パターンを更新する — skillshare の各リリースで新しい検出パターンが追加される

Audit の挙動を設定する

config.yaml でブロックの閾値を設定し、どの深刻度でインストールをブロックするかを制御できます。

# config.yaml
audit:
block_threshold: HIGH # Block on HIGH and CRITICAL (default: CRITICAL)

ルールごとのカスタマイズには、別途 audit-rules.yaml ファイルを使用します(skillshare audit --init-rules で初期化)。

# audit-rules.yaml
rules:
- id: network-request-0
enabled: false # Disable this specific rule
- id: my-custom-check
severity: MEDIUM
pattern: "TODO|FIXME"
description: Policy violation — unresolved TODOs

関連項目