Soumettre #911864: dromara orion-visor v2.5.7 Default Tokeninformation

Titredromara orion-visor v2.5.7 Default Token
DescriptionOrion-visor 中 ExposeApi 硬编码默认令牌认证绕过(CWE-798) 摘要 Orion-visor Bastion 主机使用 ExposeApiAspect 的 @ExposeApi 注释,用于内部代理界面 API 的自定义认证。生产配置 application-prod.yaml 包含硬编码的默认令牌 pmqeHOyZaumHm0Wt。当API_EXPOSE_TOKEN环境变量未被覆盖时,任何知道该公开令牌的远程攻击者都可以绕过认证,访问所有@ExposeApi端点。 详情 根源:ExposeApiAspect.beforeExposeApi()(ExposeApiAspect.java 的第62-77行)中的信任边界失效。@ExposeApi注释带有@PermitAll元注释,导致Spring Security跳过这些端点。认证委托给 ExposeApiAspect 执行,它通过 config.getToken().equals(request.getHeader(config.getHeader()))在第 73 行将请求头令牌与配置好的令牌进行比较。令牌是从 ExposeApiConfig 加载的,绑定到 orion.api.expose。In application-prod.yaml line 86: token: ${API_EXPOSE_TOKEN:pmqeHOyZaumHm0Wt}.备用 pmqeHOyZaumHm0Wt 在开源仓库中公开可见。受影响端点:HostAgentEndpointController.java行64-97(setAgentOnline、setAgentOffline、setAgentHeartbeat、syncHostSpec)和MonitorAgentEndpointController.java行59-76行(addMetrics,syncHostMeta)。完整 API 路径前缀:/orion-visor/api。 核心漏洞代码路径: Orion-visor-framework/Orion-visor-spring-boot-starter-web/src/main/java/org/dromara/visor/framework/web/core/aspect/ExposeApiAspect.java:62-77 @Before(value = “exposeApi(e)”, argNames = “e”) public void beforeExposeApi(ExposeApi e) { HttpServletRequest request = Optional.ofNullable(RequestContextHolder.getRequestAttributes()) .map(s -> (ServletRequestAttributes) s) .map(ServletRequestAttributes::getRequest) .orElse(null); 如果 (请求 == null) { throw ErrorCode.EXPOSE_UNAUTHORIZED.exception(); } if (!config.getToken().equals(request.getHeader(config.getHeader())))) { log.warn(“expose API unauthorized, URL: {}”, request.getRequestURI()); throw ErrorCode.EXPOSE_UNAUTHORIZED.exception(); } } 所有 ExposeApi 端点的认证汇入器。简单字符串比较配置后的令牌(默认为 pmqeHOyZaumHm0Wt)与 X-Server-Token 头部。鞋底保护机制。 Orion-visor-framework/Orion-visor-Spring-boot-starter-web/src/main/java/org/dromara/visor/framework/web/core/annotation/ExposeApi.java:35-45 @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @PermitAll 公共@interface ExposeApi { 字符串源()默认“”; } @ExposeApi元注释了@PermitAll,导致Spring Security绕过了这些端点的认证。首先,信任边界失效。 # Orion-visor-launch/src/main/resources/application-prod.yaml:83-86 揭露: token: ${API_EXPOSE_TOKEN:pmqeHOyZaumHm0Wt} Production config with hardcoded default token pmqeHOyZaumHm0Wt.在开源仓库中公开可见。 Orion-visor-modules/Orion-visor-module-asset/Orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/controller/HostAgentEndpointController.java:64-97 @ExposeApi @GetMapping(“/set-online”) public HostOnlineAgentConfigVO setAgentOnline(...){ ... } @ExposeApi @GetMapping(“/set-offline”)公用布尔 setAgentOffline(...){ ... } @ExposeApi @GetMapping(“/心跳”)公共布尔集合AgentHeartbeat(...){ ... } @ExposeApi @PostMapping(“/sync-host-spec”)公共布尔 syncHostSpec(...){ ... } HostAgentEndpointController中有四个@ExposeApi入口点,通过认证绕过后可访问。允许代理状态操作和数据注入。 有色人种 Precondition: System uses default ExposeApi token pmqeHOyZaumHm0Wt (API_EXPOSE_TOKEN env var not overrideden). 步骤1 - 验证绕过:用X-Server-Token获取/orion-visor/api/host/agent-endpoint/heartbeat:pmqeHOyZaumHm0Wt,X-Agent-Key:测试。预期:HTTP 200(非401),确认绕过。 步骤2 - 注入数据:POST /orion-visor/api/host/agent-endpoint/sync-host-spec?taskId=1,且令牌头和主体相同{“osName”:“compromised”,“cpuCores”:999}。预期:HTTP 200真实、恶意数据写入。 影响 远程未认证攻击者通过公开的默认令牌绕过了ExposeApi认证。可以操控主机代理状态,伪造心跳,注入虚假监控和主机规格数据。CVSS 9.8 危急 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H。 修复 从配置中移除硬编码的默认令牌。2. 启动时要求强制性API_EXPOSE_TOKEN。3. 每次部署生成唯一的随机令牌。4. 考虑mTLS或JWT认证。5.添加IP白名单。6. 通知用户轮换代币。 披露说明 代币在开源仓库中公开可见。通过代码审核发现的。受影响:v2.5.7 确认。补丁时间表:待定。 补充信息 受影响产品 生态系统:自架 包裹名称:Orion-visor 受影响版本:v2.5.7 已修补版本:待定 严重程度 评分方法:CVSS v3.1 评分:9.8 矢量字符串:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 弱点 CWE:CWE-798 硬编码凭证的使用 项目地址:https://github.com/dromara/orion-visor 报告人:sumo166 邮箱:[email protected] GitHub 个人资料:https://github.com/sumo166 vuldb ID:summmm
La source⚠️ https://github.com/dromara/orion-visor/issues/170;https://github.com/sumo166/CVE-apply/blob/main/dromara-orion-visor/ExposeApi%20Hardcoded%20Default%20Token%20Authentication%20Bypass%20(CWE-798)_en.md
Utilisateur
 summmm (UID 69690)
Soumission31/07/2026 11:25 (il y a 1 mois)
Modérer12/09/2026 10:58 (1 month later)
StatutAccepté
Entrée VulDB403097 [dromara orion-visor jusqu’à 2.5.7 ExposeApiAspect.java ExposeApiAspect.beforeExposeApi authentification faible]
Points20

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!