◆褚蕾蕾 竺 德
网络协议二义性及其带来的安全问题研究
◆褚蕾蕾 竺 德
(安徽大学网络信息中心 安徽 230601)
网络协议规范了网络交互过程中进行数据交换的规则、标准和约定,是计算机网络的基础组成部分。然而,网络协议内部不同字段包含不同含义,且不同字段的组合多种多样,在网络协议规范中对不同字段组合出现的情况并没有给出明确的处理方式,这就导致了不同厂商、不同研究机构处理结果的不同,即出现了网络协议二义性。本文中,作者梳理了从网络层到应用层三类重要协议(IP、TCP、HTTP)的二义性研究成果,并对TCP序列号带来的信息泄露、隐蔽端口扫描等问题进行实验验证。实验结果表明,网络协议二义性确实能够带来一系列安全问题,需要引起足够的重视。
IP协议;TCP协议;HTTP协议;网络协议二义性
网络协议是不同计算机之间通信共同遵守的规则、标准和规范,它定义了两台计算机之间如果想要建立成功的通信所必须进行的步骤、必须进行的数据交换和数据格式,是计算机网络的基础。
网络协议分为不同的字段,每个字段都有明确的含义。随着时代的发展,有些字段已经失去了原有的意义。然而,为了与旧系统保持最大的兼容,网络协议往往保留了这些字段,有些可能赋予了新的含义。
每种网络协议的字段数量不同,字段内可能的取值也不相同。网络协议往往只规范字段正确的取值方式,对于不正确的取值如何处理,网络协议却大多都没有明确的说明,不同厂商在实现的时候也大多根据自身情况来做,并没有形成统一的行业规范,这就导致了网络协议错误处理的不一致性。一般情况下普通用户会认为这种不一致性不会带来严重的危害。然而网络中恶意攻击者和不同厂商网络中间件的存在,让这种不一致性所带来的处理路径的差异会进一步放大,就有可能给普通用户带来严重的安全威胁。
在本文中,作者梳理了20多年来由于网络协议二义性所产生的攻击手段,内容横跨网络层、传输层和应用层,充分展示了网络协议二义性给计算机网络和网络用户带来的潜在威胁。同时作者进一步研究了常用的简单邮件传输协议SMTP,对协议头部字段进行分析和实验,对不同供应商测量二义性的存在。实验结果表明,SMTP协议头部存在网络二义性,可能给收件人带来潜在的安全威胁。
按照计算机网络体系结构七层模型的划分,IP协议工作在网络层,主要负责端到端或(路由)节点到(路由)节点间网络数据包的传输。IP协议是计算机网络最古老的协议之一,最早可以追溯到1974年。图1是IP头格式,由RFC 7910约定和实现。
图1 IP头格式信息
在IP头中,TTL字段主要用来标识报文在网络中的生存周期。最初协议设计的时候,TTL是以时间为单位计数的,每过一秒钟TTL值减一。然而在实际实现过程中,按时间计数变成了按经过网络中转设备的跳数计算,每经过一个网络中转设备,TTL的值必须减一。如果某个报文TTL的值为0,该报文将被直接丢弃,并向源地址发送目标不可达的ICMP消息。这样做的目的,是为了避免某个报文由于找不到合适的路由或者路由算法形成环路以后在网络中循环传递而过度占用网络资源。TTL长度是8bit,因此该字段能够设置的值范围是0~255。
然而,利用TTL字段的特性,攻击者可以精心构造攻击报文,使网络检测设备与报文接收设备收到的内容不同,从而逃避网络检测。考虑如图2的网络情况。
假设攻击者到中间网络防护设备的TTL跳数为10,网络防护设备后面经过一个网络中转设备连接受害者主机。那么,攻击者将能够通过挑选不同的TTL值(这里可以挑选10或11,使得部分报文在经过网络防护设备或网络中转设备后,由于TTL减为0,报文自动丢弃),导致防火墙收到报文内容完全不同于受害者主机收到的内容,逃避网络防护设备的检测。
图2 IP头TTL字段攻击