文档 / 安全
安全中心
在本地分析依赖、代码、内存泄漏和竞态条件,不会将你的代码发送到任何地方。
安全中心在本地分析项目,不会将你的代码发送到任何地方。在线数据源和 AI 审查是可选功能,需要单独启用。
打开方式
- 右侧边栏 → 更多工具 → 安全中心(“发现项与密钥”)。
- 命令面板(
Ctrl+Shift+A):安全中心(漏洞、泄漏、竞态)。 - 从质量面板的“预防”标签页进入。
首次使用时点击 扫描项目,有更改后点击 重新扫描。
标签页
| 标签页 | 显示内容 |
|---|---|
| 概览 | 总体状态和最重要的发现项。 |
| 依赖 | 存在已知漏洞或已停止支持的库。 |
| 代码 | 项目代码中的漏洞。 |
| 内存与并发 | 资源泄漏和竞态条件。 |
| 许可证 | 依赖的许可证。 |
| AI 审查 | 一项可选的模型分析,由你通过 AI 审查 启用。 |
依赖
漏洞来源
在 选项 → 漏洞来源 中:
| 来源 | 状态 | 发送的内容 |
|---|---|---|
| Yuli 本地数据库 | 始终启用 | 无。离线运行,包含常见 Java 库(Struts、Log4j、commons、Spring、Jackson……)的已知 CVE、已停止支持的组件和许可证信息。 |
| OSV.dev | 默认关闭 | 仅发送每个依赖的 group、artifact 和版本。 |
| OWASP Dependency-Check | 可选 | 使用本地安装。 |
只使用本地数据库时,分析完全离线进行。如果还想查询 GitHub Advisory 和 NVD,请启用 OSV.dev。
范围
- 包含测试代码。
- 包括服务器 jar。
代码
代码分析涵盖 Java、JSP、web.xml 和 Hibernate 描述符。
| 类别 | 示例 |
|---|---|
| 注入 | 使用请求数据拼接的 SQL。 |
| XSS | JSP 或 Servlet 中未转义的输出。 |
| 不安全的反序列化 | 从不受信任的来源读取的对象。 |
| XXE | 未加防护的 XML 解析器。 |
| 弱加密 | 过时的算法。 |
| TLS | 信任任意证书的管理器。 |
| 开放重定向 | 取自请求的跳转目标。 |
| 机密 | 写在代码中或打印到日志里的凭据。 |
按方法进行的污点(taint)模型会追踪来自请求(getParameter、getHeader、cookie)以及 Struts ActionForm 的值。当某个发现项接收到用户数据时,其置信度和严重级别都会提高。
内存与并发
泄漏
- 未关闭的 JDBC 连接或流。
- 未调用
remove()的ThreadLocal。 - 无限增长的静态缓存。
- 永不停止的线程。
竞态条件
- Servlet、Struts Action 和单例中的共享状态。
- 静态的
SimpleDateFormat。 - Double-checked locking。
- check-then-act 模式。
要在运行时确认泄漏,请使用 JVM 面板:重复执行内存直方图可以看出哪些类在增长。参见运行与调试。
报告保存位置
保存在项目的 .yuli/security/ 文件夹中,Yuli 会将其排除在 Git 之外。
编辑器中的预防
除了安全中心之外,Yuli 还会在你输入时以及智能体每次编辑后实时检查每个文件:OWASP Top 10、CWE、性能、健壮性和无障碍。发现项会以下划线标出,并附有参考信息和修复方法。参见与 N−1 对比度量。
SBOM 与供应链
软件物料清单(SBOM)在治理中心的 供应链 标签页中通过 写入 SBOM 生成。格式:CycloneDX 1.5 JSON 和 SPDX 2.3 JSON。参见 Gate 与治理中心。
与智能体协作
智能体可以通过 yuli_security_center 和 yuli_security_scan 工具查询安全中心,并提出修复建议,这些建议与其他更改一样会经过更改窗口。