文档 / 安全

安全中心

在本地分析依赖、代码、内存泄漏和竞态条件,不会将你的代码发送到任何地方。

安全中心在本地分析项目,不会将你的代码发送到任何地方。在线数据源和 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 工具查询安全中心,并提出修复建议,这些建议与其他更改一样会经过更改窗口。