1.2 计算机网络脆弱性分析
因特网的设计初衷是在各科研机构间共享资源,因此尽可能地开放以方便计算机间的互联和资源共享,对安全性考虑较少,导致其存在一些固有的安全缺陷,即具有一些容易被攻击者利用的特性。从整体设计上讲,一般认为,因特网的以下几个特性易被攻击者利用,特别是在基于IPv4的因特网中。
1.分组交换
因特网是基于分组交换的,这使得它比采用电路交换的电信网更容易受攻击,主要表现在:所有用户共享所有资源,给予一个用户的服务会受到其他用户的影响;攻击数据包在被判断为是否恶意之前都会被转发到受害者;路由分散决策,流量无序等。
2.认证与可追踪性
因特网没有认证机制,任何一个终端接入即可访问全网(而电信网则不是,有UNI、NNI接口之分),这导致了一个严重的问题就是IP欺骗:攻击者可以伪造数据包中的任何区域的内容然后发送数据包到Internet中。通常情况下,路由器不具备数据追踪功能,因此很难去验证一个数据包是否来自其所声称的地方。通过IP欺骗隐藏来源,攻击者就可以发起攻击而无须担心对由此造成的损失负责。
3.尽力而为(best-effort)的服务策略
因特网采取的是尽力而为策略,即只要是交给网络的数据,不管其是正常用户发送的正常数据,还是攻击者发送的攻击流量,网络都会尽可能地将其送到目的地。把网络资源的分配和公平性完全寄托在终端的自律上,在现在看来,这显然是不现实的。
4.匿名与隐私
网络上的身份是虚拟的,普通用户无法知道对方的真实身份,也无法拒绝来路不明的信息(如邮件)。20年前,美国《纽约客》杂志以黑色幽默方式直指网络虚拟化之弊—“在互联网上,没有人知道你是一条狗。”
5.对全球网络基础实施的依赖
全球网络基础设施不提供可靠性、安全性保证,这使得攻击者可以放大其攻击效力:首先,一些不恰当的协议设计导致一些(尤其是畸形的)数据包比其他数据包耗费更多的资源(如TCP 协议的连接请求SYN包比其他的TCP包占用的目标资源更多);其次,Internet是一个大“集体”,其中存在的很多不安全系统会严重威胁整个网络的安全。
6.无尺度网络
因特网是一种无尺度网络。无尺度网络的典型特征是网络中的大部分节点只和很少节点连接,而有极少数节点与非常多的节点连接。这种关键节点(称为“枢纽”或“集散节点”)的存在使得无尺度网络对意外故障有强大的承受能力(删除大部分网络节点而不会引发网络分裂),但面对针对枢纽节点的协同性攻击时则显得脆弱(删除少量枢纽节点就能让无尺度网络分裂成微小的孤立碎片)。例如,2016年清华大学段海新等人在NDSS 2016会议上提出的CDN Loop攻击可导致多个内容分发网络(Content Delivery Network,CDN)平台瘫痪,进而导致互联网大面积瘫痪。
7.互联网的级联特性
互联网是一个由路由器将众多小的网络级联而成的大网络。当网络中的一条通信线路发生变化时,附近的路由器会通过“边界网关协议(BGP)”向其邻近的路由器发出通知。这些路由器接着又向其他邻近路由器发出通知,最后将新路径的情况发布到整个互联网。也就是说,一个路由器消息可以逐级影响到网络中的其他路由器,形成“蝴蝶效应”。“网络数字大炮”就是针对互联网的这种级联结构发起的一种拒绝服务攻击武器,利用伪造的BGP协议消息攻击路由器,导致网络中几乎所有路由器都被占用,正常的路由中断无法得到修复,最终可导致互联网大面积瘫痪。
8.中间盒子
1984年,J.H.Saltzer,D.P.Reed和D.D.Clark在其论文End-to-End Arguments in System Design中提出了著名的“端到端原则”(End-to-End Arguments):“边缘智能,核心简单”,即互联网的核心应该尽量保持简单,而把复杂的处理都放到端系统上去实现。随着20世纪90年代初以来各种网络应用和服务的蓬勃发展,传统互联网中核心网络功能过于简单的缺陷也开始逐渐引起人们的关注,越来越多的应用需求需要在核心网络中纳入更多的管理和控制功能,“端到端原则”受到严峻挑战,网络中出现了大量的“中间盒子(middle box)”。“中间盒子”由美国UCLA大学的张丽霞教授提出,是指部署在源与目的主机之间的数据传输路径上的、实现各种非IP转发功能的任何中介设备,例如:用于改善性能的DNS 缓存(cache)、HTTP代理/缓存、CDN等,用于协议转换的NAT(Network Address Translation)、IPv4-IPv6转换器等,用于安全防护的防火墙、入侵检测系统/入侵防御系统(IDS/IPS)等不同类型的中间盒子大量被插入互联网之中,如图1-5所示。这些中间盒子有的会对端到端的流量进行拦截、修改,如 NAT、防火墙;有的则已经变成了应用服务的一部分,如CDN、HTTP代理/缓存。中间盒子的出现,背离了传统互联网“核心网络功能尽量简单、无状态”的设计宗旨,从源端到目的端的数据分组的完整性无法被保证,互联网透明性逐渐丧失。此外,由于在端到端通信中加入了第三方,使得通信过程从“端系统←→端系统”变成了“端系统←→中间盒子←→端系统”,这不仅对“端到端原则”构成了挑战,而且在网络中引入了单一故障点和新的网络攻击点,削弱了网络的健壮性和安全性。同时,大量不同厂家实现的中间盒子对同一协议的理解和实现的不一致性也给网络带来了新的安全风险。当今网络中出现的很多网络攻击均是由中间盒子引入的,我们将在后续章节中讨论相关攻击案例。
图1-5 网络中的中间盒子
除了上面讨论的因特网的整体性不足,从安全性的角度来看,TCP/IP体系中的很多协议,如IP、ICMP、TCP、UDP、HTTP、DNS等,也存在可被攻击者利用的缺陷,这些具体协议的脆弱性也将在后续相应章节中介绍。