DeerFlow
DeerFlow 安全运维:Bearer 优先级、CSRF 与沙箱权限
把认证和 CSRF 实现放在一起阅读,并检查可信代理与执行权限,而不是把成功登录当作安全边界已经齐全。
你将学会
- 认证先选择一条凭据路径
- 将 CSRF 与 Bearer 优先级一起检查
- 执行权限应小于账号所能接触的范围
开始前需要
- 基础 Python、HTTP 和容器知识
- 拥有明确验收条件的自有任务
解释本章实现边界,并应用检查清单或隔离辅助函数练习。
先看结论
- 无效 Bearer 不能回退使用 Cookie。
- CSRF 安全假设包含认证与代理层。
- 登录、工具权限和宿主隔离各自独立。
认证先选择一条凭据路径
启用认证时,只要出现 Authorization 请求头就进入 PAT 路径,无效令牌直接返回 401,不会回退到会话 Cookie。中间件还限制 PAT 可用路由,并把令牌作用域与用户实际权限取交集。可信内部令牌另有分支,但这些身份判断都不能代替处理函数中的资源授权。
健康检查和选定的首次认证端点等路由公开可用,Webhook 处理函数需要承担自身验证责任。中间件使用与路由器对齐的路径辅助函数,而不是另一套字符串解释。后端清单甚至约束了相关 Starlette 依赖,说明框架路径行为也可能影响安全判断。
将 CSRF 与 Bearer 优先级一起检查
受保护的 Cookie 状态修改请求需要把可读 Cookie 与 X-CSRF-Token 请求头做恒定时间比较。存在 Authorization 头时免除 Cookie 双重提交检查,但这依赖认证中间件拒绝无效 Bearer 凭据。单独阅读这个豁免分支,会漏掉两层实现之间的重要安全假设。
首次认证路由在存在 Origin 时检查来源,为非浏览器客户端允许缺少 Origin。归一化会拒绝凭据、路径、查询和片段,并规范默认端口。请求来源计算接受转发头,因此部署代理必须剥离或覆盖不可信转发输入;精确 CORS 白名单不能独自修复错误的代理信任边界。
执行权限应小于账号所能接触的范围
本地沙箱提供方明确说明,开启宿主 Shell 时并不形成宿主文件系统隔离。生产基础配置不挂载 Docker socket 和个人 CLI 凭据目录,主动启用它们会增加受攻击工具或恶意任务可利用的权限。是否登录成功与是否应该授予这些执行能力,需要分别审查。
使用可丢弃样例验证未授权访问、过期凭据、Cookie 写入的 CSRF、产物所有权和停止行为,同时脱敏令牌、明确保留周期并测试恢复。我们审查了这些源码分支,但没有启动认证服务或进行渗透测试。循环上限可以阻止后续重复调用,却不能撤销已经发生的外部副作用。
实施步骤
- 1
保持认证启用,在预期 TLS 代理后提供访问。
- 2
清理不可信转发头,使用精确来源名单。
- 3
非明确必要时不挂载凭据目录或 Docker socket。
- 4
用非敏感样例测试身份、所有权和恢复。
可复制示例
{"authEnabled":true,"invalidBearerCookieFallback":false,"cookieWritesRequireCsrf":true,"trustedProxyRequired":true,"hostBashAllowed":false,"securityIntegrationTestExecuted":false}常见问题
随便添加 Authorization 头就能绕过认证吗?
不能。启用认证时,配套中间件会拒绝无效 Bearer 凭据,不会转而使用 Cookie。
停止智能体会回滚工具副作用吗?
不会。终止可阻止后续调用,外部副作用仍需独立的幂等、审批和恢复设计。
资料来源
- README.md来源核查 2026-09-08
- LICENSE来源核查 2026-09-08
- backend/README.md来源核查 2026-09-08
- backend/pyproject.toml来源核查 2026-09-08
- backend/docs/middleware-execution-flow.md来源核查 2026-09-08
- backend/packages/harness/deerflow/agents/lead_agent/agent.py来源核查 2026-09-08
- backend/packages/harness/deerflow/agents/middlewares/loop_detection_middleware.py来源核查 2026-09-08
- backend/packages/harness/deerflow/agents/middlewares/_bounded_dict.py来源核查 2026-09-08
- backend/packages/harness/deerflow/config/loop_detection_config.py来源核查 2026-09-08
- backend/packages/harness/deerflow/sandbox/local/local_sandbox_provider.py来源核查 2026-09-08
- backend/app/gateway/auth_middleware.py来源核查 2026-09-08
- backend/app/gateway/csrf_middleware.py来源核查 2026-09-08
- docker/docker-compose.yaml来源核查 2026-09-08