
Agent-Reach 安全策略详解漏洞报告流程、响应承诺与源码中的对应防线【免费下载链接】Agent-ReachGive your AI agent eyes to see the entire internet. Read search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.项目地址: https://gitcode.com/GitHub_Trending/ag/Agent-Reach本篇以 Agent-Reach 仓库根目录的 SECURITY.md 为主体完整梳理该项目的安全支持范围、负责任披露流程、响应时间线与漏洞分类边界并结合 URL 安全工具、私密文件写入工具 等源码与 URL 安全测试 等测试用例说明策略中每一类漏洞范围在代码层面如何落地防御帮助维护者与使用者理解如何正确报告漏洞、以及报告前如何自查相关实现。支持版本Supported VersionsSECURITY.md 明确了当前的支持矩阵VersionSupportedLatestYes也就是说安全承诺仅覆盖 Agent-Reach 的最新版本。项目版本信息以 pyproject.toml 为准当前声明为agent-reach1.5.0Python 3.10报告漏洞时若涉及旧版本行为差异建议在报告中同时给出当前复现所用版本与受影响版本方便维护者定位。如何负责任地报告漏洞Reporting a VulnerabilitySECURITY.md 给出的报告路径非常明确使用 GitHub 的私有安全公告private security advisory功能提交报告入口为项目的security/advisories/new页面不要为安全漏洞直接开设公开的 GitHub Issue——原文档强调 Please do NOT open a public GitHub issue for security vulnerabilities。这一做法的意义在于在补丁发布之前利用细节不会公开传播避免披露即被利用的窗口期风险。对报告者而言这意味着你提交的是私有通道后续沟通确认、状态更新、修复时间线都在该通道内完成。报告应包含的内容What to IncludeSECURITY.md 要求一份合格的报告至少包含以下五项信息Description of the vulnerability—— 漏洞描述漏洞类型、影响面、涉及的文件或命令Steps to reproduce—— 复现步骤让维护者可以按步骤重现问题的完整操作序列Affected versions—— 受影响版本基于 pyproject.toml 中的版本号说明Potential impact—— 潜在影响凭据泄露、命令执行、数据外泄等具体后果Suggested fix (if any)—— 建议修复方案可选。以本项目为例一个贴近受影响版本 复现步骤的报告骨架大致如下仅作报告撰写示例Description: agent-reach install 在写入 ~/.agent-reach/config.yaml 时 在 XX 条件下未拒绝符号链接路径若成立。 Steps to reproduce: 1. 在 HOME 下预置符号链接 ~/.agent-reach/xhs-cookies.json - /tmp/victim.json 2. 执行 agent-reach configure --key xhs-cookies --value web_sessionxxx 3. 检查 /tmp/victim.json 是否被写入 Affected versions: 1.5.0 Potential impact: 敏感 Cookie 被重定向写入攻击者可控路径 Suggested fix: 在写入前调用 ensure_no_symlink_path 校验撰写此类报告时可以参照仓库中现有的防御性测试用例来理解什么样的行为会被视为缺陷——例如 私密文件写入测试 中专门模拟了目标文件是符号链接的攻击场景并断言写入必须失败且受害者文件保持原样。响应时间线Response TimelineSECURITY.md 对维护侧承诺了三个明确的时间节点48 小时内确认收到Acknowledgement within 48 hours7 天内给出状态更新Status update within 7 days14 天内沟通修复时间线Fix timeline communicated within 14 days。这三个时间点让报告者可以据此判断沟通是否停滞也是评估该仓库安全响应成熟度的客观依据。漏洞范围Scope及其在源码中的对应防线SECURITY.md 将以下六类问题明确纳入报告范围认证与授权绕过Authentication and authorization bypass远程代码执行Remote code execution路径穿越 / 任意文件读取Path traversal / arbitrary file read服务端请求伪造SSRF注入漏洞SQL、命令、Prompt 注入敏感数据暴露Sensitive data exposure值得说明的是这并非一份空泛的清单——从源码结构看Agent-Reach 在 utils 目录中为其中多类威胁实现了具体的防御点报告者在确认某处缺少防御之前可以先对照这些实现。SSRF 防御公开 HTTP(S) URL 归一化针对 SSRFagent_reach/utils/url.py 提供了normalize_public_http_url函数其策略可以概括为fail closed失败即拒绝拒绝包含反斜杠、空白字符或控制字符的 URL仅接受http/https协议拒绝携带 userinfouser:pass的地址维护了一份内部地址黑名单_BLOCKED_PUBLIC_FETCH_HOSTS包括localhost、internal、localdomain、home.arpa、metadata.google.internal云厂商元数据服务地址等主机名以及.local、.lan、.internal等后缀对 IP 字面量额外要求is_global从而拦截回环、链路本地、私网等非全球可路由地址。凭据路由的域名校验防同形域名劫持 Cookie认证绕过与敏感数据暴露在该项目中最现实的场景是把用户 Cookie 发往伪造域名从而把登录态泄露给攻击者。agent_reach/utils/url.py 中的domain_matches与host_matches就是为此设计的精确匹配或真实子域匹配normalized_host.endswith(. allowed)而不是子串匹配因此x.com.evil.test这类同形后缀域名不会被误判为x.com的子域显式检查parsed.username is not None拦截x.comevil.test这种 userinfo 伪装主动访问parsed.port强制校验端口使x.com:not-a-port、x.com:65536等恶意 authority 直接失败。对应的回归测试 tests/test_url_security.py 用参数化用例覆盖了 Twitter、小红书、B 站、雪球等所有携带凭据的 channel断言https://x.com.evil.test/...、https://x.comevil.test/...、https://user:passx.com/...均被can_handle拒绝而https://mobile.twitter.com/...、https://X.COM./...大小写与尾部点等合法形态被接受。路径穿越与符号链接防御私密写入的三重检查针对路径穿越 / 任意文件读取agent_reach/utils/paths.py 中ensure_no_symlink_path会逐段lstat检查路径中是否存在符号链接组件任一环节命中即抛出PrivatePathError且刻意不解析resolve路径以避免 TOCTOU 竞争。私密写入atomic_write_private_text则实现了完整防御链父目录以0o700创建并二次校验临时文件在目标旁以0o600生成写入后fsync替换前再次校验父目录与目标文件均非符号链接使用os.replace原子替换——它替换的是目标符号链接本身而不是跟随它写入其他文件失败路径上清理临时文件并保留原文件内容replace failure 时保留旧值的行为由 tests/test_private_file_writes.py 中test_atomic_private_text_write_preserves_old_file_on_replace_failure用例锁定。该测试文件还断言写入后的权限确实是0o600文件与0o700父目录并覆盖了HOME 与expanduser不一致时凭据不得逃逸隔离目录等边界场景。这与 README 中Cookie、Token 只存在本机~/.agent-reach/config.yaml文件权限 600的对外声明相互印证。敏感数据暴露错误信息脱敏敏感数据暴露的另一个高发点是诊断输出回显 URL 中内嵌的凭据。agent_reach/utils/text.py 的scrub_url_credentials用三组正则分别处理scheme://user:passhost形式的 userinfo → 替换为***裸user:passhost文本片段 → 同样脱敏查询串/片段中的敏感键access_token、auth_token、token、bearer、api_key、password、secret、signature、session(id)、cookie、credential等→ 值替换为***。tests/test_scrub_credentials.py 验证了 channel 健康检查、转写命令与浏览器 Cookie 后端出错时user:pass与access_tokensecret等片段不会出现在用户可见输出中tests/test_private_file_writes.py 中的test_transcribe_cli_scrubs_credentials_from_errors进一步断言含凭据 URL 的异常信息在 CLI 层也被打码。凭据提取的最小权限原则对认证绕过的另一道防线在 agent_reach/cookie_extract.py浏览器 Cookie 提取要求显式指定平台platform参数缺失直接ValueError每个平台在PLATFORM_SPECS中白名单式声明只提取哪些域名如 Bilibili 仅.bilibili.com、哪些 Cookie 名如SESSDATAbili_jct、雪球仅xq_a_token且返回的每条 Cookie 都会再用domain_matches复核域名防止浏览器后端夹带同形域名的 Cookie。tests/test_cookie_security.py 用伪造的rookiepy模块验证了夹带.notxueqiu.comCookie 会被丢弃的行为。此外 Twitter 与小红书被限定只能通过 Cookie-Editor 手工导出_COOKIE_EDITOR_ONLY禁止走浏览器自动提取路径。范围外事项Out of ScopeSECURITY.md 同时明确列出以下三类问题不属于本报告范围依赖项自身的漏洞Vulnerabilities in dependencies——应报告给对应依赖的维护者社会工程攻击Social engineering attacks通过资源耗尽实现的拒绝服务DoS via resource exhaustion。这提示报告者如果你发现的是 yt-dlp、feedparser 等上游工具的问题向相应项目报告更合适本仓库作为粘合层CLAUDE.md 亦强调 Agent-Reach 只负责路由与调用上游公开 API/CLI其安全承诺聚焦于自身代码。致谢与负责任披露CreditsSECURITY.md 承诺感谢负责任披露并将在发布说明中致谢报告者除非报告者要求匿名will credit researchers in our release notes unless anonymity is requested。这一惯例与上面 48 小时确认、7 天状态更新、14 天修复时间线的承诺共同构成了完整的安全协作流程。如何验证上述安全实现如果你是安全研究人员或贡献者可以在本地克隆仓库后通过测试套件复核本文提到的防御行为以当前仓库实际内容为准Python 3.10# 安装开发依赖仅查看/运行测试不修改仓库内容 pip install -e . # 完整测试套件 pytest tests/ -v # 针对安全相关用例的定向验证 pytest tests/test_url_security.py tests/test_private_file_writes.py \ tests/test_cookie_security.py tests/test_scrub_credentials.py -vURL 与域名校验行为tests/test_url_security.py私密写入、符号链接拒绝、HOME 隔离tests/test_private_file_writes.py、tests/test_home_isolation.py最小权限 Cookie 提取tests/test_cookie_security.py诊断信息凭据脱敏tests/test_scrub_credentials.py。小结Agent-Reach 的 SECURITY.md 用简洁的条款定义了三件事只支持最新版本、通过 GitHub 私有安全公告报告且禁止公开 Issue、48/7/14 天的响应承诺其漏洞范围清单认证绕过、RCE、路径穿越、SSRF、注入、敏感数据暴露与范围外清单划定了明确的边界。对照仓库源码可以看到其中多数威胁类别在 agent_reach/utils/url.py、agent_reach/utils/paths.py、agent_reach/utils/text.py 与 agent_reach/cookie_extract.py 中都有对应的防御实现和回归测试。理解这条策略 → 实现 → 测试的映射链既有助于使用者评估该项目的安全姿态也为报告漏洞时准确定位受影响组件提供了路径。【免费下载链接】Agent-ReachGive your AI agent eyes to see the entire internet. Read search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.项目地址: https://gitcode.com/GitHub_Trending/ag/Agent-Reach创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考