PhonePe/nika
GitHub: PhonePe/nika
Nika 是一款开源的 Java 源代码静态分析工具,通过跨文件污点分析追踪攻击者输入在微服务中的传播路径,帮助安全工程师识别真正可达的漏洞利用链。
Stars: 18 | Forks: 2
# Nika

Nika 是一款开源的源代码审查和静态分析工具,专为需要识别 Java 微服务中漏洞利用路径的安全工程师而设计。它执行跨文件污点分析,追踪攻击者可控的输入在应用层之间的传递,并确定该输入是否能到达安全敏感的 sink。
## 为什么选择 Nika
许多可利用的问题在单个文件内是不可见的。请求数据可能通过 controller 进入,经过 DTO 和 service 层,只有当它到达 sink(例如数据库查询、文件操作、模板引擎、反射 API 或外部网络调用)时才会变得危险。
Nika 正是为了解决这一审查问题而构建的。它不仅仅是识别危险的 sink,而是追踪跨文件和函数的数据流,以便安全工程师能够确定某条路径是否真正可达。
## Nika 帮助安全工程师做什么
- 追踪攻击者可控的输入在 controller、service、helper 和工具层之间的传递。
- 验证从 source 到 sink 的可达性。
- 通过感知分支的扫描支持安全代码审查。
- 生成 HTML 报告。
- 通过自定义 source、OpenGrep sink 和漏洞插件扩展检测覆盖范围。
## 检测覆盖范围
Nika 目前支持以下漏洞类别:
- SQL 注入
- SSRF
- 路径遍历
- 命令注入
- 代码注入
- 模板注入
- 反序列化
- XXE
- 加密失败
- 不安全的反射
- 敏感执行流程和验证链中的安全关键调用顺序违规
## Nika 的工作原理
在宏观层面上,Nika 遵循以下分析流程:

1. 将目标仓库处理为一种分析表示形式,以捕获代码结构、控制流和数据流。
2. 识别攻击者可控输入进入应用程序的已配置 source。
3. 识别代表安全敏感操作的 sink。
4. 执行跨文件和过程间分析,以确定输入是否能够到达这些 sink。
5. 可选地使用 AI Agent 审查漏洞,以减少误报。
6. 生成包含漏洞路径、受影响代码位置和修复上下文的 HTML 报告。
## 快速开始
### 通过 Docker 运行
你可以使用预构建的 docker 镜像。
```
git clone https://github.com/PhonePe/nika.git
docker pull ghcr.io/phonepe/nika:latest
export NIKA_IMAGE=ghcr.io/phonepe/nika
./run.sh --path /absolute/path/to/code --config /absolute/path/to/crtConfig.yml --output ./report.html
```
或者自行构建 docker 镜像。
```
git clone https://github.com/PhonePe/nika.git
cd nika
./build.sh
./run.sh --path /absolute/path/to/code --config /absolute/path/to/crtConfig.yml --output ./report.html
```
### 在本地运行
```
git clone https://github.com/PhonePe/nika.git
cd nika
./native-build.sh
./native-run.sh --path /absolute/path/to/code --output ./report.html
```
## 启用基于 AI 的误报分析
* Docker 设置 - 你可以在 `/absolute/path/to/crtConfig.yml` 修改配置。
* 本地设置 - 你可以在 `/absolute/path/to/native-crtConfig.yml` 修改配置。
```
LLMConfig:
API_KEY: 'API_TOKEN'
LLM_URL: 'https://chatgpt.com/api/v1'
MODEL: 'GPT-5'
MAX_TOOL_CALLS: 10
MAX_ITERATIONS: 15
RECURSION_LIMIT: 100
PROMPT_COST_PER_MILLION: 1.25
COMPLETION_COST_PER_MILLION: 10.0
llm_review_enabled: false
```
### 文档
要了解更多关于 Nika 及其功能的信息,你可以阅读我们的详细文档[这里](https://phonepe.github.io/nika/index.html)。
## 语言支持
Java 是目前唯一完全支持的语言;对其他语言的支持已在计划中。
## 贡献者
标签:CISA项目, DOE合作, JS文件枚举, SAST工具, 插件系统, 源代码安全审查, 请求拦截, 错误基检测, 静态代码分析