metis
arm/metis加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

想象一个场景:某固件团队在代码审查中发现,一个看似正常的内存地址重映射循环,在读取旧值之后计算了新地址,却忘了把新值写回内存。代码通过了编译,没有任何 linter 报错,传统 SAST 工具也一声不吭——因为从语法角度看它完全合法。然而在实际运行时,内存重映射永远不会生效。这个缺陷潜伏了数月,直到 Arm 的安全工程师借助一款新工具才把它揪出来。
这款工具,就是 Metis。
Metis 来自 Arm 产品安全团队,是一个基于大语言模型的自主式(Agentic)安全代码审计框架。与依赖规则和签名匹配的传统静态分析工具不同,Metis 能够理解代码的语义和意图,在大型、复杂甚至遗留代码库中发现那些"语法合法但逻辑致命"的漏洞。目前 Metis 已在 Arm 内部运行于超过 130 个软件项目,计划于 2026 年底前实现全公司覆盖。
代码安全审计是软件生命周期中最耗时、也最容易被忽视的环节。传统 SAST 工具(静态应用安全测试)依赖规则库,只能检测已知模式的漏洞,对于以下场景力不从心:
更关键的是,传统工具在大型代码库中产生大量告警,其中假阳性率极高,工程师们很快对告警列表产生"告警疲劳"——真正的问题被淹没在噪声中。
Arm 产品安全团队在反复应对这些挑战后,决定利用 LLM 的语义理解能力,建造一个真正"懂代码"的审计工具。Metis 因此诞生,名字取自希腊智慧女神 Metis(墨提斯)。
Metis 的架构基于 RAG(检索增强生成),核心工作流程如下:
Metis 支持两种工作模式:
Metis 区别于传统工具的核心在于:不依赖硬编码规则,而是让 LLM 理解代码"应该做什么",再与实际行为对比。上文提到的内存重映射循环,正是这种能力的典型案例——工具识别出代码意图后,发现了"计算了新值但从未写回"的逻辑漏洞。
Metis 内置了覆盖 20+ 种编程语言的插件,包括 C、C++、Python、Rust、Java、Go、TypeScript、Terraform、Solidity 等。通过 Tree-sitter 实现代码结构化解析,可按语言定制分析策略。
Metis 不绑定特定模型,支持 OpenAI、Azure OpenAI、Anthropic、Google Gemini、AWS Bedrock 以及本地模型(Ollama、vLLM、llama.cpp)。Arm 内部使用 OpenAI 的 GPT-5.5-Cyber 模型通过 OpenAI Daybreak 运行。
Metis 不仅自己分析漏洞,还能验证第三方 SAST 工具的告警。通过导航源码、构建调用图、收集证据并推理,自动过滤假阳性。Arm 内部测试中,真阳性率约 95%。
Metis 要求 Python >= 3.12,通过 pip 安装:
pip install metis
# 或通过 uv
uvx metis --help
高级功能需要安装可选依赖:
pip install metis[all-providers] # 所有 LLM 提供商
pip install metis[postgres] # PostgreSQL 向量存储
pip install metis[anthropic] # Anthropic Claude
pip install metis[gemini] # Google Gemini
# 配置 LLM 提供商(需要 OPENAI_API_KEY 等环境变量)
export OPENAI_API_KEY=sk-...
# 对整个仓库进行安全审查(交互式)
metis review /path/to/codebase
# 非交互式输出 JSON 结果
metis --non-interactive --command review_code --output-file results.json
# 对 PR 进行审查
metis review_pr --pr-url https://github.com/owner/repo/pull/123
Metis 提供多阶段 Dockerfile 和 docker-compose.yml:
git clone https://github.com/arm/metis
cd metis
docker-compose up -d # 启动 PostgreSQL + pgvector
docker build -t metis .
docker run --rm -e OPENAI_API_KEY=$OPENAI_API_KEY -v $(pwd):/code metis review /code
Arm 在多个 C/C++ 项目中对 Metis 进行了内部评估:
| 指标 | 结果 |
|---|---|
| 真阳性率 | ~95% |
| 发现的之前未检测到的漏洞 | 在预发布固件中发现并经工程师确认 |
| 遗留缺陷 | 发现 2024 年初引入的逻辑缺陷,长期未被传统工具检测到 |
| 假阳性率 | ~5%,通过研判流程进一步降低 |
Metis 并非完美,以下几点需要在使用时注意:
Metis 的出现代表了一种新趋势:Agentic AI 在安全领域的落地。它证明了 LLM 不只是能写代码,同样能理解代码的深层意图和安全含义。结合 RAG 架构,Metis 实现了"上下文感知"的安全分析——不是孤立地看一行代码,而是理解它在系统整体中的角色。
在 AI 重塑软件开发的浪潮中,Metis 为安全领域开辟了一条新的路径:让机器学会像资深安全工程师一样思考代码。