CVE-2026-47783memcached在1.6.42之前的版本中存在严重的安全漏洞,该漏洞位于SASL密码数据库认证的用户名验证逻辑中。具体而言,`sasl_server_userdb_checkpass`函数在遍历用户列表时,一旦发现匹配的用户名便会立即退出循环。这种非恒定时间的处理方式引入了时序侧信道,使得攻击者能够通过分析服务器响应时间的细微差异来判断用户名的有效性。由于该漏洞无需用户交互且可被远程利用,攻击者借此可枚举出系统内的有效账户信息。这不仅破坏了系统的匿名性,还可能为进一步的暴力破解攻击提供关键目标,从而对系统的机密性、完整性和可用性构成严重威胁。
漏洞的核心机制在于memcached未对用户名比较操作实施恒定时间算法。在受影响的版本中,`sasl_server_userdb_checkpass`函数负责验证用户凭据,其内部循环会逐一比对输入的用户名与数据库中的记录。当输入的用户名匹配到列表中的某一个条目时,循环立即中断并返回成功;反之,若用户名不存在,循环将完整遍历整个列表。这种逻辑上的差异导致了执行时间的不同。攻击者可以通过向服务器发送大量精心构造的SASL认证请求,并精确测量每个请求的响应时间。尽管网络波动会引入噪音,但通过统计学方法(如T检验或计算平均值),攻击者可以显著区分“用户名存在”和“用户名不存在”两种情况的时间特征。利用这一侧信道,攻击者可以逐个字符地爆破出有效的用户名列表。一旦获得有效用户名,攻击者便可针对性地进行密码猜测,极大地降低了认证系统的安全性。修复该漏洞的关键在于修改代码逻辑,确保无论比较结果如何,验证过程所消耗的时间保持一致。