# 本章小结

本章分析了Harness系统的安全威胁和防护策略，以下是核心要点的回顾。

## 核心要点回顾

### 1. 威胁景象

Harness系统面临十类主要威胁，其中 **恶意工具调用** 和 **路径穿越** 风险最高。威胁不仅来自LLM行为偏离，更源于工具执行环境的复杂性。

**十类威胁**：恶意工具调用、路径穿越、权限提升、沙箱逃逸、提示注入劫持、凭据外泄、资源耗尽、模型供应链攻击、间接提示注入、智能体间信任滥用。

### 2. 权限与沙箱

权限决策和沙箱隔离是纵深防护的两个维度：

* **权限** 控制“是否允许”执行
* **沙箱** 限制“执行的破坏范围”

Claude Code 的五模式框架(normal/auto-accept/plan/don't-ask/bypass)更灵活；OpenClaw 的三级权限(deny/allowlist/full)适合自驱型 Agent。最佳实践是 **基于风险的自适应权限决策**。

沙箱隔离从进程级(setrlimit)→ 容器级(Docker)→ VM级(Firecracker)，隔离强度与开销递增。

### 3. 工具调用护栏

三层护栏有效防止危险操作：

1. **危险命令检测**：通过 AST 分析识别多种禁止命令及其管道组合
2. **约束护栏**：只读约束、参数范围约束、超时强制
3. **审计日志**：所有防护决策均被记录

### 4. 路径校验— 最复杂的防护

路径穿越因其简单性和高威胁而成为重点。5层递进式防护应对：

| 层 | 对标攻击向量     | 防护机制            |
| - | ---------- | --------------- |
| 1 | 缓冲区溢出      | 长度检查            |
| 2 | 多重编码       | 迭代URL解码         |
| 3 | Unicode规范化 | NFC标准化          |
| 4 | 平台特性       | 斜杠统一、./移除       |
| 5 | 符号链接、..    | realpath + 边界检查 |

**关键洞见**：第五层是核心。使用`realpath()`实际解析文件系统，并检查解析后的路径是否在基目录内（注意：必须追加“/”避免前缀匹配误判）。

### 5. 实战集成

MiniHarness安全层集成所有防护：

* PermissionDecisionEngine：权限决策
* PathValidator：路径校验（5层）
* GuardrailFramework：护栏检查
* SecureToolExecutor：统一执行

代码可直接复用于生产环境。

## 常见误区

### 误区1：黑名单够用

**错误**：使用黑名单阻止rm、dd等危险命令。 **问题**：

* 新命令不断出现
* /usr/bin/rm vs rm vs ./rm 变体多
* 管道组合难以穷举

**正确做法**：黑名单+运行时隔离（沙箱）。

### 误区2：regex检测路径穿越

**错误**：使用正则检查“../”。 **问题**：

* URL编码：..%2f
* Unicode: ..%u002f
* 多重编码绕过

**正确做法**：先规范化（解码+Unicode），再边界检查。

### 误区3：权限一刀切

**错误**：所有工具都要求用户批准或都自动允许。 **问题**：

* 过度批准导致用户疲劳
* 过度限制降低可用性

**正确做法**：基于工具风险等级和用户历史的自适应决策。

### 误区4：忘记沙箱

**错误**：仅靠护栏阻止危险命令。 **问题**：

* 新的危险模式不断出现
* 护栏本身可能有bug

**正确做法**：护栏+沙箱双层防护。

## 与AI安全研究的关系

Harness安全聚焦工程实现，AI安全研究聚焦模型对齐：

| 维度 | AI安全研究   | Harness安全工程 |
| -- | -------- | ----------- |
| 焦点 | LLM输出对齐  | 工具执行隔离      |
| 防守 | 提示注入对抗   | 路径穿越检测      |
| 假设 | LLM可能被欺骗 | 工具执行必须受限    |
| 方法 | 对齐训练、红队  | 权限框架、沙箱     |
| 指标 | 对齐评分     | 防护覆盖率       |

两者 **相互补充而非替代**。安全的Harness系统需要两层防护。

## 生产就绪检查清单

部署前确保满足以下条件：

* [ ] 所有工具调用经过权限决策引擎
* [ ] 所有文件路径经过5层PathValidator
* [ ] 所有bash命令经过DangerousCommandDetector
* [ ] 工具执行在沙箱（至少容器级）内
* [ ] 审计日志完整记录（权限决策、拒绝原因）
* [ ] 权限策略有文档并定期审查
* [ ] 路径白名单显式定义
* [ ] 超时配置合理（避免DoS与可用性平衡）
* [ ] 隐私敏感信息在日志中脱敏
* [ ] 定期安全审计与红队测试

## 前沿发展

### 1. 大语言模型辅助权限决策

Claude Code 的 auto-accept 模式使用两阶段 LLM 评估（而非传统 ML 分类器）来预测风险等级：第一阶段为快速保守检查，第二阶段在需要时进行链式推理分析，自动决定是否批准。这种基于 LLM 的权限决策是权限框架的下一代方向。

### 2. 符号执行用于路径校验

高度敏感应用（金融、医疗）可用符号执行技术在执行前静态分析工具调用是否存在路径穿越，但性能开销大。

### 3. 多智能体权限冒泡

当子智能体需要更高权限时，请求冒泡到父Agent或用户。这允许细粒度的权限委托。

### 4. 可信执行环境

使用 AMD SEV、ARM TrustZone 或新兴的 Intel TDX、Arm CCA 等技术隔离工具执行，防止容器逃逸。注意 Intel SGX 已从最新 CPU 产品线中移除，AMD SEV（全 VM 内存加密）和 Intel TDX（VM 级保护）正在成为云环境中的主流 TEE 选择。

### 5. 新一代轻量级沙箱

除 Firecracker 外，2025-2026 年涌现了多种面向 AI Agent 的新型沙箱方案，如 Microsoft LiteBox（基于 Rust 的 Library OS）、Fly.io Sprites（持久化轻量 VM，创建仅需 1-2 秒）、Daytona（亚 90ms 沙箱创建）等，在隔离强度与启动性能间提供了更多选择。

## 扩展阅读

* OWASP Top 10 for Agentic Applications 2026: <https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/>
* OWASP Top 10 for LLM Applications 2025: <https://genai.owasp.org/resource/owasp-top-10-for-llm-applications-2025/>
* OWASP Path Traversal: <https://owasp.org/www-community/attacks/Path\\_Traversal>
* Linux Capabilities: <https://man7.org/linux/man-pages/man7/capabilities.7.html>
* AppArmor Security Profiles: <https://gitlab.com/apparmor/apparmor/-/wikis/home>
* Container Security Best Practices: <https://kubernetes.io/docs/concepts/security/>
* NIST AI Risk Management Framework: <https://www.nist.gov/itl/ai-risk-management-framework>

***

**完成第12章意味着理解了Harness系统中“不能做什么”（权限、护栏）和“做了之后能做什么”（沙箱隔离）。下一章转向“如何验证做得对不对” — 评估与质量保障。**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/harness_engineering_guide/di-si-bu-fen-an-quan-ping-gu-yu-yan-jin/12_security/summary.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
