防止网络数据注入攻击的制作方法

文档序号:6654795阅读:212来源:国知局
专利名称:防止网络数据注入攻击的制作方法
技术领域
本发明一般地涉及计算机网络。更具体而言,本发明涉及防止网络中的数据注入攻击。
背景技术
这一部分中描述的方法可以实现,但是并不一定是先前已察觉或已实现的方法。因此,除非这里另有指明,否则这一部分中描述的方法并不是本申请中权利要求的现有技术,也不应当因为被包括在这一部分中而被当作现有技术。
网络已经变为企业和消费者等的重要工具,许多企业和消费者当前依赖于诸如邮件服务器、网站和内容服务器之类的网络资源的恒定可用性。随着网络使用的增加,保护网络免受恶意实体的破坏变得更加重要。例如,拒绝服务(“DoS”)攻击可以剥夺合法用户对网络服务的访问权限,并且已被成功地用来破坏合法用户对诸如Yahoo!和CNN之类的因特网站点的访问。
数据注入攻击可能导致DoS或其他不利影响。一种类型的数据注入攻击利用了传输控制协议(“TCP”)的基本设计,TCP是因特网的基础协议之一,如因特网工程任务组(IETF)请求注解(RFC)793中所定义。在数据注入攻击中,攻击者猜测有效TCP连接的参数值,然后发送包含恶意或伪造的数据有效载荷的伪造片段。如果接收者将这种片段传递给应用,则当应用对数据有效载荷进行操作或执行数据有效载荷时,就会发生故障。
遵从RFC 793并充当数据接收者的TCP的典型实现方式在重组装缓冲器中维护乱序数据,直到接收到任何遗失的片段。接收者针对每个未按正常顺序接收到的指示最后的有效序列号的片段发送确认(“ACK”)消息。发送者将未经确认的片段保存在重传缓冲器中。该过程使得发送者能够迅速重传在传输中丢失的片段,因为这种片段未被确认。
一种类型的TCP数据注入攻击利用了用来管理按乱序到达并且在被传递到TCP以上的逻辑层中的应用之前需要被重新组装成正确顺序的片段的TCP实现方式中的前述机制。边界网关协议(BGP)、超文本传送协议(HTTP)、某些语音协议、多协议标签交换(MPLS)和其他协议使用TCP连接,并且是这些攻击的目标。后果可能是严重的。例如,当路由器的BGP会话被通过关闭相关联的TCP连接而破坏时,路由器将会丢弃其已创建的所有BGP路由,从而实质上导致BGP进程发生故障。结果,BGP进程必须使其自身和网络中的对等路由器之间重新同步,并且在重新同步时段期间,故障路由器不能转发任何流量。
此外,数据注入攻击可能导致向上游进程给出恶意命令、不必要地填充重组装缓冲器、错误地操作其他更高层应用、发起“ACK战争”等等。因此,本领域的研究者的兴趣在于创建某些方式来阻止TCP数据注入攻击,而不会从根本上改变RFC 793中指定的TCP的操作。
成功的攻击必须注入携带着源端口、目的地端口的正确值的TCP片段;对于序列号和ACK号允许了某个值范围。这些值的允许范围是很大的,从而看起来是不可能发动涉及顺次检查每个参数的所有可能值的强力攻击的。但是,在大多数TCP实现方式中,选择有效值的任务是较为简单的,因为在RFC 793中存在某些漏洞。这些漏洞在遵从RFC 793的实现方式中产生了安全性弱点。例如,为新的TCP连接分配32位伪随机值作为初始序列号(ISN)看起来可以防止攻击者以任何实际可行的方式猜测正确的序列号,这是因为可能正确的值的数目是232或近似40亿个值。然而,如果片段的序列号落在可接受值的窗口或范围内,则即使该序列号与下一期望序列号不是精确匹配,遵从RFC 793的传统TCP实现方式也会接受该片段。窗口或范围的大小就字节而言一般与重组装缓冲器相同,并且被用来补偿片段丢失的可能性。在某些TCP实现方式中,允许的序列值的范围可以大到16,384、65,535、或者更大。
其后果是攻击者不需要正确地生成所有32位的序列号以提供接收节点将会接受的号,即使在使用了真随机或伪随机ISN时也是如此。如果允许的序列值的范围足够大,则攻击者可以在实际可行的时间量中通过随机或强力选择猜测出正确序列值的机会大大增加。接收节点建立的窗口越大,黑客执行该攻击就越容易。
此外,大多数实现方式对于初始端口号使用相对较小的值范围,并且仅为每个新连接递增端口号。结果,利用普通的计算资源,攻击者就可以相对容易地猜测出合法TCP连接的两个端点所使用的端口值。
由于大多数TCP实现方式并不测试ACK值是否等于期望ACK值,或者甚至是否在允许的ACK值的范围内,因此会出现另一个弱点。相反,许多实现方式会接受任何携带着大于前一个接收到的ACK值的ACK值的片段,只要序列号在允许的范围内。RFC 793将ACK值定义为范围1至232内的无符号整数。从而,猜测出允许的序列号的攻击者可以通过只尝试两个ACK值-一(1)或232-1(其中之一肯定会被接受),就能成功进行数据注入攻击。
前述折衷的结果是在大多数实现方式中,攻击者理论上可以在(232/窗口大小/2)个片段或大约30,000个片段中将数据注入到连接中。因此,即使是强力攻击也可以利用传统的计算设备相对快速地进行。
用于防止网络DoS重置攻击的方法在Mitesh Dalal等人2004年1月9日提交的题为“Preventing Network Reset Denial of Service Attacks”的未决申请No.NNN、律师案卷号No.50325-0868中有所描述。一种用于解决类似攻击(被称为SYN-RST攻击)的方法在Pritam Shah等人2003年8月14日提交的题为“Detecting network denial of service attacks”的未决申请No.10/641,494中提供,该申请与本申请被转让给同一受让人。Shah等人的方法适合于中间路由器而不是TCP端点设备,但是没有完全解决在本公开中描述的所有问题。


