首页 > 解决方案 > jakarta.el 库在 NexusIQ [Quarkus] 中被标记为存在安全漏洞

问题描述

我们使用quarkus-hibernate-validatorwhich pulls in jakarta.el。但最近所有版本的jakarta.elNexusIQ 都被标记为存在严重漏洞。

[https://securitylab.github.com/advisories/GHSL-2020-021-jakarta-el/][1]

详情如下:

漏洞问题 sonatype-2020-1438 问题 sonatype-2020-1438 严重性 Sonatype CVSS 3:7.5 CVE CVSS 2.0:0.0 弱点 Sonatype CWE:20 来源 Sonatype 数据研究类别 数据说明 jakarta.el 包包含不正确的输入验证漏洞。ELParser 类中的 LiteralExpression 方法无法正确识别文字表达式。因此,无效的表达式被评估为好像它们是有效的。远程攻击者可以通过制作包含 $ 或 # 符号后跟反斜杠 / 和有效负载的 EL 表达式来利用此漏洞。这将绕过当前验证并导致解析器评估可能允许远程代码执行的表达式。

检测 应用程序因使用此组件而易受攻击。

推荐 此组件/包没有安全的升级路径。我们建议调查替代组件或潜在的缓解控制。

根本原因 jakarta.el-3.0.3.jbossorg-2.jarcom/sun/el/parser/ELParser.class( , ) 建议第三方:https ://securitylab.github.com/advisories/GHSL-2020-021- jakarta-el/ CVSS 详情 Sonatype CVSS 3:7.5

Quarkus 团队对修复这个问题有什么建议吗?

标签: securityglassfishquarkusnexus-iq

解决方案


你已经有版本 4.0.0 尝试更新 pom 我把它放在标签属性 <glassfish.el.version>4.0.0</glassfish.el.version> 或声明所有依赖项。

链接解决方案要求您创建一个拦截器来获取 GET、DELETE、UPDATE 类型的请求参数。对于 POST 类型的请求,获取正文的 json

public String replaceElDelimiter(final String value) {
   if (value != null) {
       return value.replaceAll("\\$+\\{", "{");
   }
   return null;
}

删除 ${ 后添加到参数或您正在使用的正文中的值


推荐阅读