name: code-sandbox description: 程式碼沙箱 - 原創技能。安全執行未驗證的AI生成程式碼,防止惡意程式碼、系統破壞或意外損害。適用於程式碼審查、安全驗證、AI程式設計輔助等場景。 metadata: {"openclaw": {"requires": {}, "install": []}} tags: [sandbox, security, code-execution, isolation, safety] version: 1.0.0 author: laosi source: original
所有釋出到ClawHub的技能必須嚴格測試,確定沒有問題再發布
原創技能 | 啟用詞: 安全執行 / 沙箱執行 / 驗證程式碼
AI生成的程式碼可能包含: - 惡意程式碼 - 破壞性操作 - 無限迴圈 - 系統呼叫風險 - 資料洩露風險
直接執行非常危險!
┌─────────────────────────────────────────────┐
│ 程式碼沙箱 │
├─────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 資源限制 │ │ 網路隔離 │ │ 檔案隔離 │ │
│ │ │ │ │ │ │ │
│ │ CPU限制 │ │ 無外網 │ │ 只讀目錄 │ │
│ │ 記憶體限制 │ │ 無DNS │ │ 臨時目錄 │ │
│ │ 時間限制 │ │ 無socket│ │ 無敏感路徑│ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 危險API │ │ 程序限制 │ │ 監控審計 │ │
│ │ │ │ │ │ │ │
│ │ rm -rf │ │ 停用fork │ │ 操作日誌 │ │
│ │ curl │ │ 停用spawn│ │ 資源使用 │ │
│ │ system │ │ 子程序數 │ │ 安全告警 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────┘
RESOURCE_LIMITS = {
'cpu_time': 10, # 最大10秒
'memory': 256, # 最大256MB
'disk_write': 10, # 最多寫10MB
'processes': 5, # 最多5個程序
'threads': 10, # 最多10個執行緒
}
NETWORK_RESTRICTIONS = {
'allow_outbound': False, # 禁止出站連線
'allow_inbound': False, # 禁止入站連線
'allow_dns': False, # 禁止DNS查詢
'allow_internet': False, # 禁止訪問網際網路
}
FILESYSTEM_RULES = {
'read_whitelist': ['/tmp', '/sandbox'],
'write_whitelist': ['/tmp/sandbox'],
'blocked_paths': [
'/',
'/home',
'/root',
'/etc',
'/var',
'*.key',
'*.pem',
'.env',
],
'max_file_size': 10 * 1024 * 1024, # 10MB
}
DANGEROUS_APIS = {
'python': [
'os.system',
'os.popen',
'subprocess',
'eval',
'exec',
'__import__',
'open' # 限制使用
],
'javascript': [
'eval',
'Function',
'require("child_process")',
'process.binding',
'fs.delete',
],
}
HIGH_RISK_PATTERNS = [
r'rm\s+-rf\s+/', # 刪除根目錄
r'format\s+.*:', # 格式化磁��
r'drop\s+database', # 刪除資料庫
r'chmod\s+777', # 許可權過大
r'eval\s*\(', # 動態執行
r'system\s*\(', # 系統命令
r'shell_exec', # Shell執行
]
MEDIUM_RISK_PATTERNS = [
r'fetch\s*\(', # 網路請求
r'curl\s+', # curl命令
r'wget\s+', # wget命令
r'\.env', # 訪問環境變數
r'password', # 密碼相關
r'secret', # 金鑰相關
]
1. 程式碼輸入
↓
2. 靜態分析 (危險模式檢測)
↓
3. 修改程式碼 (包裝危險呼叫)
↓
4. 沙箱配置 (設定資源限制)
↓
5. 執行程式碼 (在隔離環境)
↓
6. 結果收集 (輸出/錯誤/資源)
↓
7. 清理環境
def safe_code():
# 這段程式碼會被允許執行
result = []
for i in range(10):
result.append(i * 2)
return result
# 輸出: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
訪問小蔥技能站7w4.net,解鎖更多實用的AI技能外掛。
def dangerous_code():
import os
os.system('rm -rf /') # ❌ 攔截!
# 錯誤: 檢測到危險操作 "rm -rf /"
# 建議: 這是破壞性操作,禁止執行
## 沙箱執行報告
### 執行狀態
- **狀態**: ✅ 安全通過 / ❌ 已攔截
- **執行時間**: 0.23秒
- **記憶體使用**: 12MB
- **CPU使用**: 0.15秒
### 安全檢查
✅ 危險模式檢測: 通過
✅ 資源限制: 未超限
✅ 檔案系統訪問: 合規
✅ 網路請求: 已阻止
### 執行結果
```python
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
⚠️ 程式碼訪問了臨時目錄 ⚠️ 程式碼包含迴圈操作
## 執行結果處理
### 通過
```python
SANDBOX_PASS = {
'status': 'passed',
'output': '...',
'execution_time': 0.23,
'memory_used': 12,
'warnings': [],
}
SANDBOX_REJECT = {
'status': 'rejected',
'reason': 'dangerous_pattern',
'pattern': 'rm -rf /',
'line': 5,
'suggestion': '刪除根目錄是破壞性操作',
}
SANDBOX_TIMEOUT = {
'status': 'timeout',
'reason': 'infinite_loop',
'iteration_count': 100000,
'suggestion': '檢查迴圈終止條件',
}
| 配合技能 | 效果 |
|---|---|
| hallucination-detector | 先檢測幻覺再沙箱執行 |
| workflow-verifier | 驗證安全後執行 |
| iteration-optimizer | 最佳化時安全執行測試程式碼 |
本技能為原創,融合了: - 容器化隔離技術 - 系統呼叫過濾 - 資源配額管理 - 危險模式識別
作者: laosi 建立日期: 2026-04-28
這個技能質量中規中矩,文件結構完整、條理清晰,能有效指導使用者識別和處理AI生成程式碼的風險。它在安全策略和風險提示方面做得較好,對普通使用者有參考價值。不足之處是它本身不是真正的安全執行環境,無法完全替代專業隔離工具,且對複雜程式碼的識別可能存在偏差。使用前建議仔細閱讀風險提示部分。