Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

seatbelt-sandboxer

macOSのSeatbeltサンドボックス設定を最小構成で生成します。許可リストベースのプロファイルを使ってmacOSアプリケーションをサンドボックス化・隔離・制限したい場合に活用してください。

description の原文を見る

Generates minimal macOS Seatbelt sandbox configurations. Use when sandboxing, isolating, or restricting macOS applications with allowlist-based profiles.

SKILL.md 本文

macOS Seatbelt サンドボックス プロファイリング

アプリケーション用の最小限の権限を持つ allowlist ベースの Seatbelt サンドボックス設定を生成します。

使用するとき

  • ユーザーが macOS 上のアプリケーションを「サンドボックス化」「隔離」または「制限」することを要求している
  • ファイル/ネットワークアクセスが制限された macOS プロセスをサンドボックス化する
  • サプライチェーン攻撃が懸念される場合の多層防御的な隔離を作成する

使用しないとき

  • Linux コンテナ (代わりに seccomp-bpf、AppArmor、または namespaces を使用)
  • Windows アプリケーション
  • 正当にシステムへの広範なアクセスが必要なアプリケーション
  • サンドボックス化のオーバーヘッドが正当化されない一時的なスクリプト

プロファイリング方法論

ステップ 1: アプリケーション要件の識別

これらのリソースカテゴリ全体でアプリケーションが何を必要とするかを決定します:

カテゴリ操作一般的なユースケース
ファイル読み取りfile-read-data, file-read-metadata, file-read-xattr, file-test-existence, file-map-executableソースファイル、設定、ライブラリの読み取り
ファイル書き込みfile-write-data, file-write-create, file-write-unlink, file-write-mode, file-write-xattr, file-clone, file-link出力ファイル、キャッシュ、一時ファイル
ネットワークnetwork-bind, network-inbound, network-outboundサーバー、API 呼び出し、パッケージダウンロード
プロセスprocess-fork, process-exec, process-exec-interpreter, process-info*, process-codesigning*子プロセスの生成、スクリプト実行
Mach IPCmach-lookup, mach-register, mach-bootstrap, mach-task-nameシステムサービス、XPC、通知
POSIX IPCipc-posix-shm*, ipc-posix-sem*共有メモリ、セマフォ
Sysctlsysctl-read, sysctl-writeシステム情報の読み取り (CPU、メモリ)
IOKitiokit-open, iokit-get-properties, iokit-set-propertiesハードウェアアクセス、デバイスドライバ
シグナルsignalプロセス間のシグナルハンドリング
疑似 TTYpseudo-ttyターミナルエミュレーション
システムsystem-fsctl, system-socket, system-audit, system-info低レベルシステムコール
ユーザー設定user-preference-read, user-preference-writeユーザーデフォルトの読み取り/書き込み
通知darwin-notification-post, distributed-notification-postシステム通知
AppleEventsappleevent-sendアプリ間通信 (AppleScript)
カメラ/マイクdevice-camera, device-microphoneメディアキャプチャ
動的コードdynamic-code-generationJIT コンパイル
NVRAMnvram-get, nvram-set, nvram-deleteファームウェア変数

各カテゴリについて、以下を決定します: 必要か? および 特定のスコープ (パス、サービスなど)

アプリケーションが Webpack などの Javascript バンドラーの build および serve コマンドのように、大きく異なる操作を実行する複数のサブコマンドを持つ場合は、以下を実行してください:

  • サブコマンドを個別にプロファイリング
  • 各サブコマンド用に個別の Seatbelt 設定を作成
  • 元のバイナリのドロップイン置換として機能し、渡されたサブコマンドに応じて適切な Seatbelt プロファイルでサンドボックス化されたアプリケーションを実行するヘルパースクリプトを作成

ステップ 2: 最小プロファイルで開始

デフォルト拒否と必須のプロセス操作で開始し、.sb 拡張子を持つ適切に名前付けられた Seatbelt プロファイルファイルに保存します。

(version 1)
(deny default)

;; 任意のプロセスで必須
(allow process-exec*)
(allow process-fork)
(allow sysctl-read)

;; メタデータアクセス (stat、readdir) - ファイルの内容を露出しない
(allow file-read-metadata)

ステップ 3: ファイル読み取りアクセスを追加 (Allowlist)

allowlist ベースの読み取りに file-read-data (not file-read*) を使用します:

