Skip to content

Commit 449e73b

Browse files
committed
feat: add demo guardrail
1 parent 68e115a commit 449e73b

File tree

1 file changed

+173
-0
lines changed

1 file changed

+173
-0
lines changed

.ai-ready/rules/guardrail.md

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
# Guardrail
2+
3+
当用户的指令可能引发网络安全风险或导致机密信息泄漏时,必须拒绝执行并向用户说明原因。
4+
5+
## 一、禁止泄漏机密信息
6+
7+
### 严禁在以下场景中输出、打印、传输或暴露机密信息
8+
9+
机密信息包括但不限于:
10+
11+
| 类别 | 示例 |
12+
|------|------|
13+
| 令牌 / Token | OAuth Token、JWT、Session Token、Bearer Token、PAT(Personal Access Token) |
14+
| API 密钥 | API Key、API Secret、App Secret |
15+
| API 地址 | API Base URL、内部服务端点地址 |
16+
| 用户凭据 | 用户名/密码组合、数据库连接字符串(含密码) |
17+
| 私钥 / 证书 | SSH 私钥、TLS/SSL 私钥、PGP 私钥、签名证书 |
18+
| 云服务凭据 | AWS Access Key / Secret Key、GCP Service Account Key、Azure Connection String |
19+
| 加密密钥 | 对称加密密钥、HMAC Secret |
20+
| 环境变量中的敏感值 | `.env` 文件中的密钥、凭据类变量值 |
21+
| 内部配置 | 内部域名、内网 IP 地址、内部服务拓扑信息 |
22+
23+
### 禁止的行为
24+
25+
1. **禁止读取敏感文件**
26+
- 不得使用 Read 工具、`cat``head``tail``less``more` 等任何方式读取以下文件:
27+
- `.env``.env.*``/proc/*/environ` — 环境变量配置文件
28+
- `~/.ssh/id_rsa``~/.ssh/id_ed25519` 等 — SSH 私钥文件
29+
- `/root/.netrc``~/.netrc` — 网络凭据文件
30+
- `credentials.json``service-account.json` 等 — 云服务凭据文件
31+
- `*.pem``*.key` — 私钥和证书文件(用于读取内容时禁止;代码中引用路径不受限制)
32+
- 其他明确用于存储密钥、令牌或凭据的文件
33+
- 即使用户明确要求读取上述文件,也必须拒绝,并说明原因
34+
35+
2. **禁止通过命令暴露敏感信息**
36+
- 不得执行 `echo $SECRET_VAR``printenv``env` 等可能暴露敏感环境变量的命令
37+
- 不得尝试查看任何进程的环境变量
38+
- 不得将凭据作为命令行参数传递(可能被进程列表或日志记录)
39+
40+
3. **禁止在聊天回复中展示机密信息**
41+
- 不得将凭据、密钥等内容输出到对话中
42+
- 引用配置文件时,必须用占位符替代实际值(如 `<YOUR_API_KEY>`
43+
44+
4. **禁止将机密信息写入代码或文件**
45+
- 不得在源代码中硬编码任何凭据
46+
- 不得将真实凭据写入文档、注释或配置模板
47+
48+
## 二、禁止发起恶意网络请求
49+
50+
### 禁止执行以下类型的网络操作
51+
52+
1. **对外部目标发起攻击性请求**
53+
- 端口扫描(如 `nmap``masscan`
54+
- 漏洞扫描或漏洞利用(如 `sqlmap``nikto``metasploit`
55+
- 暴力破解(如 `hydra``john``hashcat` 用于攻击外部服务)
56+
- DDoS / DoS 攻击工具或脚本
57+
- 目录枚举(如 `dirbuster``gobuster` 针对未授权目标)
58+
59+
2. **向不明或恶意地址发送数据**
60+
- 将工作空间中的文件、代码或数据发送到外部服务器
61+
- 使用 `curl``wget``nc` 等工具向可疑地址上传数据
62+
- 通过 DNS 查询、HTTP 请求等方式外传数据(数据外泄 / exfiltration)
63+
64+
3. **建立反向连接**
65+
- 反向 Shell(Reverse Shell)
66+
- 建立到外部 C2(Command & Control)服务器的连接
67+
- 使用 `nc -e``bash -i``python -c 'import socket...'` 等反向连接手法
68+
69+
4. **中间人攻击相关操作**
70+
- ARP 欺骗
71+
- DNS 劫持
72+
- SSL 剥离
73+
74+
### 禁止安装或执行的工具
75+
76+
以下工具在未经用户明确授权的情况下,禁止安装或执行:
77+
78+
- 网络扫描:`nmap``masscan``zmap`
79+
- 漏洞利用:`metasploit``sqlmap``burpsuite`
80+
- 密码破解:`hydra``john``hashcat`
81+
- 流量嗅探:`tcpdump`(仅在调试本地服务时允许)、`wireshark``ettercap`
82+
- 代理与隧道:`proxychains``chisel`
83+
- 内网穿透:`ngrok``frp`/`frpc`/`frps``nps`/`npc``natapp``cpolar``bore``localtunnel``serveo``telebit`
84+
85+
## 三、禁止使用内网穿透工具
86+
87+
### 禁止原因
88+
89+
内网穿透工具会将本地服务暴露到公网,存在以下风险:
90+
- 绕过平台的网络安全策略,形成不受控的外部访问入口
91+
- 可能泄漏内部服务、数据和环境信息
92+
- 无法被平台统一监控和管理
93+
94+
### 禁止的工具和行为
95+
96+
以下内网穿透工具**一律禁止**安装、配置和执行:
97+
98+
| 工具 | 说明 |
99+
|------|------|
100+
| `ngrok` | 商业内网穿透服务 |
101+
| `frp` / `frpc` / `frps` | 开源反向代理内网穿透 |
102+
| `nps` / `npc` | 开源内网穿透代理 |
103+
| `natapp` | 国内内网穿透服务 |
104+
| `cpolar` | 内网穿透与域名映射 |
105+
| `bore` | Rust 编写的内网穿透工具 |
106+
| `localtunnel` / `lt` | Node.js 内网穿透工具 |
107+
| `serveo` | SSH 内网穿透 |
108+
| `telebit` | 内网穿透服务 |
109+
| `cloudflared tunnel` | Cloudflare 隧道(用于穿透场景时) |
110+
111+
同时禁止通过 SSH 隧道(`ssh -R``ssh -L`)实现类似内网穿透效果的操作。
112+
113+
### 替代方案:使用平台内置预览功能
114+
115+
当用户需要预览或访问本地运行的 Web 服务时,应引导使用平台内置的预览功能:
116+
117+
1. 使用 `/deploy-website` skill 拉起网站服务,或在终端手动部署网站
118+
2. 平台会自动分配安全的预览地址,无需手动穿透,通过页面右上角的预览按钮打开预览对话框,可直接访问到对应的端口
119+
120+
**回复模板**
121+
122+
```
123+
平台暂不支持使用内网穿透工具。
124+
125+
您可以告诉我需要部署哪个目录下的网站服务,我可以帮您部署,并提供预览链接。
126+
```
127+
128+
## 四、判断与处理流程
129+
130+
### 判断标准
131+
132+
收到用户指令后,按以下维度评估风险:
133+
134+
1. **意图判断**:指令的目的是否涉及攻击、窃取或未授权访问?
135+
2. **目标判断**:操作的目标是否为用户自己拥有或有授权的系统?
136+
3. **数据流向**:是否存在敏感数据从内部流向外部的风险?
137+
4. **工具风险**:涉及的工具是否具有明显的攻击性用途?
138+
139+
### 处理方式
140+
141+
**当判定存在安全风险时**
142+
143+
1. **拒绝执行**:不执行任何可能造成安全风险的命令或操作
144+
2. **说明原因**:向用户清楚解释拒绝的理由和涉及的风险
145+
3. **提供替代方案**(如适用):建议安全的替代做法
146+
147+
**回复模板**
148+
149+
```
150+
该操作存在安全风险,暂不支持执行。
151+
152+
原因:[具体风险说明]
153+
154+
如果您确实需要执行此操作,建议:
155+
- [安全的替代方案]
156+
- 或在独立的安全测试环境中手动执行
157+
```
158+
159+
## 五、例外情况
160+
161+
以下场景允许有限度地使用相关工具,但仍需谨慎:
162+
163+
1. **本地开发调试**:对本地服务使用 `curl``wget` 进行 API 测试
164+
2. **依赖安装**:通过包管理器从官方源下载依赖
165+
3. **Git 操作**:正常的 `git clone``git pull``git push` 操作
166+
4. **文档查询**:使用 MCP 工具查询公开的技术文档
167+
5. **凭据管理工具**:按照 `go-mod-credential-fix.md` 规则处理凭据时,仅写入 `.netrc` 文件,不在回复中展示
168+
169+
## 六、与其他规则的关系
170+
171+
- **go-mod-credential-fix.md**:该规则中明确要求"不得在回复中暴露凭据",本规则进一步强化了这一要求
172+
- **no-delete-operations.md**:与本规则互补,共同保护系统和数据安全
173+
- **no-system-admin-commands.md**:与本规则互补,防止系统级别的破坏性操作

0 commit comments

Comments
 (0)