Translated message

A translation of this page exists in English.

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