PhonePe/nika

GitHub: PhonePe/nika

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

Stars: 18 | Forks: 2

# Nika ![Nika](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/33f93f1c07021318.png) 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 遵循以下分析流程: ![Nika 架构](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/5a73616b7f021324.jpg) 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 是目前唯一完全支持的语言;对其他语言的支持已在计划中。 ## 贡献者

Automated Contributors pachinko2821 wisdomfreak-1 riti-ka-7

标签:CISA项目, DOE合作, JS文件枚举, SAST工具, 插件系统, 源代码安全审查, 请求拦截, 错误基检测, 静态代码分析