目录

简介

2024年7月7日，安全研究人员披露了RADIUS协议中的以下漏洞：CVE-2024-3596:RFC 2865下的RADIUS协议易受路径上攻击者的伪造攻击，攻击者可以利用针对MD5响应身份验证器签名的selected-prefix collision attack修改任何其他响应的任何有效响应（Access-Accept、Access-Reject或Access-Challenge）。他们在https://www.blastradius.fail/pdf/radius.pdf上发表了一篇文章，详细描述了他们的发现，展示了对未使用Message-Authenticator属性的流的成功响应伪造。

有关受此漏洞影响的思科产品的最新列表以及包含修复程序的版本，请访问：https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-radius-spoofing-july-2024-87cCDwZ3。本文将介绍一般缓解技术以及它们如何适用于某些（但不是全部）思科产品，具体内容请参阅各个产品文档。作为思科的旗舰RADIUS服务器，身份服务引擎将详细介绍。

背景

此攻击利用MD5中利用冲突的MD5选择前缀攻击，使得攻击者能够在修改响应数据包的现有属性的同时向RADIUS响应数据包添加其他数据。演示的示例是将RADIUS Access-Reject更改为RADIUS Access-Accept的能力。这是可能的，因为RADIUS默认情况下不包含数据包中所有属性的哈希。RFC 2869确实添加了Message-Authenticator属性，但当前仅在使用EAP协议时才需要包含它，这意味着对于任何非EAP交换(其中RADIUS客户端(NAD)不包括Message-Authenticator属性)，都可能出现CVE-2024-3596中描述的攻击。

缓解

消息验证器

1)RADIUS客户端必须包含Message-Authenticator属性。

当网络接入设备(NAD)在Access-Request中包含Message-Authenticator属性时，身份服务引擎将在所有版本中生成的Access-Accept、Access-Challenge或Access-Reject数据包中包含Message-Authenticator。

2)RADIUS服务器必须强制接收Message-Authenticator属性。

仅仅在Access-Request中包含消息身份验证器是不够的，因为攻击使在消息身份验证器转发到RADIUS服务器之前从Access-Request中删除消息身份验证器成为可能。RADIUS服务器还必须需要NAD在访问请求中包含消息身份验证器。这不是身份服务引擎的默认设置，但可以在允许的协议级别（在策略集级别应用）启用。Allowed Protocols配置下的选项是“Require Message-Authenticator” for all RADIUS Requests”：

身份服务引擎中的允许协议选项

与Allowed Protocols配置需要Message-Authenticator但Access-Request不包含Message-Authenticator属性的策略集的身份验证将被ISE丢弃：

在RADIUS服务器要求之前验证是否需要发送消息身份验证器非常重要，因为这不是一个协商的属性，NAD在默认情况下发送消息或将其配置为发送消息。Message-Authenticator不是ISE报告的属性之一，数据包捕获是确定NAD/Use Case是否包括Message-Authenticator的最佳方法。ISE在Operations -> Troubleshoot -> Diagnostic Tools -> General Tools -> TCP Dump下内置了数据包捕获功能。请记住，同一NAD的不同用例可以包括或不包括消息验证器。

以下是包括Message-Authenticator属性的Access-Request的示例捕获：

Radius access-request中的Message-authenticator属性

以下是不包含消息身份验证器属性的Access-Request的示例捕获：

使用TLS/IPSec加密

保护RADIUS的最有效的长期解决方案是加密RADIUS服务器和NAD之间的流量。与仅依赖MD5-HMAC派生的消息验证器相比，这增加了隐私性和更强的加密完整性。如果可在RADIUS服务器和NAD之间使用上述任何选项，则取决于支持加密方法的两端。

业内对RADIUS的TLS加密使用的广泛术语包括：

- “RadSec” — 指RFC 6614

- “RadSec TLS” — 指RFC 6614

- “RadSec DTLS” — 指RFC 7360

必须以受控的方式推广加密，因为TLS加密有性能开销，而且需要考虑证书管理。证书也必须定期更新。

DTLS上的RADIUS

数据报传输层安全(DTLS)作为RADIUS的传输层由RFC 7360定义，它使用证书对RADIUS服务器进行相互身份验证，然后NAD使用TLS隧道加密完整的RADIUS数据包。传输方法仍为UDP，需要在RADIUS服务器和NAD上部署证书。请记住，当通过DTLS部署RADIUS时，必须严格管理证书到期和替换，以防止过期的证书中断RADIUS通信。ISE支持ISE到NAD通信的DTLS，自ISE 3.4起，RADIUS代理或RADIUS令牌服务器不支持通过DTLS的RADIUS。许多充当NAD的Cisco设备(例如运行IOS-XE®的交换机和无线控制器)也支持DTLS上的RADIUS。

TLS上的RADIUS

RADIUS的传输层安全(TLS)加密由RFC 6614定义，将传输更改为TCP并使用TLS完全加密RADIUS数据包。通常以Eduroam服务为例。自ISE 3.4起，不支持基于TLS的RADIUS，但许多作为NAD的Cisco设备都支持它，例如运行IOS-XE的交换机和无线控制器。

IPsec

身份服务引擎对ISE和NAD之间的IPSec隧道提供本地支持，也支持终止IPSec隧道。这是一个不错的选项，其中不支持RADIUS over DTLS或RADIUS over TLS，但应谨慎使用，因为每个ISE策略服务节点仅支持150个隧道。ISE 3.3及更高版本不再需要IPSec许可证，现在可在本地使用。

