Badlock: 针对 Samba 的 SAMR 和 LSA 协议 man-in-the-middle 攻击(CVE-2016-2118)
Red Hat 产品安全团队已意识到用在 Microsoft Windows Active Directory 架构的基于 DCE/RPC 的 SAMR 和 LSA 协议里的一个协议漏洞。我们已为这个问题分配了 CVE-2016-2118。
注意:这是一个协议方面的问题,它影响到所有实现这个协议的应用程序,包括 Samba - CVE-2016-2118 和 Microsoft Windows - CVE-2016-0128。
背景资料
DCE/RPC 是用来定义 API 及跨网络协议的远程过程调用机制规格。Security Account Manager(SAM)远程协议(客户端到服务器)为帐户存储或包含用户和组的目录提供管理功能。该协议可为本地及远程 Microsoft Active Directory 域显示“帐户数据库”。本地安全认证(域策略)远程协议是用来管理不同机器和域的安全策略。这个协议可启用远程策略管理方案,但有少数情况例外。SAMR 和 LSA 协议均基于 DCE 1.1 RPC 协议。
这些协议通常包含在所有 Windows 安装以及每一台 Samba 服务器中。它们用于维护 Security Account Manager 数据库。这适用于所有角色(例如:standalone、domain controller 或 domain member)。
攻击描述及影响
任何一个由客户端启动、到服务器的已验证 DCE/RPC 连接都可能被 man-in-the-middle 攻击者用来模拟授权用户攻击该服务器中的 SAMR 或者 LSA 服务。结果是攻击者可获取 Security Account Manager 数据库的读取/写入权限,这样就会暴露所有密码及可能的敏感信息。
客户端选择的应用程序协议、验证类型(如:Kerberos 或者 NTLMSSP)及验证等级(NONE、CONNECT、SIGN 或 SEAL)在此均无关紧要。man-in-the-middle 攻击者可以将授权等级降级为 CONNECT 并接管该连接。
Red Hat Enterprise Linux server 及 Red Hat Gluster Storage 中附带的 Samba 软件包的所有版本均会受此漏洞影响。Red Hat 产品安全团队已将这个问题评级为‘重要’ Important。
受影响的配置
以 Samba 服务器为域成员的 Active Directory 架构会受此漏洞的影响。man-in-the-middle 攻击者会拦截域成员和域控制器之间的 DCE/RPC 通讯并获得和已验证用户相同的权限。攻击者可以查看或修改 AD 数据库内部的秘密信息(包括用户密码哈希值)或关闭重要的服务。
任何配置为文件或打印服务器的 Samba 服务器也会受此漏洞的影响。攻击者会可能利用这个漏洞来修改文件或目录的用户权限。
迁移
在应用包含修复的软件包之前不使用私有帐号来访问 SMB/CIFS 服务可以降低风险。限制对物理硬件(控制台、服务器)的管理性访问,使验证不涉及任何网络通讯。
解决方案
产品 | 组件 | 安全建议 |
---|---|---|
Red Hat Enterprise Linux 5 | samba (3.0) | RHSA-2016:0621 |
Red Hat Enterprise Linux 5 | samba3x (3.6) | RHSA-2016:0613 |
Red Hat Enterprise Linux 6 | samba (3.6) | RHSA-2016:0611 |
Red Hat Enterprise Linux 6 | samba4 (4.2) | RHSA-2016:0612 |
Red Hat Enterprise Linux 7 | samba (4.2) | RHSA-2016:0612 |
Red Hat Gluster Storage 3 (EL6) | samba (4.2) | RHSA-2016:0306 |
Red Hat Gluster Storage 3 (EL7) | samba (4.2) | RHSA-2016:0306 |
致谢
Red Hat 愿籍此机会感谢 Samba 项目组报告这个问题,特别是首先发现这个问题的 Stefan Metzmacher(SerNet)。
其他事项
这个漏洞的安全更新在 smb.conf
里引入了一个新的选项:
allow dcerpc auth level connect (G)
这个选项控制 DCE/RPC 服务是否可与下列内容一起使用:
DCERPC_AUTH_LEVEL_CONNECT ,它提供验证,但不能实现每条消息的完整性(SIGN),也不能保护隐私(SEAL)。
某些接口,如具有硬编码默认值 ‘no’ 的 samr、lsarpc 和 netlogon。
具有硬编码默认值 ‘yes’ 的 epmapper、mgmt 和 rpcecho。
可以对每个接口名称覆盖的行为(例如 lsarpc
netlogon、samr、srvsvc、winreg, 或 wkssvc),只要指定
'allow dcerpc auth level connect:interface = yes'.
这个选项为任何特定实现的限制产生优先级。
例如:
* drsuapi 和 backupkey 协议要求 DCERPC_AUTH_LEVEL_PRIVACY。
* dnsserver 协议要求 DCERPC_AUTH_LEVEL_INTEGRITY。
默认值:allow dcerpc auth level connect = no
示例:allow dcerpc auth level connect = yes
常见问题
** 我是否需要在我的架构中更新 Samba 服务器以及 Samba 客户端?**
您至少要更新 Samba 服务器。因为 Badlock 是一个协议漏洞,根据 Samba 架构的配置,服务器和客户端都可能会受影响。Red Hat 安全团队建议客户将两者都更新。
** 更新软件包是否会破坏运行旧的 Samba 版本的当前客户端?**
这个安全建议收紧了用于配置 Samba 的安全选项。当更新了 Samba 服务器却没有更新客户端时,这可能会破坏相关配置。您可以回退到旧的不安全的选项来保持互用性,例如在 ‘smb.conf’ 文件里设置:allow dcerpc auth level connect = yes,但既然这会导致某些攻击途径,Red Hat 产品安全团队强烈建议不要这样做。
我的 Samba 服务器实例没有与任何 Windows 域连接,这是否还会影响到我?
是的,如果管理性用户使用非安全的客户端和 Samba 服务器通讯,或者使用安全客户端与不安全的 Samba 服务器通讯,man-in-the-middle 攻击者都可能利用这个漏洞。
我已更新了 Samba 服务器和客户端,我需要重启任何服务吗?
不需要,当在您的系统应用更新时,smb 服务将自动重启。
加密可以保护我不受这个 MITM 攻击吗?
SMB 协议默认只加密凭证和命令,而文件是以明文进行传输的。我们推荐在对安全和隐私敏感的场合里使用加密来保护所有通讯。Samba 3.2 里添加了加密,但仅适用于 Samba 客户。Microsoft 在 Windows 8 和 Windows Server 2012 里添加了对 SMB 3.0 加密的支持。然而,这两种类型的加密都只保护 SMB 协商和命令完成后的通讯,如文件传输。这个阶段涉及上面强调的漏洞。虽然 Samba/SMB 加密是最佳实践,但还不足够防范这个漏洞。
参考
http://badlock.org/
Comments