OpenSSH 的高危漏洞 SSHole(CVE-2026-123158)几乎没给管理员留出反应时间。多家安全公司确认,利用尝试从 2026-11-05 开始,也就是概念验证代码出现的那一天;有公司在 2026-11-06 就记录到成功利用。威胁情报公司 GreyNoise 自己观测到的第一例成功利用发生在 2026-11-07 的 00:46 UTC,距离修复发布大约 40 小时。攻击者的动作很直接:执行命令、窃取凭据、留后门。
漏洞出在密码校验这一步
漏洞由安全研究者 Ozgun Kultekin 披露,影响运行在 musl 基础库上的 OpenSSH,包括云和虚拟环境里常见的轻量发行版 Alpine。原理不复杂:有些系统账户的密码哈希被有意设成一个星号,本意是彻底禁止密码登录。攻击者提交一个超长的密码,musl 的密码哈希函数处理出错并返回星号,OpenSSH 把这个返回值当成与账户里存的星号一致,认证就直接通过了。
利用有前提。研究者说明,这需要特定的认证配置,密码哈希正常有效的账户不受影响。真正危险的是权限叠加:如果被攻破的账户本身带无密码的管理权限,攻击者可以顺势拿到 root。这也解释了为什么暴露在公网的 musl 系跳板机风险最高。
多个方向的观测都指向同一件事
芬兰安全公司 Defused 在周末表示,观察到「少量行为体」尝试利用 SSHole,活动谈不上广泛。GreyNoise 记录到 16 条成功利用链,来自 6 个源 IP 地址,且都伴随后续操作。网络安全公司 Previdian 的传感器同样确认了成功利用,遥测数据显示 20 次尝试,来自 13 个攻击者 IP,分布在 9 个国家。进攻性安全公司 watchTower 在 2026-11-06 表示,看到 SSHole 被用于僵尸网络和挖矿活动。
在 GreyNoise 观测到的攻击里,攻击者做了系统和容器侦察,向云元数据服务发起查询,尝试读取密码哈希和 root 的 SSH 密钥,还试图修改 SSH 的 authorized_keys 文件以取得持久访问。其中一名攻击者拿到 root 权限后安装了 TAC Agent,一个用 Python 写的命令控制程序。这个植入体没能连上它的 C2 服务器 tac.vpnla[.]org,始终没有收到任何任务。
对 TAC Agent 的分析显示,它支持执行 shell 命令、大范围系统侦察、文件上传下载,还能自我更新。它没有内置持久化能力,攻击者只能靠配置一个开机服务来保活。GreyNoise 指出,这个植入体的注释、日志和报错信息都是中文,这可以作为判断攻击者来源的证据之一。另一个细节暗示操作可能自动化:程序缺了一项工具检查,返回的反馈能让自动化规划器据此修正命令,让攻击继续推进。
扫描量很大,但别把数字混着用
GreyNoise 累计记录到 2750 万次针对 22 端口的扫描,以及 2010 万次 SSH 会话尝试。这些数字不等于 SSHole 攻击成功数,它们只说明 SSH 端口在全网上被反复敲门。把扫描量当成入侵量,是这类事件里最常见的误读。
现在该做什么
系统管理员应当尽快升级 OpenSSH,或者在受影响的系统上关闭 SSH 密码认证。同时翻一遍日志:查 /etc/shadow 里密码字段为星号的账户有没有意外的成功登录,查有没有陌生的 SSH 公钥,查有没有 TAC Agent 的文件和开机服务。这三项检查比事后重装系统便宜得多。
按我的看法,跑 Alpine 这类 musl 系统的机器,今天就把升级做掉,不要等排期。升级窗口一时排不开的,先把密码登录关掉,用密钥顶上,再去日志里找星号账户的可疑登录。这件事的判断标准很简单:漏洞利用代码已经公开,攻击不需要高超技术,拖延的成本远高于一次重启。