(allow file-read-data
    ;; システムパス (ほとんどのランタイムで必須)
    (subpath "/usr")
    (subpath "/bin")
    (subpath "/sbin")
    (subpath "/System")
    (subpath "/Library")
    (subpath "/opt")                    ;; Homebrew
    (subpath "/private/var")
    (subpath "/private/etc")
    (subpath "/private/tmp")
    (subpath "/dev")

    ;; パス解決用のルートシンボリックリンク
    (literal "/")
    (literal "/var")
    (literal "/etc")
    (literal "/tmp")
    (literal "/private")

    ;; アプリケーション固有の設定 (必要に応じてカスタマイズ)
    (regex (string-append "^" (regex-quote (param "HOME")) "/\\.myapp(/.*)?$"))

    ;; ワーキングディレクトリ
    (subpath (param "WORKING_DIR")))

file-read-datafile-read* の代わりに使用する理由は?

  • file-read* は、任意のパスからのすべてのファイル読み取り操作を許可します
  • file-read-data は、リストされたパスからのみファイル内容の読み取りを許可します
  • file-read-metadata (広くに許可) と組み合わせると、以下が得られます:
    • ✅ 任意の場所で stat/readdir が可能 (パス解決に必要)
    • ❌ allowlist 外のファイル内容は読み取り不可

ステップ 4: ファイル書き込みアクセスを追加 (制限付き)

(allow file-write*
    ;; ワーキングディレクトリのみ
    (subpath (param "WORKING_DIR"))

    ;; 一時ディレクトリ
    (subpath "/private/tmp")
    (subpath "/tmp")
    (subpath "/private/var/folders")

    ;; 出力用のデバイスファイル
    (literal "/dev/null")
    (literal "/dev/tty"))

ステップ 5: ネットワークを設定

ネットワークアクセスの 3 つのレベル:

;; オプション 1: すべてのネットワークをブロック (最も制限的 - ビルドツール用)
(deny network*)

;; オプション 2: ローカルホストのみ (開発サーバー、ローカルサービス用)
;; ローカルポートにバインド
(allow network-bind (local tcp "*:*"))
;; インバウンド接続を受け入れ
(allow network-inbound (local tcp "*:*"))
;; ローカルホスト + DNS へのアウトバウンド
(allow network-outbound
    (literal "/private/var/run/mDNSResponder")  ;; DNS 解決
    (remote ip "localhost:*"))                   ;; ローカルホストのみ

;; オプション 3: すべてのネットワークを許可 (最も制限的でない - 可能な限り回避)
(allow network*)

ネットワークフィルター構文:

  • (local tcp "*:*") - 任意のローカル TCP ポート
  • (local tcp "*:8080") - 特定のローカルポート
  • (remote ip "localhost:*") - ローカルホストへのアウトバウンドのみ
  • (remote tcp) - 任意のホストへの TCP アウトバウンド
  • (literal "/private/var/run/mDNSResponder") - DNS 用の Unix ソケット

ステップ 6: 反復的にテスト

Seatbelt プロファイルを生成または編集した後、サンドボックス内でターゲットアプリケーションの機能をテストします。何かが機能しなくなった場合は、Seatbelt プロファイルを修正します。このプロセスを反復的に繰り返して、最小限の権限を持つ Seatbelt ファイルを生成し、生成した Seatbelt プロファイルを使用してサンドボックス内でアプリケーションが正常に機能することを経験的に確認するまで続けます。

プログラムが完全に機能するために外部入力が必要な場合 (バンドルするアプリケーションが必要な Javascript バンドラーなど)、よく知られた理想的には公式ソースからサンプル入力を見つけます。例えば、Rspack バンドラーのこれらのサンプルプロジェクト: https://github.com/rstackjs/rstack-examples/tree/main/rspack/

# 基本実行のテスト
sandbox-exec -f profile.sb -D WORKING_DIR=/path -D HOME=$HOME /bin/echo "test"

# 実際のアプリケーションをテスト
sandbox-exec -f profile.sb -D WORKING_DIR=/path -D HOME=$HOME \
  /path/to/application --args

# セキュリティ制限をテスト
sandbox-exec -f profile.sb -D WORKING_DIR=/tmp -D HOME=$HOME \
  cat ~/.ssh/id_rsa
# 予想: Operation not permitted

一般的な失敗パターン:

症状原因修正
終了コード 134 (SIGABRT)サンドボックス違反どの操作がブロックされているかを確認
終了コード 65 + 構文エラー無効なプロファイル構文Seatbelt 構文を確認
既存ファイルの ENOENTfile-read-metadata の欠落(allow file-read-metadata) を追加
プロセスがハングIPC 権限の欠落必要に応じて (allow mach-lookup) を追加

Seatbelt 構文リファレンス

パスフィルター

(subpath "/path")           ;; /path およびすべての子孫
(literal "/path/file")      ;; 完全なパスのみ
(regex "^/path/.*\\.js$")   ;; 正規表現マッチ