在附图中以示例方式而非以限制方式图示了本发明,在附图中,相似的标号指代类似的元件,在附图中
图1是示出一种用于进行TCP数据注入攻击的技术的消息流程图;图2是示出用于在到达后丢弃数据片段的方法的流程图;图3是示出用于基于重叠从重组装缓冲器中去除伪造的数据片段的方法的流程图;图4是示出图3的操作的示例的框图;图5是示出可以实现实施例的计算机系统的框图。
具体实施例方式
本发明描述了一种用于防止网络数据注入攻击的方法和装置。在下面的描述中,为了说明目的,给出了大量具体细节以提供对本发明的完全理解。但是,本领域技术人员将会清楚,没有这些具体细节也可以实施本发明。在其他实例中,公知的结构和设备以框图形式示出,以避免不必要地模糊本发明。
这里根据下面的大纲描述实施例1.0概述2.0用于防止网络数据注入攻击的方法2.1用于在到达后丢弃数据片段的方法2.2用于基于重叠从重组装缓冲器中去除伪造的数据片段的方法3.0实现机构—硬件概述4.0扩展和替换1.0概述仅作为导论,并且并不是要限制所附权利要求的范围,在本发明中实现了在前述背景技术中提出的需要,以及将从下面的描述中变清楚的其他需要和目的,本发明在一个方面包括一种用于防止网络上的攻击的方法,其中所述攻击包括向发送者和接收者之间的TCP连接中注入伪造的传输控制协议(TCP)片段,该方法包括以下由计算机实现的步骤接收携带ACK值的TCP片段;确定该ACK值是否小于下一个未确认序列值和与TCP连接相关联的最大窗口大小之间的差;以及当该ACK值小于下一个未确认序列值与到目前为止发送的片段总数或与TCP连接相关联的最大窗口大小中较小的那个之间的差时,丢弃TCP片段。
第二种方法包括接收携带序列值的第一TCP片段;确定该序列值是否等于下一个期望序列值;当该序列值等于下一个期望序列值时,确定第一TCP片段中携带的数据是否与重组装缓冲器中先前接收到的一个或多个第二TCP片段中携带的数据重叠;当第一TCP片段与重组装缓冲器中先前接收到的任何数据片段重叠时,丢弃所述一个或多个第二TCP片段。
在其他方面中,本发明包含被配置用来执行前述步骤的计算机装置和计算机可读介质。另外,许多其他的特征和方面将从下面的描述和所附权利要求中变清楚。
2.0用于防止TCP拒绝服务攻击的方法描述了若干种用于防止网络数据注入攻击的方法。第一方法规定丢弃接收到的携带这样的ACK值的片段该ACK值小于下一个未确认序列值减去最大窗口大小。术语“小于”在这里用在可能发生卷绕的无符号整数值的上下文中。这种方法有助于使伪造的注入片段不能进入TCP重组装缓冲器。充当接收者的TCP进程的逻辑只需要有微小改动。在第二种方法中,采用了试探法来检查新到达的片段的序列号,并且当序列号是下一个期望序列号时,则使用新到达的片段并且不考虑重组装缓冲器的内容。此外,如果新到达的片段的数据有效载荷在顺序上重叠已经在重组装缓冲器中的片段,则重组装缓冲器中的重叠片段被认为是伪造的,并且被丢弃。从而,如果第一方法出于某种原因未能防止数据进入重组装缓冲器,则此方法有助于从重组装缓冲器中去除伪造的数据。
2.1用于在到达后丢弃数据片段的方法现参考图1和图2描述用于防止TCP数据注入攻击的第一方法。图1是图示一种用于进行TCP数据注入攻击的技术的消息流程图。图2是图示一种用于在到达后丢弃数据片段的方法的流程图。
图2的用于导致图1的示例所示的消息流程的过程可以实现在一个或多个计算机程序、指令序列或其他软件元素中,这些软件元素由充当TCP连接中的端点的网络元件执行。例如,图2可以实现为路由器、交换机或网络基础结构的其他元件的操作系统的TCP应用或特征的一部分。或者,图2可以实现为由个人计算机、工作站或其他网络末端台站的操作系统容宿的或与之相关联的TCP进程、栈、适配器或代理。
在图1中,发送者102、攻击者104和接收者106代表TCP连接中的端点。发送者102、攻击者104和接收者106可以包括路由器、交换机、集线器、网关、个人计算机、工作站、服务器或者连接到或可以连接到网络或与网络通信的其他设备。攻击者104是将一个或多个有害的或伪造的分段注入到已在发送者102和接收者106之间建立的TCP流或连接中的任何实体。攻击者104可以包括工作站、个人计算机、路由器、交换机或其他处理元件。
发送者102、接收者106和攻击者104加入一个或多个网络。另外,发送者102、接收者106和攻击者104可以处于局域网(LAN)、广域网(WAN)、一个或多个互联网、或者其中使用传输控制协议(TCP)来建立网络元件之间的连接的任何其他种类的网络或其子集中,或者可以通过这些网络被访问。这种网络可以包括附加的网络基础结构元件(如路由器、交换机等)和其他末端台站设备(如工作站、打印机、服务器等)。在一种实现方式中,发送者102、接收者106和攻击者104都通信地耦合到诸如互联网之类的公共分组交换网络。
发送者102、接收者106和攻击者104可以连接到附加的网络元件。其他实施例可以包括比图示情形更少或更多的系统组件。具体而言,在实际系统中可以有任何数目的网络元件。
为了描述图1,假设发送者102和接收者106仅实现RFC 793中所定义的TCP,并且使用4000的窗口大小。发送者102向接收者106发送SeqNo(序列号)为101、ACK值为5005并且具有441字节数据的片段110。接收者106发送具有SeqNo 5005和ACK 543的确认消息112。在本描述中,提到诸如“SeqNo 543”或“ACK 5005”分别是对TCP片段携带有为543的序列号值和为5005的确认值的简称。
接下来,攻击者104发送具有SeqNo 3000、ACK 0x2000000(33,554,432)和256字节恶意数据的片段114。攻击者104是在不知道当前被发送者102和接收者106用于TCP连接的序列号的情况下猜测SeqNo3000的,并且SeqNo 3000是允许的SeqNo值,因为(3000<543+4000)。通常不对ACK值进行窗口大小比较,因此处于2,147,488,649到4,294,967,295以及0到5001的范围中的ACK值都是可接受的。攻击者104还确定或猜测出发送者102和接收者106的网络地址,例如它们的IP地址,以及用于当前连接的端口号。地址和端口值被置于伪造的片段114中,但为清晰起见被省略。由于攻击者104不确定ACK值0x2000000(33,554,432)是否适当,因此攻击者104还发送了具有相同SeqNo 3000但具有ACK值0x82000000(2,181,038,080)的片段116。
在步骤118,接收者106接受片段116,但丢弃片段114,因为其ACK值不可接受。接收者然后通过发送具有SeqNo 5005和ACK 543的片段120来确认片段116。使用SeqNo 5005是因为片段112是接收到的最后一个顺序正确的片段,并且接收者106需要表明它正在等待紧随其后的片段,即使它已经接收到了看起来是从处于流中较远处接收来的片段116。在没有防御方法的情况下,如步骤122中所示,片段116最终被转发到使用、依赖于或执行片段116中的数据的应用,并且可能对其造成危害。
现参考图2,在这里的第一种防止方法中,在步骤202中,接收到TCP片段。在步骤204中,执行测试以确定接收到的片段中携带的ACK值是否小于下一个发送但未确认的序列值(按RFC 793的说法是snduna)减去到目前为止发送的片段的总数或与TCP连接相关联的最大窗口大小中较小的那个的差。在一个实施例中,表达式min(snduna-isn,max windowsize)得出与未确认序列值相比较的值。
最大窗口大小值反映对等体可管理的最大窗口大小。对于特定的片段交换,允许的窗口大小可以被改为另一窗口大小,但是即使发生这种调整,在步骤204的测试中也使用最大窗口大小。从而步骤204对照过去的有效ACK值的窗口来测试接收到的片段的ACK值。要使步骤204得出真性结果,有效ACK值不能比下一个期望序列值晚一个窗口以上。
相反,现有方法容许具有任何在序列值空间的一半以内并且早于下一个未确认序列值的ACK值的片段(假如序列值本身在进入窗口内)。在这种情况下,RFC 793允许接收者忽略ACK。RFC 793只要求如果接收到的ACK值大于接收者所期望的值,则接收者必须发回指定期望ACK值的ACK片段。RFC 793缺少严格的用于处理早于期望值的ACK值的要求,这给攻击者提供了给出将被接受的伪造片段的可能性。
如果步骤204的测试为真,则在步骤206中,片段被丢弃,并且不被转发到应用,或者被置于重组装缓冲器,以便进行可能的重排序和后续转发。如果步骤204的测试为假,则在步骤208中,对接收到的片段执行其他TCP片段处理。
在一种替换方案中,步骤204的测试不允许ACK值落在窗口内,而是测试接收到的TCP片段的ACK值是否确切等于期望ACK值或小于初始窗口的值范围。如果未发现确切匹配,则传入片段被丢弃。这种替换方案可能导致接收者丢弃在其他有效但被延迟的数据之前到达的数据,这是因为当较早的数据到达时,接收者需要发送者尚未遇到的ACK值。结果,这种方法可能迫使发送者执行重传。但是,在已知易受攻击影响的网络环境中,这种缺陷可能是可以接受的,因为它实现了提高攻击抵抗力的益处。
利用前述方法,伪造的片段被保持在重组装缓冲器之外,并且不被转发到伪造片段可能对其造成问题的更高层应用或进程。具体而言,利用本方法,仅当片段的序列号在可接受窗口内并且其ACK值正确的情况下,片段才被接受。
2.2用于基于重叠从重组装缓冲器中去除伪造的数据片段的方法图3是图示一种用于基于重叠从重组装缓冲器中去除伪造的数据片段的方法;图4是示出图3的操作的示例的框图。一般来说,图3提供了一种通过检测片段是伪造的来从TCP重组装缓冲器中去除不正确注入的片段的方法,其中检测出片段是伪造的是因为它们不正确地重叠了与先前接收到的正确确认的片段相关联的数据。
首先参考图3,步骤302-304代表被描述来提供由后续步骤代表的解决方案的上下文的预备步骤。在步骤302中,接收到顺序正确的第一TCP片段。该片段被转发到应用,并且下一个期望序列号值在存储器中被更新。在步骤302中使用术语“第一”是为了表示步骤302的片段发生在步骤304和步骤306的片段之前,但是步骤302的片段可以在TCP连接建立之后的任何时间到达,并不需要是完成TCP握手阶段之后实际接收到的第一个片段。在步骤304中,接收到顺序混乱的第二片段,因此第二片段被存储在重组装缓冲器中。
在步骤306中,接收到第三片段。在步骤308中,执行测试以确定第三片段所携带的SeqNo值是否等于下一期望SeqNo值。步骤308还可以包括核实第三片段的SeqNo与其数据长度之和与重组装缓冲器中的其他片段确切地对齐。如果否,则在步骤309中应用针对乱序片段的传统处理。如果SeqNo值正是下一个期望值,则第三片段被视为来自当前连接中的合法发送者的可信片段。第三片段被视为可信是因为攻击者猜测出并发送确切的下一期望SeqNo值的机率是1/232。
因此,在步骤310中,执行测试以确定第三片段是否与已经在重组装缓冲器中的任何片段重叠。在此上下文中,“重叠”是指第三片段中携带的SeqNo和数据长度之和与重组装缓冲器中的任何片段的SeqNo重叠。在某些情况下,第三传入片段可能与可能来自攻击者的多个片段重叠。如果没有重叠,则在步骤316中,执行缓冲器和第三片段的常规重组装处理。
但是,如果发现重叠,则先前接收到重组装缓冲器中的重叠的片段被视为伪造的片段,并且第三片段被视为真实片段。重叠指示伪造片段已被接收到重组装缓冲器中,这是因为当连续的SeqNo值被与流中的前一片段的数据长度大小相比较时,一组真实片段最终在顺序上将会确切对齐。此外,攻击者需要猜测SeqNo值,因此重叠的存在有力地表明SeqNo已经被猜测出,并且相关联的片段是伪造的。步骤310中发现的重叠可以是完全重叠或部分重叠。在步骤312,从重组装缓冲器中丢弃伪造的片段。
在步骤313中,发送ACK消息,ACK消息携带第三片段的SeqNo。在步骤314中,正常TCP处理继续开始。这种处理可以包括重传,这种重传通过要求发送者重传处于丢弃的伪造片段所覆盖的范围内的数据,来帮助确保重组装缓冲器中只包含有效数据。
现联系图4图说明一个示例。具有SeqNo 201和100字节数据的乱序片段先前已被接收到重组装缓冲器402中,如标号1所示。如标号2所示,下一个期望序列号为101,这就是片段404被视为顺序混乱的原因。
在标号3,片段406到达,其具有SeqNo 101和150字节数据。SeqNo值101正是期望的下一SeqNo值,因此步骤308(图3)的测试对于片段406来说为真。此外,101和150的和为251,这与片段404所携带的值201重叠。由于片段406因其携带确切的下一期望序列号而被视为可信的,因此片段404被视为伪造的并且被丢弃,如标号4所示。然后发送具有SeqNo 251的ACK片段,以确认片段406。
从而,前述方法去除了被不小心接收到重组装缓冲器中的伪造的注入数据片段。该方法可以单独实现,或与此处2.1节的方法结合实现。
3.0实现机构—硬件概述图5是示出可以实现实施例的计算机系统700的框图。优选实施例是利用运行在诸如路由器设备之类的网络元件上的一个或多个计算机程序实现的。从而,在该实施例中,计算机系统700是路由器。
计算机系统700包括用于传输信息的总线702或其他通信机构和与总线702相耦合用于处理信息的处理器704。计算机系统700还包括诸如随机存取存储器(RAM)、闪存或其他动态存储设备之类的主存储器706,其耦合到总线702,用于存储信息和处理器704要执行的指令。主存储器706还可用于存储在处理器704执行指令期间的临时变量或其他中间信息。计算机系统700还包括只读存储器(ROM)708或其他静态存储设备,其耦合到总线702,用于存储静态信息和处理器704的指令。提供了诸如磁盘、闪存或光盘之类的存储设备710,其耦合到总线702,用于存储信息和指令。
通信接口718可以耦合到总线702,用于将信息和命令选择传输到处理器704。接口718是诸如RS-232或RS-422接口之类的传统串行接口。外部终端712或其他计算机系统利用接口714连接到计算机系统700并向其提供命令。运行在计算机系统700中的固件或软件提供终端接口或基于字符的命令接口,从而可以向计算机系统给出外部命令。
交换系统716耦合到总线702,并且具有去往一个或多个外部网络元件的输入接口714和输出接口719。外部网络元件可以包括耦合到一个或多个主机724的本地网络722,或者诸如因特网728之类的具有一个或多个服务器730的全球网络。交换系统716根据公知的预定协议和协定将到达输入接口714的信息流量交换到输出接口719。例如,交换系统716与处理器704协同操作可以确定到达输入接口714的数据分组的目的地,并利用输出接口719将其发送到正确的目的地。目的地可以包括主机724、服务器730、其他末端台站或者本地网络722或因特网728中的其他路由和交换设备。
本发明涉及使用计算机系统700来实现这里的方法。根据本发明的一个实施例,这里的方法的实现方式由计算机系统700响应于处理器704执行包含在主存储器706中的一条或多条指令的一个或多个序列而提供。这些指令可以被从另一计算机可读介质(如存储设备710)读取到主存储器706中。包含在主存储器706中的指令序列的执行使得处理器704执行这里描述的过程步骤。也可以采用多处理布置中的一个或多个处理器来执行包含在主存储器706中的指令序列。在替换实施例中,可以使用硬线电路来替换软件指令或与软件指令相组合以实现本发明。从而,本发明的实施例并不限于硬件电路和软件的任何特定组合。
这里所用的术语“计算机可读介质”指参与向处理器704提供指令以供执行的任何介质。这种介质可以采取许多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质例如包括光盘或磁盘,如存储设备710。易失性介质包括动态存储器,如主存储器706。传输介质包括同轴电缆、铜线和光纤,包括含总线702的线路。传输介质也可以采取声波或光波的形式,例如在无线电波和红外数据通信期间生成的声波或光波。
计算机可读介质的常见形式例如包括软盘、柔性盘、硬盘、磁带或任何其他磁介质,CD-ROM、任何其他光介质,穿孔卡、纸带、任何其他具有孔图案的物理介质,RAM、PROM和EPROM、FLASH-EPROM、任何其他存储器芯片或卡盘,下文中描述的载波,或者计算机可以读取的任何其他介质。
计算机可读介质的各种形式可用于将一条或多条指令的一个或多个序列传输到处理器704以供执行。例如,指令可以首先承载在远程计算机的磁盘上。远程计算机可以将指令加载到其动态存储器中,并利用调制解调器经由电话线发送指令。计算机系统700本地的调制解调器可以接收电话线上的数据,并使用红外发送器来将数据转换为红外信号。耦合到总线702的红外检测器可以接收在红外信号中携带的数据,并将数据置于总线702上。总线702将数据传输到主存储器706,处理器704从主存储器706取得指令并执行指令。主存储器706接收的指令可以可选地在处理器704执行之前或之后存储到存储设备710上。
通信接口718也提供到连接到本地网络722的网络链路720的双向数据通信耦合。例如,通信接口718可以是集成业务数字网络(ISDN)卡或调制解调器,以提供到相应类型电话线的数字通信连接。作为另一个示例,通信接口718可以是局域网(LAN)卡,以提供到兼容LAN的数据通信连接。也可以实现无线链路。在任何这种实现方式中,通信接口718发送并接收电的、电磁的或光信号,这些信号携带了代表各种类型信息的数字数据流。
网络链路720一般经过一个或多个网络提供到其他数据设备的数据通信。例如,网络链路720可以经过本地网络722提供到主机计算机724或由因特网服务供应商(ISP)726操作的数据设备的连接。ISP 726又经过全球分组数据通信网络(现在通常称为“因特网”728)提供数据通信服务。本地网络722和因特网728都使用携带数字数据流的电的、电磁的或光信号。经过各种网络的信号和在网络链路720上并经过通信接口718的信号(这些信号携带去往和来自计算机系统700的数字数据)是传输信息的载波的示例性形式。
计算机系统700可以经过网络、网络链路720和通信接口718发送消息并接收数据,包括程序代码。在因特网示例中,服务器730可以经过因特网728、ISP 726、本地网络722和通信接口718发送针对应用程序的请求代码。根据本发明,一个这种下载的应用程序提供了如这里所述的检测网络数据注入攻击的方法。
处理器704可以在接收时执行所接收的代码,和/或将其存储在存储设备710或其他非易失性存储介质中以供后续执行。以这种方式,计算机系统700可以获得载波形式的应用代码。
4.0扩展和替换在前述说明书中,已参考特定实施例描述了本发明。但是,应当清楚,在不脱离本发明更宽广的精神和范围的前提下,可以进行各种修改和改变。因此,说明书和附图都应当认为是示例性的,而非限制性的。
权利要求
1.一种防止网络上的攻击的方法,其中所述攻击包括向发送者和接收者之间的TCP连接中注入伪造的传输控制协议(TCP)片段,所述方法包括以下由计算机实现的步骤接收携带ACK值的TCP片段;确定所述ACK值是否小于下一个未确认序列值与(a)所述TCP连接中发送的字节的总数或(b)与所述TCP连接相关联的最大窗口大小中较小的那个之间的差;以及当所述ACK值小于下一个未确认序列值与(a)所述TCP连接中发送的字节的总数或(b)与所述TCP连接相关联的最大窗口大小中较小的那个之间的差时,丢弃所述TCP片段。
2.如权利要求1所述的方法,其中所述步骤由充当所述TCP连接中的数据的接收者的端点节点执行。
3.如权利要求1所述的方法,其中所述步骤由网络基础结构元件的操作系统的TCP应用执行。
4.如权利要求1所述的方法,其中所述步骤由个人计算机、工作站或其他网络末端台站的操作系统所容宿的或与之相关联的TCP进程、栈、适配器或代理执行。
5.如权利要求1所述的方法,其中所述最大窗口大小包括所述TCP连接中的端点节点能够管理的最大TCP序列值窗口大小,而不考虑所述TCP连接期间任一端点可能建立的当前窗口大小的任何变化。
6.如权利要求1所述的方法,其中所述确定步骤包括确定所述ACK值是否等于期望ACK值或小于初始序列值窗口的值范围;以及其中所述丢弃步骤包括在所述ACK值等于期望ACK值或小于初始序列值窗口的值范围时丢弃所述TCP片段。
7.一种防止网络上的攻击的方法,其中所述攻击包括向发送者和接收者之间的TCP连接中注入伪造的传输控制协议(TCP)片段,所述方法包括以下由计算机实现的步骤接收携带序列值的第一TCP片段;确定所述序列值是否等于下一个期望序列值;当所述序列值等于下一个期望序列值时,确定所述第一TCP片段中携带的数据是否与重组装缓冲器中先前接收到的一个或多个第二TCP片段中携带的数据重叠;以及当所述第一TCP片段与所述重组装缓冲器中先前接收到的任何数据片段重叠时,丢弃所述一个或多个第二TCP片段。
8.如权利要求7所述的方法,其中所述丢弃步骤丢弃所述重组装缓冲器中的所有TCP片段。
9.如权利要求7所述的方法,其中,当所述第一TCP片段中携带的第一序列值和数据长度的第一总和小于所述第二片段中的任何一个中携带的第二序列值时,所述第一TCP片段中携带的数据与所述重组装缓冲器中先前接收到的所述一个或多个第二TCP片段重叠。
10.如权利要求7所述的方法,其中所述丢弃步骤是在所述第一TCP片段与所述重组装缓冲器中先前接收到的任何数据片段完全重叠时执行的。
11.如权利要求7所述的方法,还包括以下步骤发送确认所述第一TCP片段的数据和序列值的确认消息。
12.如权利要求7所述的方法,其中所述步骤由充当所述TCP连接中的数据的接收者的端点节点执行。
13.如权利要求7所述的方法,其中所述步骤由网络基础结构元件的操作系统的TCP应用执行。
14.如权利要求7所述的方法,其中所述步骤由个人计算机、工作站或其他网络末端台站的操作系统所容宿的或与之相关联的TCP进程、栈、适配器或代理执行。
15.一种用于防止网络上的攻击的装置,其中所述攻击包括发送具有伪造的或有害的数据的伪造的传输控制协议(TCP)片段,所述装置包括用于接收携带ACK值的TCP片段的装置;用于确定所述ACK值是否小于下一个未确认序列值与(a)所述TCP连接中发送的字节的总数或(b)与所述TCP连接相关联的最大窗口大小中较小的那个之间的差的装置;以及用于当所述ACK值小于下一个未确认序列值与(a)所述TCP连接中发送的字节的总数或(b)与所述TCP连接相关联的最大窗口大小中较小的那个之间的差时,丢弃所述TCP片段的装置。
16.如权利要求15所述的装置,还包括用于执行如权利要求2、3、4、5、6、7、8、9、10、11、12、13或14所述的步骤中的任何步骤的装置。
17.一种用于防止网络上的攻击的装置,其中所述攻击包括发送具有伪造的或有害的数据的伪造的传输控制协议(TCP)片段,所述装置包括处理器;所述处理器可访问的一个或多个存储的指令序列,所述指令序列当被所述处理器执行时,使得所述处理器执行以下步骤接收携带ACK值的TCP片段;确定所述ACK值是否小于下一个未确认序列值与(a)所述TCP连接中发送的字节的总数或(b)与所述TCP连接相关联的最大窗口大小中较小的那个之间的差;以及当所述ACK值小于下一个未确认序列值与(a)所述TCP连接中发送的字节的总数或(b)与所述TCP连接相关联的最大窗口大小中较小的那个之间的差时,丢弃所述TCP片段。
18.如权利要求17所述的装置,还包括能够被所述处理器访问的并且在被所述处理器执行时使得所述处理器执行如权利要求2、3、4、5、6、7、8、9、10、11、12、13或14所述的步骤中的任何步骤的指令序列。
19.一种承载一个或多个指令序列的计算机可读介质,所述指令序列用于防止网络上的攻击,其中所述攻击包括发送具有有害的或伪造的数据的伪造的传输控制协议(TCP)分组,并且一个或多个处理器执行所述一个或多个指令序列使得所述一个或多个处理器执行以下步骤接收携带ACK值的TCP片段;确定所述ACK值是否小于下一个未确认序列值与(a)所述TCP连接中发送的字节的总数或(b)与所述TCP连接相关联的最大窗口大小中较小的那个之间的差;以及当所述ACK值小于下一个未确认序列值与(a)所述TCP连接中发送的字节的总数或(b)与所述TCP连接相关联的最大窗口大小中较小的那个之间的差时,丢弃所述TCP片段。
20.如权利要求19所述的计算机可读介质,还包括能够被所述处理器访问的并且在被所述处理器执行时使得所述处理器执行如权利要求2、3、4、5、6、7、8、9、10、11、12、13或14所述的步骤中的任何步骤的指令序列。
全文摘要
本发明公开了用于防止分组交换网络中的TCP数据注入攻击的方法。第一方法规定丢弃接收到的携带这样的ACK值的片段该ACK值小于下一个未确认序列值减去最大窗口大小。这种方法有助于使伪造的注入片段不能进入TCP重组装缓冲器。在第二种方法中,采用了试探法来检查新到达的片段的序列号,并且当序列号是下一个期望序列号时,则使用新到达的片段并且不考虑重组装缓冲器的内容。此外,如果新到达的片段的数据有效载荷在顺序上重叠已经在重组装缓冲器中的片段,则重组装缓冲器中的重叠片段被认为是伪造的,并且被丢弃。从而,如果第一方法出于某种原因未能防止数据进入重组装缓冲器,则此方法有助于从重组装缓冲器中去除伪造的数据。
文档编号G06F15/16GK1906884SQ200580001600
公开日2007年1月31日 申请日期2005年1月11日 优先权日2004年1月16日
发明者阿纳恩萨·拉迈阿, 兰德尔·斯图尔特, 彼得·李, 帕特里克·梅翰 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1