sshole (CVE-2026-123158): 影响Alpine Linux的OpenSSH漏洞及修复方法

由 Eoin Villarin, 2026-11-07

OpenSSH的一个名为sshole的漏洞允许攻击者登录Alpine Linux和其他基于musl的系统上的无密码账户,该漏洞已经被利用。哪些用户受到影响,如何检查您的服务器以及如何修复它。

我是否受到 sshole OpenSSH 漏洞的影响?

如果服务器运行的OpenSSH版本低于10.6p2,在基于musl的系统(如Alpine Linux)上没有PAM,允许SSH密码登录,并且有一个账户的密码字段仅为星号,旁边有另一个账户的真实密码哈希,则您处于风险之中。 Debian、Ubuntu、Fedora和使用PAM的设置不受影响。

关键要点

  • CVE-2026-123158,被称为 sshole,允许攻击者通过发送超大密码登录基于 musl 的 Linux 上的无密码帐户。
  • Alpine Linux 的默认 openssh-server 包受到影响,而 Ubuntu 等 glibc 系统和配置使用 PAM 的系统则不受影响。
  • 攻击者在漏洞公开后不到九小时内利用了它,并在蜜罐上获得了 root 权限。
  • 修复程序是 OpenSSH 10.6p2 或适用于您所在分支的 Alpine 修补程序,然后重启 sshd。
  • 如果您暂时无法更新,请设置为 PasswordAuthentication no 并使用 SSH 密钥。

一个新披露的 OpenSSH 漏洞,被称为 sshole,跟踪编号为 CVE-2026-123158,允许攻击者登录到某些 Linux 帐户,这些帐户理论上不接受密码。它影响基于 musl 的系统,如 Alpine Linux,已于 2026 年 11 月 5 日修复,攻击者在漏洞公开后不到九小时内开始利用它。如果您运行 Alpine 服务器、带有 SSH 的 Alpine-based Docker 镜像或 OpenWrt 上的小型设备,请今天检查它们。

什么是 sshole OpenSSH 漏洞?

在基于 musl 的系统中,C 库的 crypt() 函数在无法对密码进行哈希时返回单个星号(*),例如当密码超过其 256 字节限制时。许多 Linux 系统也使用单个 * 在密码字段中表示“此帐户无密码”。OpenSSH 比较了这两个,看到 *,并将其视为匹配。发送超大密码足以登录无密码帐户。

该行为可以追溯到 OpenSSH 2016 年的一项密码处理变更。安全研究人员 Özgün Kültekin 使用运行了约 17,600 次身份验证测试的 AI 代理发现了该漏洞。该 CVE 的 CVSS 3.1 评分为 8.1,评级为高,此修复程序已随 OpenSSH 10.6p2 一同发布。

我是否受到影响?

当以下所有条件都成立时,服务器存在风险:

  • 它在基于 musl 的系统(如 Alpine Linux、OpenWrt、Buildroot 或 Yocto)上运行 OpenSSH 版本低于 10.6p2。
  • sshd 不使用 PAM。这是 Alpine openssh-server 包的默认设置。
  • 启用了 SSH 密码登录,这是 OpenSSH 的默认设置。
  • 至少有一个帐户的密码字段中只有 *,例如仅使用密钥的用户,旁边是另一个具有真实密码哈希的帐户。

Alpine 的官方 AWS 和 Azure 云镜像从 3.18.11 到 3.24.3 是一个严重的情况:它们包含一个默认的 alpine 用户,没有密码和无密码 doas,这意味着成功的登录可以成为 root。

不受影响: 基于 glibc 的系统,如 Debian、Ubuntu 和 Fedora,通过 PAM、Dropbear 和 OpenBSD 检查密码的设置。具有真实密码哈希的帐户无法通过这种方式绕过。

如何检查您的服务器

在运行 sshd 的每个 Alpine 服务器或容器上以 root 用户身份运行以下命令:

  1. 检查 SSH 设置: sshd -T | grep -i -E 'passwordauthentication|usepam'. 如果关闭了密码身份验证或启用了 PAM,则无法利用此漏洞。
  2. 检查已安装的软件包: apk list --installed | grep openssh, 并将其与下面的固定版本进行比较。
  3. 列出无密码帐户: awk -F: '$2=="*" {print $1}' /etc/shadow.
  4. 查找这些帐户的登录记录: grep "Accepted password" /var/log/messages. 密码登录帐户时,密码字段中带有 *,意味着服务器可能遭到攻击。

如何在 Alpine Linux 上修复 CVE-2026-123158

Alpine 为从 3.16 到 edge 的每个分支提供了补丁包。在披露当天更新并重启 sshd,因为安装更新不会重启正在运行的进程:

apk upgrade -U -a 然后 rc-service sshd restart

Alpine 分支修复 openssh 版本
边缘10.6_p2-r0
3.2410.3_p1-r2
3.2310.2_p1-r1
3.2210.0_p1-r11
3.219.9_p2-r1
3.209.7_p1-r6
3.199.6_p1-r3
3.189.3_p2-r4
3.179.1_p1-r7
3.169.0_p1-r6

对于 Docker,从新的基础镜像重新构建包含 openssh 的每个镜像,然后重新部署。注意,Docker Hub上的某些 SSH 镜像,例如 linuxserver 的 openssh-server,默认关闭密码登录,但在设置 PASSWORD_ACCESS=true 时变得暴露。

早于 3.16 的 Alpine 版本没有获得修复包。请升级到受支持的版本或使用下面的变通方法。

快速解决方法:关闭 SSH 密码登录

如果您无法立即更新,请设置 PasswordAuthentication no 在 /etc/ssh/sshd_config 中,重启 sshd 并再次运行 sshd -T 检查。确保您的 SSH 密钥登录在此之前有效,否则您可能会被锁定。仅密钥 SSH 毕竟是任何服务器的良好默认设置。

如果您认为自己受到攻击,请

  • 审查 doas 使用情况、最近创建的用户和每个 authorized_keys 文件。
  • 检查未知进程、cron 作业和外出连接。
  • 如果您无法排除被入侵的可能性,请将服务器视为已被入侵:从干净的镜像重新构建,并轮换它所持有的所有密码、密钥和令牌。
  • 不要从 GitHub 下载概念验证漏洞利用程序来测试您的服务器。研究人员警告说,其中一些未经验证,可能包含恶意软件。

保持服务器更新是 网站维护 我为客户做这些事。如果您需要帮助检查您的托管、Docker 设置或 SSH 配置, 联系我.

常见问题

Ubuntu或Debian是否受到sshole漏洞的影响?

否。Debian、Ubuntu、Fedora和其他基于glibc的系统不受影响,使用PAM进行密码检查的设置也不受影响。

仅使用密钥的SSH是否能保护我?

是的。将PasswordAuthentication设置为no后,服务器不接受密码,因此无法使用该漏洞。

CVE-2026-123158是否已被利用?

是的。威胁情报公司Previdian在CVE发布后不到9小时内就看到了第一次尝试,一名攻击者在运行Alpine Linux的蜜罐中获得了root权限。

哪个OpenSSH版本修复了该漏洞?

OpenSSH 10.6p2。在Alpine上,为您的分支安装修补的openssh软件包并重启sshd。

Docker容器是否受到影响?

基于Alpine的容器如果启用了密码登录并运行sshd可能会受到影响。请从更新的基础镜像重新构建并重新部署。

更新后是否需要重启?

是的。运行的sshd在内存中保留了漏洞代码,直到您重启服务。

来源

相关阅读