D-Link 网络附加存储(NAS),即网络存储设备,是连接到计算机网络、带有硬盘(或多块硬盘)用于存储和共享文件的设备。与直接连接计算机的普通外置硬盘不同,网络存储设备连接到局域网,允许多个用户或设备同时使用和共享文件。网络存储设备广泛用于家庭和企业场景。
从事安全研究的公司 VulDB Coordination 在部分 D-Link 网络存储设备上发现了一个严重安全漏洞(CVE-2024-3273),该漏洞允许恶意用户通过网络执行命令注入,在受害者设备上运行恶意程序命令。
该漏洞仅影响某些已到达生命周期终点、制造商已停止提供软件和硬件支持的 D-Link 设备。受影响的型号如下:
该漏洞还需要同时利用另一个漏洞。具体而言,由硬编码登录凭据导致的后门使网络存储设备变得尤为脆弱。该后门即漏洞(CVE-2024-3272),攻击者可以利用所有受影响设备中默认可用的 "系统用户" messagebus 绕过身份验证。
虽然无法使用这个默认存在于 Linux 系统中的系统守护进程(system daemon)用户直接登录系统,但只需向特定端点精心构造一个 HTTP 请求,就能造成破坏。
此外,还需要知道目标设备的 IP 地址。
该漏洞位于网络存储设备的 /cgi-bin/nas_sharing.cgi 文件中处理 HTTP GET 请求的函数内。恶意用户可以通过网络向受害设备发送 GET 请求,并在参数中提供用户名 "messagebus"、密码留空。命令注入通过 system 参数实现,即将该参数的值设置为所需的程序命令。
命令以 base64 编码进行隐藏,并作为 system 参数的值传入。解码后,恶意命令片段会以 shell 命令的形式在目标设备上执行。
🗒️ CVSS 基础评分:7.3 高
CVE-2024-3273 的成因是 CWE-77,即命令注入。这意味着攻击者可以输入恶意命令,目标系统随后会执行这些命令,因为输入的命令未经校验。
由于设备的源代码不公开,要避免此问题,大概应在处理请求的方法中添加校验函数。例如,可以维护一份允许的系统命令列表,以防止任意命令的执行。
该漏洞主要破坏以下安全目标:
该漏洞仅影响已到达生命周期终点的设备,因此制造商建议更换设备,不要使用易受攻击的设备。
由于这些设备已不再受支持,无法再获得软件安全更新,这意味着该漏洞 不会被修复。因此,唯一的解决方案是停止使用存在漏洞的产品。
如果无法更换易受攻击的设备,则务必将其从公共网络中移除;最坏情况下,只能供本地局域网中的设备使用(应安装防火墙以阻止外部请求)。
根据最初的报告,漏洞被发现时,网络上有超过 92 000 台设备。但根据后来的研究,这个数字可能要小得多,约为 5500 台。尽管如此,如今可能仍有许多旧设备连接在网络上,因而仍然易受攻击。
目前已公开了多份概念验证(PoC),该漏洞很可能仍被广泛利用。截至目前,已发现至少 146 起尝试利用 CVE-2024-3273 漏洞的事件。
示例代码片段:
def execute_command(ip, command: str = "id", verbose: bool = True) -> str:
command_hex = ''.join(f'\\\\x{ord(c):02x}' for c in command)
command_final = f"echo -e {command_hex}|sh".replace(' ', '\t')
base64_cmd: str = base64.b64encode(command_final.encode()).decode()
url: str = f"{ip}/cgi-bin/nas_sharing.cgi"
params: dict = {
"user": "messagebus",
"passwd": "",
"cmd": "15",
"system": base64_cmd,
}