パラメータ置換

(param "WORKING_DIR")                                    ;; 直接使用
(subpath (param "WORKING_DIR"))                          ;; subpath 内で
(string-append (param "HOME") "/.config")                ;; 連結
(regex-quote (param "HOME"))                             ;; 正規表現用にエスケープ

操作

ファイル操作:

(allow file-read-data ...)          ;; ファイル内容の読み取り
(allow file-read-metadata)          ;; stat、lstat、readdir (内容なし)
(allow file-read-xattr ...)         ;; 拡張属性の読み取り
(allow file-test-existence ...)     ;; ファイルの存在確認
(allow file-map-executable ...)     ;; 実行ファイルの mmap (dylibs)
(allow file-write-data ...)         ;; 既存ファイルへの書き込み
(allow file-write-create ...)       ;; 新しいファイルの作成
(allow file-write-unlink ...)       ;; ファイルの削除
(allow file-write* ...)             ;; すべての書き込み操作
(allow file-read* ...)              ;; すべての読み取り操作 (慎重に使用)

プロセス操作:

(allow process-exec* ...)           ;; バイナリの実行
(allow process-fork)                ;; 子プロセスのフォーク
(allow process-info-pidinfo)        ;; プロセス情報のクエリ
(allow signal)                      ;; シグナルの送受信

ネットワーク操作:

(allow network-bind (local tcp "*:*"))              ;; 任意のローカル TCP ポートにバインド
(allow network-bind (local tcp "*:8080"))           ;; 特定のポートにバインド
(allow network-inbound (local tcp "*:*"))           ;; TCP 接続を受け入れ
(allow network-outbound (remote ip "localhost:*"))  ;; ローカルホストへのアウトバウンドのみ
(allow network-outbound (remote tcp))               ;; 任意のホストへの TCP アウトバウンド
(allow network-outbound
    (literal "/private/var/run/mDNSResponder"))     ;; Unix ソケット経由の DNS
(allow network*)                                    ;; すべてのネットワーク (慎重に使用)
(deny network*)                                     ;; すべてのネットワークをブロック

IPC 操作:

(allow mach-lookup ...)             ;; Mach IPC ルックアップ
(allow mach-register ...)           ;; Mach サービスの登録
(allow ipc-posix-shm* ...)          ;; POSIX 共有メモリ
(allow ipc-posix-sem* ...)          ;; POSIX セマフォ

システム操作:

(allow sysctl-read)                 ;; システム情報の読み取り
(allow sysctl-write ...)            ;; sysctl の変更 (レア)
(allow iokit-open ...)              ;; IOKit デバイスアクセス
(allow pseudo-tty)                  ;; ターミナルエミュレーション
(allow dynamic-code-generation)     ;; JIT コンパイル
(allow user-preference-read ...)    ;; ユーザーデフォルトの読み取り

既知の制限

  1. 非推奨だが機能: Apple は sandbox-exec を非推奨としていますが、macOS 14+ で動作します
  2. 一時ディレクトリアクセスがしばしば必須: 多くのアプリケーションは /tmp および /var/folders へのアクセスが必要です

例: 汎用 CLI アプリケーション

(version 1)
(deny default)

;; プロセス
(allow process-exec*)
(allow process-fork)
(allow sysctl-read)

;; ファイルメタデータ (パス解決)
(allow file-read-metadata)

;; ファイル読み取り (allowlist)
(allow file-read-data
    (literal "/") (literal "/var") (literal "/etc") (literal "/tmp") (literal "/private")
    (subpath "/usr") (subpath "/bin") (subpath "/sbin") (subpath "/opt")
    (subpath "/System") (subpath "/Library") (subpath "/dev")
    (subpath "/private/var") (subpath "/private/etc") (subpath "/private/tmp")
    (subpath (param "WORKING_DIR")))

;; ファイル書き込み (制限付き)
(allow file-write*
    (subpath (param "WORKING_DIR"))
    (subpath "/private/tmp") (subpath "/tmp") (subpath "/private/var/folders")
    (literal "/dev/null") (literal "/dev/tty"))

;; ネットワーク無効
(deny network*)

使用法:

sandbox-exec -f profile.sb \
  -D WORKING_DIR=/path/to/project \
  -D HOME=$HOME \
  /path/to/application

参考文献

ライセンス: CC-BY-SA-4.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
trailofbits
リポジトリ
trailofbits/skills
ライセンス
CC-BY-SA-4.0
最終更新
不明

Source: https://github.com/trailofbits/skills / ライセンス: CC-BY-SA-4.0

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: trailofbits · trailofbits/skills · ライセンス: CC-BY-SA-4.0