被绕过的防线与救命的配置:ACL 在漏洞攻防中的双重角色
字数 2539 2025-08-30 06:50:12
ACL(访问控制列表)在网络安全中的实践指南
一、ACL基础概念与工作原理
1.1 ACL定义与分类
ACL(Access Control Lists)是一种基于包过滤的访问控制技术,它根据预先定义的规则对通过网络设备的数据包进行检查和过滤,决定是否允许通过或拒绝。
主要类型:
- 标准ACL:基于源IP地址,编号为1-99
- 示例:只允许特定IP地址访问网络
- 扩展ACL:基于源/目的IP地址、协议、端口等,编号为100-199
- 示例:允许特定IP通过HTTP协议访问服务器
1.2 ACL工作原理
当数据包到达网络设备时:
- 设备按照ACL规则的顺序逐一检查
- 找到第一个匹配的规则后停止检查
- 如果没有匹配规则,数据包将被默认拒绝(隐含"deny any"规则)
示例配置:
access-list 101 deny tcp host 192.168.1.100 any eq 80
access-list 101 permit ip any any
interface GigabitEthernet0/0
ip access-group 101 in
此配置拒绝来自192.168.1.100的HTTP流量(端口80),允许其他流量。
1.3 相关技术背景
- MPLS(多协议标签交换):基于标签的路由技术,通过短标签而非长地址进行数据转发
- 伪线(Pseudowire, PW):在分组交换网络上模拟点对点连接,常用于MPLS网络中
二、ACL绕过漏洞分析与案例
2.1 CVE-2024-20315(Cisco IOS XR MPLS接口ACL绕过)
漏洞原因:
- MPLS ingress接口启用ACL后,内部接口上下文与查找键(lookup key)关联错误
- 导致数据包通过MPLS标签处理绕过ACL检测
影响:
- 攻击者可访问本应被ACL阻止的资源
- 可能导致数据泄露或服务中断
- 影响版本:7.9、7.10等旧版本
漏洞复现示例:
攻击者构造数据包:
Ethernet / MPLS(label=1000) / IP(src=10.0.0.5, dst=10.1.1.1) / TCP(sport=12345, dport=80) / Payload
尽管有ACL配置:
access-list 101 deny ip host 10.0.0.5 any
access-list 101 permit ip any any
interface MPLS0/0
ip access-group 101 in
数据包仍能绕过ACL检查到达目标。
修复建议:
- 首选方案:升级至IOS XR 7.9.1、7.9.2、7.10.2或更高版本
- 临时措施:移除MPLS ingress ACL,改在egress方向部署ACL策略
no ip access-group 101 in interface GigabitEthernet0/1 ip access-group 101 out
2.2 CVE-2024-20322(Cisco IOS XR PW-Ether接口ACL绕过)
漏洞原因:
- PW-Ether(以太网伪线)接口lookup key处理不当
- 导致ingress ACL失效
影响:
- 攻击者可访问受限资源
- 影响伪线连接的安全性
- 影响版本:7.10、7.11等版本
修复方法:
- 升级至7.10.2或7.11.2+
- 无有效临时措施,建议隔离受影响接口
2.3 CVE-2023-20191(Cisco IOS XR MPLS ingress ACL缺陷)
缺陷点:
- 启用ingress ACL时,对显式空标签(explicit null)或标签解聚合(deaggregation)处理存在缺陷
- ACL deny规则失效,数据包被错误转发
修复建议:
- 升级至7.7.21、7.9.2、7.10.1或应用对应SMU补丁
- 临时移除ingress ACL,改用egress ACL
2.4 CVE-2023-20190(经典ACL压缩功能缺陷)
问题描述:
- ACL压缩模块在编码目标地址范围时异常
- 压缩后的行为与原ACL定义不一致,导致deny条件失效
修复方法:
- 升级至带补丁的版本
- 禁用经典压缩,使用SVR模式ACL:
ipv4 access-list SVR_ACL 10 deny ip host 192.168.100.100 any 20 permit ip any any
三、ACL配置修复案例
3.1 CVE-2021-36934 "SeriousSAM"补丁
背景:
- Windows默认允许用户对SAM、SECURITY、SYSTEM等hive文件在shadow copy中读访问
- 攻击者可能读取敏感信息如用户凭据
ACL修复方案:
icacls C:\Windows\System32\config\*.* /inheritance:e
vssadmin delete shadows /all /quiet
Checkpoint-Computer -Description "After SeriousSAM fix" -RestorePointType MODIFY_SETTINGS
验证方法:
Get-Acl C:\Windows\System32\config\SAM | Select-Object Path, AreAccessRulesProtected
输出AreAccessRulesProtected为False表示继承关闭,ACL修复成功。
3.2 CVE-2020-0674 JavaScript引擎漏洞缓解
背景:
- IE JavaScript引擎漏洞允许远程执行恶意脚本
ACL解决方案:
icacls "%PROGRAMFILES%\Internet Explorer\jscript.dll" /deny "Users:(R)"
icacls "%PROGRAMFILES%\Internet Explorer\jscript.dll" /grant "Administrators:(R,X)"
移除普通用户的读权限,仅允许管理员读取和执行。
四、ACL实践挑战与最佳实践
4.1 当前ACL应用面临的挑战
- 最小权限原则的实现难度:精确配置ACL复杂耗时
- 入站ACL的普遍缺陷:尤其在处理MPLS或伪线接口时
- 配置与底层实现的脱节:固件升级可能导致ACL失效
- 管理复杂性与自动化需求:手动管理低效易出错
- 动态环境与可扩展性:云环境和IoT设备增多增加管理难度
- 性能与安全性的平衡:复杂ACL可能影响网络性能
- 可见性与监控:缺乏日志和监控工具难以发现ACL绕过
4.2 ACL最佳实践
-
遵循最小权限原则:
- 确保ACL规则精确匹配需求
- 为每条规则添加注释
ipv4 access-list SECURE_ACL 10 deny ip host 192.168.1.100 any ! Block malicious host 20 permit tcp any host 192.168.1.200 eq 443 ! Allow HTTPS to server -
优先评估入站与出站策略:
- 在入站ACL存在缺陷的平台优先考虑出站ACL
- 结合防火墙规则增强防护
-
定期审计与测试:
- 每月检查ACL配置有效性
- 使用工具如nmap扫描受限端口测试deny规则
-
及时应用补丁与升级:
- 建立补丁管理流程
- 确保ACL相关漏洞及时修复
-
整合监控与分析工具:
- 部署SIEM系统或NetFlow分析工具
- 实时监控ACL拒绝事件
-
引入自动化管理:
- 使用Ansible、SDN控制器等工具动态调整ACL
- 示例Ansible脚本:
- name: Apply ACL to Cisco IOS XR cisco.iosxr.iosxr_acl: config: acls: - name: SECURE_ACL aces: - sequence: 10 deny: protocol: ip source: host: 192.168.1.100 destination: any: true - sequence: 20 permit: protocol: tcp source: any: true destination: host: 192.168.1.200 port_protocol: eq: 443 state: merged
五、附录:ACL漏洞总结表
| 漏洞编号 | 影响接口 | 主要问题 | 修复版本 | 临时措施 |
|---|---|---|---|---|
| CVE-2024-20315 | MPLS | Lookup key错误,ACL绕过 | 7.9.1, 7.9.2, 7.10.2+ | 使用egress ACL |
| CVE-2024-20322 | PW-Ether | Lookup key错误,ACL绕过 | 7.10.2, 7.11.2+ | 无,需升级 |
| CVE-2023-20191 | MPLS | Explicit-null处理缺陷 | 7.7.21, 7.9.2, 7.10.1+ | 使用egress ACL |
| CVE-2023-20190 | 任意(压缩ACL) | 压缩后deny规则失效 | 最新补丁版本 | 禁用压缩,使用SVR模式 |