研究人员发现,某些配置下的Alpine Linux(可能还包括其他发行版)受到一个存在十年之久的漏洞影响,该漏洞允许攻击者无需密码即可登录受影响的设备。
该漏洞源于OpenSSH(实现SSH连接的代码库)与musl(一种轻量级的libc替代库)之间的交互问题。与大多数其他Linux发行版不同,Alpine使用的正是musl库。此外,使用musl的OpenSSH还必须未启用PAM(可插拔认证模块),即处理用户认证和账户访问检查的框架,才会触发该漏洞。Alpine是一款轻量级且被广泛使用的Linux发行版,其他采用相同配置的平台也可能受到影响。
一次连接即可成功,无需重试
成功利用该漏洞还需满足另外两个条件。首先,系统中必须至少存在一个可通过使用SHA256或SHA512函数哈希处理的密码访问的用户账户。其次,目标系统账户必须配置为无密码状态,具体方式是在/etc/shadow文件(Linux系统中存储密码哈希的文件)的密码字段中指定"*"符号。无密码账户通常用于采用基于证书认证的账户,这种设置在某些类型的账户中很常见。
当上述所有条件都满足时,造成的后果将十分严重。
Alpine维护团队周四表示:"能够访问你的SSH端口的攻击者可以在不知道任何密码的情况下登录系统。只需一次连接,每次都能成功,且不需要重试。"
在登录无密码账户时,攻击者可以通过在密码字段中输入超过256个字符来获取访问权限。
安全公司Checkpoint表示,使用SHA256或SHA512函数之所以重要,"是因为sshd会借用该账户的盐值(salt)。没有盐值,攻击将会失败。"该公司研究人员表示,他们的测试还表明,该账户必须处于激活状态,而不能仅仅是持有一个哈希值。Checkpoint还指出,在默认的PermitRootLogin禁止密码登录设置下,root账户是安全的,但拥有doas或sudo权限的可访问账户仍然可以提升为root权限。
尽管存在这些前提条件,*sshole(该名称由发现者命名)很可能威胁到大量系统。Alpine的Docker Hub基础镜像下载量已超过10亿次。长期以来,Alpine在路由器、智能电视、工业控制器等嵌入式设备中颇受欢迎,而这些设备中许多难以轻易更新,甚至根本无法更新。近年来,Alpine也开始被用于桌面系统和服务器。此外,Alpine还被广泛用于各种容器镜像中。
据安全公司Detectify透露,Shodan搜索引擎列出的开放22端口SSH服务的系统约有2200万个。虽然其中只有一小部分满足可被利用的条件,但考虑到逐一测试的便捷性和速度,定位易受攻击的设备并不需要太多的时间和精力。
目前尚不完全清楚该漏洞的根源具体在哪里。周四发布更新的OpenSSH表示:"我们认为该漏洞的根本原因并不在sshd本身,但它可以通过sshd被利用,也可以在sshd层面加以规避。"与此同时,musl开发者Rich Felker写道:"我的立场是,这并非musl的缺陷,而是调用方的错误使用方式。"Felker还表示,musl开发者"已经考虑了一段时间"要对该机制进行调整,并计划在即将发布的版本中实施。Alpine方面也已发布了更新补丁。
目前尚不清楚还有哪些其他软件包可能受到影响。该漏洞的发现者表示OpenWRT受到影响,但该操作系统默认使用Dropbear软件包而非OpenSSH来处理SSH连接(不过维护者提供了安装OpenSSH的说明)。发现者还指出buildroot和yocto软件包也受到影响,但这一点尚未得到确认。
尽管存在诸多不确定性,任何同时使用musl和OpenSSH的Linux系统用户都应立即着手调查自己是否受到影响。建议从相关资源入手进行排查。所有受影响的系统都应安装Alpine和OpenSSH的补丁。目前该漏洞尚无已知的CVE编号。
