研究 / 官方
Claude 联手属性测试技术,自动发现 NumPy、SciPy 等主流 Python 库中的隐藏缺陷
Anthropic 研究团队联合东北大学,开发了一款能够自主发现软件缺陷的 AI 智能代理。该代理以 Claude 为核心,结合属性测试框架 Hypothesis,通过读取代码类型注解、文档字符串和函数名称来推断代码应满足的通用属性,再自动生成大量测试用例寻找反例,从而揭露传统单元测试难以覆盖的边缘情况漏洞。研究团队将该代理应用于 NumPy、SciPy、Pandas 等主流 Python 开源库,发现了数百个潜在缺陷。为避免给项目维护者造成不必要的负担,团队对每个候选漏洞进行了严格的多轮人工审核,仅在高度确认有效后才向维护者提交问题报告。目前已有多个漏洞被成功修复,团队还计划将该方法扩展至更多 PyPI 项目,并探索在软件部署前主动识别安全隐患的可能性。
软件测试长期以来依赖开发者手动编写示例用例,验证特定输入是否产生预期输出。这种方式的局限性显而易见:开发者往往不会测试自己未曾想到的边缘情况,而这些恰恰是漏洞最容易藏身之处。属性测试提供了一种更高层次的替代思路——开发者只需描述代码应满足的通用性质,测试框架便会自动生成大量输入来寻找反例,无需逐一枚举具体场景。
Anthropic 团队构建的智能代理以自定义 Claude Code 命令的形式运行,可接受单个 Python 文件、模块或函数作为分析目标。代理首先深入阅读目标代码及相关文档,理解其在整个代码库中的作用;随后提出若干应当成立的属性假设,并使用 Hypothesis 框架编写对应的属性测试;最后运行测试并进行自我反思,判断失败结果究竟揭示了真实漏洞,还是测试本身存在问题。
自我反思循环是该代理设计中的关键环节,旨在大幅降低误报率。在实际运行中,代理曾写出一个初次通过的属性测试,但经过反思后发现该测试实际上并未验证任何有意义的内容,随即对其进行了修正。团队在设计时将减少误报列为首要优先级,因为对开发者而言,频繁出现的错误警报会严重削弱工具的实用价值。
研究团队将代理应用于 NumPy、SciPy、Pandas 等广泛使用的 Python 库,发现了数百个潜在缺陷。为确保负责任地披露,团队采用了严格的多阶段审核流程:首先筛选出优先级最高的候选漏洞,由三位专家各花约一小时独立审核;任何一位审核者存疑的漏洞均被直接淘汰;最终由论文作者再次逐一确认,方才向项目维护者提交正式的问题报告。
该研究成果已在 2025 年 NeurIPS 深度学习代码研讨会上发表,相关数据集、代码仓库及已发现的漏洞列表均已公开。团队表示,未来数周内将在完成额外验证后陆续提交更多漏洞报告,并计划将该方法推广至更广泛的 PyPI 生态系统。从更长远的视角来看,这类技术有望在软件正式部署之前主动识别逻辑漏洞,为安全防线提供更早期的保障。
要点
- Anthropic 开发的 Claude 驱动智能代理,通过属性测试方法在 NumPy、SciPy、Pandas 等主流 Python 库中发现了数百个潜在漏洞,多个已被维护者修复。
- 与传统示例测试相比,属性测试让开发者只需描述代码的通用性质,由框架自动生成测试用例,能够有效覆盖人工难以预见的边缘情况。
- 代理内置自我反思循环机制,可自动区分真实漏洞与测试本身的缺陷,显著降低误报率,提升工具对开发者的实用价值。
- 团队采用严格的多轮人工审核流程进行负责任披露,确保提交给维护者的每一份漏洞报告都经过充分验证,避免造成不必要的干扰。
- 该技术未来有望扩展至更多开源项目,并在软件部署前主动发现安全隐患,为软件供应链安全提供新的防护手段。
原始标题:Finding bugs with Claude and property-based testing
本文由 DataHub 基于公开来源整理,用于信息发现与摘要阅读;具体事实、数据和后续更新以原始来源为准。