认证绕过漏洞三重奏
企业分析平台Yellowfin BI修复了三个由硬编码密钥导致的认证绕过漏洞,这些漏洞为攻击者提供了通往远程代码执行(RCE)的路径。
安全公司Assetnote的研究人员首先发现了这些预认证漏洞,随后又找到了认证后的命令执行路径。这些由研究员Max Garrett发现的漏洞已被分配CVE编号,但尚未获得CVSS评分。
漏洞详情
第一个绕过漏洞(CVE-2022-47884)
位于com/hof/mi/web/action/StoryBodyAction.java
中的逻辑问题,只要通过签名检查,攻击者就能以任何用户身份登录。硬编码的RSA私钥意味着任何人都能通过签名验证。
第二个绕过漏洞(CVE-2022-47885)
在JsAPI servlet中发现,攻击者可通过EXTAPI-IPID cookie进行认证,该cookie使用硬编码密钥的用户ID进行AES加密。“任何知道受害者用户ID的人都能创建有效会话,“博客文章解释道。
第三个绕过漏洞(CVE-2022-47882)
涉及REST API中JWT实现的缺陷。有效的刷新令牌ID和提取的硬编码密钥允许以任何用户身份创建有效JWT,但由于需要从成功登录获取的有效刷新令牌ID,影响仅限于权限提升。
通往RCE的路径
成功绕过认证后,第四个漏洞(CVE-2022-47883)使攻击者能够执行远程代码。研究人员发现,通过JNDI机制利用forceString小工具,可以实现命令执行。
Assetnote已在GitHub上发布了完整的漏洞利用链概念验证。
安全建议
针对类似Yellowfin这样的Java单体应用,研究人员建议:
- 尽可能详细地映射预认证攻击面
- 理解所有静态和动态路由
- 确定哪些路由无需认证即可访问
- 分析用户输入处理方式,识别需要进一步调查的问题
这些漏洞已在Yellowfin BI 9.8.1版本中修复。