Nacos 存在JWT密钥硬编码漏洞(MPS-2023-7982)
Posted 墨菲安全
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nacos 存在JWT密钥硬编码漏洞(MPS-2023-7982)相关的知识,希望对你有一定的参考价值。
漏洞描述
Nacos 是一个动态服务发现、配置和管理的平台,可用于构建云原生应用程序。
该项目受影响版本存在硬编码漏洞。由于Nacos鉴权时采用默认的token.secret.key,远程攻击者可自行构造JwtToken绕过密钥认证进入后台,进而操控系统。
漏洞名称 | Nacos 存在JWT密钥硬编码漏洞 |
---|---|
漏洞类型 | 使用硬编码的凭证 |
发现时间 | 2023/3/14 |
漏洞影响广度 | 一般 |
MPS编号 | MPS-2023-7982 |
CVE编号 | - |
CNVD编号 | - |
影响范围
com.alibaba.nacos:nacos-console@[0.1.0, 2.2.0.1)
修复方案
将组件 com.alibaba.nacos:nacos-console 升级至 2.2.0.1 及以上版本
参考链接
https://www.oscs1024.com/hd/MPS-2023-7982
https://github.com/alibaba/nacos/releases
https://github.com/alibaba/nacos/compare/2.2.0…2.2.0.1
https://github.com/alibaba/nacos/pull/9992/commits/f78431a06caa73f09e78aec3593502a2e114ec52
https://nacos.io/zh-cn/blog/announcement-token-secret-key.html
关于墨菲安全
墨菲安全是一家为您提供专业的软件供应链安全管理的科技公司,核心团队来自百度、华为、乌云等企业,公司为客户提供完整的软件供应链安全管理平台,围绕SBOM提供软件全生命周期的安全管理,平台能力包括软件成分分析、源安全管理、容器镜像检测、漏洞情报预警及商业软件供应链准入评估等多个产品。为客户提供从供应链资产识别管理、风险检测、安全控制、一键修复的完整控制能力。
开源项目:https://github.com/murphysecurity/murphysec/?sf=qbyj
产品可以极低成本的和现有开发流程中的各种工具一键打通,包括 IDE、Gitlab、Bitbucket、Jenkins、Harbor、Nexus 等数十种工具无缝集成。
免费代码安全检测工具: https://www.murphysec.com/?sf=qbyj
免费情报订阅: https://www.oscs1024.com/cm/?sf=qbyj
漏洞简析——CWE-259:使用硬编码的密码漏洞
对于硬编码密码,Immunity公司威胁情报负责人曾表示,这项常见的开发者漏洞不仅广泛存在,而且在短时间内似乎也不太可能被彻底解决。早在2016年Fortinet防火墙发现硬编码后门,尽管该公司否认硬编码密码是后门,称这个漏洞是一个管理身份认证问题,但还是非常可疑。倘若攻击者利用此漏洞,可以直接获取Fortigate最高管理权限,控制设备进行如抓取流量监听、DNS欺骗、建立隧道进入企业内网等攻击行为。
一、什么是使用硬编码的密码?
软件包含一个硬编码的密码,该密码用于自己的入站身份验证或与外部组件的出站通信。
这种处理方式一方面不易于程序维护,在代码投入使用后,除非对软件进行修补,否则无法修改密码。另一方面会削弱系统安全性,硬编码密码意味着拥有代码权限的人都可以查看到密码,可以使用密码访问一些不具有权限的系统,更严重的是如果攻击者能够访问应用程序的字节码,利用一些反编译工具就能阅读到代码,可以轻易获得密码。
二、使用硬编码的密码漏洞的构成条件有哪些?
程序中采用硬编码方式处理密码。
三、使用硬编码的密码漏洞会造成哪些后果?
如果使用硬编码的密码,攻击者将很可能通过该帐户获得访问权限。由于硬编码密码允许我们无需用户名或者验证实现设备登录,因此其往往会带来多种潜在使用途径,甚至会泄漏部分敏感信息。
四、使用硬编码的密码漏洞的防范和修补方法有哪些?
对于入站身份验证:对密码应用强单向散列,并将这些散列存储在具有适当访问控制的配置文件或数据库中。
对于出站身份验证:将密码存储在代码之外的一个经过严格保护的、加密的配置文件或数据库中,该配置文件或数据库不会被所有外部人员访问,包括同一系统上的其他本地用户。
五、使用硬编码的密码漏洞的防范和修补方法有哪些?
以下代码使用硬编码的密码连接到数据库:
public static void main(String[] args)
{
CreateDB db = new CreateDB();
Connection connection = null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
}
catch (Exception e)
{
System.out.println("Failed to load DB driver");
e.printStackTrace();
}
try
{
connection = DriverManager
.getConnection("jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=c:/webgoat.mdb;PWD=webgoat","webgoat", "webgoat");
db.makeDB(connection);
}
catch (Exception e)
{
System.out.println("Driver Manager failed!");e.printStackTrace();
}
……
使用Wukong软件代码安全检测修复系统检测上述程序代码,则可以发现代码中存在着“使用硬编码的密码”的安全漏洞。请见下图:
使用硬编码的密码在CWE中被编号为:CWE-259:Use of Hard-coded Password
以上是关于Nacos 存在JWT密钥硬编码漏洞(MPS-2023-7982)的主要内容,如果未能解决你的问题,请参考以下文章