主要观点:在 Robur 实施 OpenVPN™兼容的 MirageVPN 软件时发现两个安全问题 CVE-2024-28882 和 CVE-2024-5594,详细介绍了 OpenVPN 协议中的控制通道消息相关内容及安全漏洞。
关键信息:
- 控制通道消息:
EXIT
、RESTART
、HALT
用于通知客户端断开连接;PUSH_REQUEST
/PUSH_REPLY
用于服务器向客户端传递配置选项;AUTH_FAILED
(未详细说明)。 - 漏洞:服务器接收
EXIT
消息后会重新安排断开连接定时器,导致客户端可通过反复发送EXIT
消息无限延迟断开连接;在处理PUSH_REPLY
时,buf_parse
函数会将 NUL 字节视为分隔符,可导致任意字节被注入为配置指令行。 - 修复:将数据按 NUL 字节分割以获取控制通道消息,并拒绝包含非法字符的消息,但对于
AUTH_FAILED
消息易创建无效消息。
重要细节: - OpenVPN 协议通过 TLS 隧道协商密钥材料和配置选项,控制通道消息在单个 TLS 记录帧中发送,以 NUL 字节终止。
- 客户端可通过管理接口的
client-kill
命令发送EXIT
消息,恶意客户端可利用此延迟断开连接。 buf_parse
函数的实现细节及在处理PUSH_REPLY
时的问题。- 漏洞发现过程及相关代码分析,包括对 OpenVPN 源代码的研究和实验。
- 资金来源及对开源项目的影响。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。