部分缓解

RADIUS分段

将RADIUS流量分段到管理VLAN和安全的加密链路，例如可以通过SD-WAN或MACSec提供。这种策略不会将攻击风险降至零，但可以大大减少漏洞的攻击面。当产品推出消息验证器要求或DTLS/RadSec支持时，这可以作为一种很好的停止间隙措施。此漏洞需要攻击者成功通过RADIUS通信实现中间人(MITM)，因此，如果攻击者无法通过该流量进入网段，攻击将不可行。这仅是部分缓解的原因是，网络配置错误或网络部分受到危害可能暴露RADIUS流量。

如果无法对RADIUS流量进行分段或实施加密附加功能，以防止在有风险的数据段上成功执行MITM，例如：IP源保护、动态ARP检测和DHCP监听。还可以使用其他基于身份验证流类型的身份验证方法，例如TACACS+、SAML、LDAPS等。

身份服务引擎漏洞状态

下表介绍自ISE 3.4起，可用于使身份验证流针对Blast-RADIUS进行保护的内容。要总结一下，以下三项必须适用于仅使用消息验证器而不使用DTLS/RadSec/IPSec加密的流，以便该流不易受攻击：

1)网络接入设备必须发送Access-Request中的Message-Authenticator属性。

2)RADIUS服务器必须要求Access-Request中的Message-Authenticator属性。

3)RADIUS服务器必须使用Access-Challenge、Access-Accept和Access-Reject中的Message-Authenticator属性进行响应。

请参阅CSCwk67747，当ISE充当RADIUS客户端时，它会跟踪更改以关闭漏洞。

ISE作为RADIUS服务器

ISE作为RADIUS客户端

ISE作为RADIUS客户端更新

作为RADIUS客户端的ISE增强功能包含在版本中：3.1补丁10、3.2补丁8、3.3补丁5、3.4补丁2、3.5及更高版本(通过CSCwk6747)。在补丁或升级后，创建的任何新资源都将默认使用新的、更安全的配置。必须修改现有资源，才能使用更安全的补丁或升级后配置。已添加新的复选框：“响应时需要消息验证器”，如果选中该复选框，则消息验证器具有双重用途：ISE将始终发送消息身份验证器，如果收到没有消息身份验证器的响应，ISE将失败身份验证。行为如下：

案例

NAD在请求中包含消息验证器

NAD在请求中不包括消息验证器

修补/升级前

ISE 将向RADIUS令牌、外部RADIUS服务器或CoA发送消息身份验证器

ISE不会向RADIUS令牌、外部RADIUS服务器或CoA发送消息身份验证器

修补/升级后，未选中“响应时需要消息验证器”复选框。

ISE 将向RADIUS令牌、外部RADIUS服务器或CoA发送消息身份验证器

ISE不会向RADIUS令牌、外部RADIUS服务器或CoA发送消息身份验证器

修补/升级后，选中“响应时需要消息验证器”复选框。

ISE 将向RADIUS令牌、外部RADIUS服务器或CoA发送消息身份验证器

ISE 将向RADIUS令牌、外部RADIUS服务器或CoA发送消息身份验证器

RADIUS令牌服务器

在RADIUS令牌服务器配置的Authentication选项卡下添加了一个新复选框：“Message Authenticator Required On Response”：

选中此框后，如果收到RADIUS响应但没有消息身份验证器，则故障消息将记录到可通过实时日志或RADIUS身份验证报告访问的详细身份验证日志中：

**注意：整体身份验证仍可基于策略配置通过，通过身份验证可能匹配意外策略。

外部 RADIUS 服务器

新增的复选框：“响应时需要消息验证器”已添加到外部RADIUS服务器配置：

选中此框后，如果收到RADIUS响应但没有消息身份验证器，则故障消息将记录到可通过实时日志或RADIUS身份验证报告访问的详细身份验证日志中：

**注意：整体身份验证仍可基于策略配置通过，通过身份验证可能匹配意外策略。

授权更改(CoA)

在授权更改(CoA)抽屉下对网络设备配置文件进行了CoA更改：

“Send Message-Authenticator”选项是以前的一项功能，新选项是“Message-Authenticator Required on response”。无论是否选中“发送消息身份验证器”，如果响应时需要消息身份验证器(Message-Authenticator Required on response),ISE都将发送消息身份验证器属性。现有配置保留了“发送消息验证器”。如果NAD在CoA响应中不包括消息身份验证器，则将在实时日志中可用的详细身份验证报告中看到以下错误：

**注意：CoA在NAD上可能成功，即使在ISE上记录失败，因为NAD可能已经处理了CoA，但在响应中不包括消息身份验证器。

无法修改默认的“思科提供的”网络设备配置文件，要使用新选项，可以复制网络设备配置文件，并在复制的配置文件上启用设置。然后，需要为网络设备分配新创建的网络设备配置文件。这样做是为了通过引入ISE和现有NAD之间的不兼容性来降低补丁或升级后导致网络中断的风险。如果正在使用现有的用户定义配置文件，则建议复制该配置文件，并在对现有网络设备配置文件进行更改之前，使用该配置文件测试网络上每种设备类型的至少1种。