
申莹珠 等:基于模型学习的 OpenVPN 系统脆弱性分析
3751
何对网络安全协议的安全性进行评估、尽快尽早发现其协议实现中的脆弱点,保护用户隐私数据安全可靠就显
得格外重要.OpenVPN 是一款基于 OpenSSL 库的应用层虚拟专用通道(VPN),在 TLS 之上建立安全的数据传输
隧道,实现身份认证、数据加密、完整性保护和访问控制.OpenVPN 在真实网络中被广泛部署且常应用于大型
企业之中,对其进行脆弱性分析有着重要的现实意义.
协议脆弱性分析检测技术也叫协议漏洞挖掘技术.传统的漏洞挖掘技术主要依赖于安全人员的人工分析
与测试,而模糊测试技术简单、有效、自动化程度比较高,是目前进行安全测试最有效的方法,被广泛应用于
Web、系统、应用程序的漏洞挖掘.由于它一般属于黑盒测试,通过构造有效的畸形数据进行测试,因此该技术
的代码覆盖率相对较低.2015 年,Gascon 等人
[1]
提出了可对私有协议进行态式黑盒模糊测试的 PULSAR 系统,
通过将模糊测试与协议逆向、模拟自动化执行技术结合,提高了协议状态探索空间,能够挖掘协议实现中的深
层漏洞;2016 年,Ma 等人
[2]
优化测试数据生成方法,提出了使用基于规则的状态机和状态规则树来生成模糊测
试的数据,与传统模糊测试方法相比,使用更少的测试数据找到脆弱点,提高了测试效率;201 7 年,Kang 等人
[3]
提
出了一种结合静态分析和动态分析的智能模糊测试系统,在提高检测有效性的同时,减少了误报率和漏报率.
协议状态机推断是脆弱性分析非常关键的内容.2015 年,de Ruiter 提出了通过模型学习的方法分析具体
TLS 实现的安全性
[4]
,该方法在仅采用黑盒测试的情况下,应用状态机学习自动推断出了协议实现的状态机,并
通过观察推断出来的状态机来检测可能由程序逻辑漏洞引起的异常行为;Beurdouche 等人
[5]
也提出了类似的
通过系统测试非正常 TLS 消息流以检测协议实现中是否存在脆弱性的方法,并在测试中发现了新漏洞.2016
年,Ruiter 带领团队在其前期工作的基础上继续进行了许多相关研究:Ruiter 进一步对过去 14 年以来的
OpenSSL 以及 LibreSSL 的具体实现进行了并行自动化协议状态模糊测试,通过自动化学习,为 145 个不同版本
的服务器端和客户端构建了状态机,并分析相关实现的安全性
[6]
;Verleg 则针对 OpenSSH 推断出了 6 个 SSH 服
务器的状态机,验证了协议状态机推断方法的通用性和可行性
[7]
.同年,So mor ovsky 提出了基于已知漏洞专家库
的分阶段模糊测试框架 TLS-attacker
[8]
,能够提供简单接口支持定制 TLS 消息流,并允许任意修改消息中的内
容,从而实现对 TLS 库安全性的评估.2017 年,Ruiter 团队的 Lenaerts
[9]
对 Ve r l e g 的方法
[7]
进行了改进,将 Ve r l e g
分别对 SSH 协议的 3 个子层协议进行模型学习与检测的方法整合为统一的模型学习与检测,提出了对 SSH 服
务器模型进行状态安全检测的新方法;同年,Veldhuizen 针对 IPSEC 也进行了协议状态机推断并分析
[10]
.
Novickis
[11]
在 2016 年将模型学习的方法扩展到 OpenVPN 协议进行研究分析,试图推断出 OpenVPN 系统的状
态机,但在过程中遇到了许多困难最终并未实现目标.
本文基于模型学习的方法,利用协议状态模糊测试技术,对 OpenVPN 2.0.9 服务器端进行了模型学习和一
致性检测,自动推演出目标系统的协议实现状态机,并对其状态机模型进行化简,对其实现逻辑及过程进行详细
分析;提出了一种状态机时间压缩模型,与原始状态机及同版本 OpenSSL 状态机进行对比分析.结果表明:利用
经化简后的模型可以更方便迅速地识别协议状态机中正常的和特殊的状态迁移路径,从而提高 OpenVPN 脆弱
性检测与分析的效率.
1 基础知识
1.1 OpenVPN 协议
VPN(虚拟专用通道)是企业与企业或者个人与企业之间安全数据传输的隧道,提供了身份认证、数据加密、
完整性保护和访问控制安全服务.OpenVPN 是一款基于 Ope n SSL 库的应用层 VPN 实现,由于其简单易用的特
性而被广泛部署.OpenVPN 依赖 OpenSSL 的安全性,在客户端和服务器端通过指定端口建立 TCP/UDP(一般默
认使用 UDP)安全隧道,然后在该 TLS 隧道中加密通信数据,隧道示意如图 1 所示.
OpenVPN 协议 TLS 模式下的实现
OpenVPN 提供了两种完全不同的认证模式:TLS 模式和预共享静态密钥(PSK)模式.预共享静态密钥模式
使用预共享静态密钥认证身份并加密.TLS 模式采用使用证书的 SSL/TLS 协议进行身份验证、建立安全隧道、
交换对称会话密钥,并使用会话密钥加密数据隧道.TLS 模式由于能够保证安全地分发和更新对称密钥,进而在
评论