执行工具的错误代价为何特殊?
- 风险: 误删的文件无法恢复,错误的系统命令可能导致服务中断,不当的 API 调用可能产生真实的财务损失;
- 设计目标: 在能力开放和安全约束之间取得微妙的平衡;
- 总体思路: 安全不应依赖单一机制,而应构建多层防护体系;
第一层输入验证要检查什么?
- 路径遍历: 例如
../../etc/passwd——攻击者通过在路径中加入 ../ 使工具跳出指定目录,访问本不应触及的系统文件;
- 命令注入: 例如用分号或管道符拼接额外的命令;
- 格式校验: API 参数的数据类型和格式是否正确;
- 执行策略: 快速失败——发现异常输入时立即拒绝,不尝试“智能”修正;
权限控制如何落实?
- 文件操作: 限制为只能访问特定的工作目录;
- 命令执行: 维护一份禁止命令的黑名单(如
rm -rf /、dd if=/dev/zero);
- 外部 API: 检查配额和速率限制;
- 部署差异: 不同的部署场景可以通过配置文件定制权限策略;
黑名单的局限是什么?
- 定位: 只是最基础的防护层,不应作为唯一手段;
- 弱点: 攻击者可以通过变形命令绕过简单的字符串匹配;
- 更健壮的方案: 结合语义解析,理解命令的实际意图而非仅匹配表面形式,详见第五章;
- 后续层次: 输入验证与权限控制之外,还需要独立的审查机制,见 提议者-审核者机制与 Sidecar 机制;