2020年6月16日,位于以色列的一家专门从事物联网和嵌入式设备安全的JSOF公司警告说,由于严重安全漏洞影响了Treck TCP/IP协议堆栈,全球数亿台物联网设备可能会受到远程攻击。Treck于2020年6月29号已发布最新漏洞更新。深信服安全团队对此漏洞进行分析。
漏洞名称:
CVE-2020-11896:Treck TCP/IP 任意代码执行漏洞
CVE-2020-11898:Treck TCP/IP 信息泄露漏洞
威胁等级:高危
影响范围:Treck TCP/IP < 6.0.1.67
利用难度:困难
漏洞分析
1 相关组件介绍
Treck TCP/IP是一家总部位于美国辛辛那提的软件公司。“Treck”在1997年推出的一套专用于嵌入式系统的TCP/IP 底层Internet协议套件库。通过设计针对内核、定时器、驱动程序、套接字的API接口,Treck TCP/IP协议套件库可以很容易地集成到各种各样的嵌入式产品中。全球很多公司一直在使用这个库,使他们的设备或软件通过TCP/IP协议连接到互联网。
2 漏洞分析
2.1 TCP/IP堆栈介绍
首先介绍Treck TCP/IP使用的2个机制: (1)ipv4报文分片操作在TCP/IP协议中,由于数据链路层MTU(最大传输单元)的限制,当一个IP数据包从一个 MTU 较高的网络传向 MTU 较低的网络时数据包就会被分片成一个个大小小于或等于MTU较低的目标网络的碎片。数据包在传输过程中往往都要经过数个网络,每个网络的 MTU 或许都不同,如果数据包大小比网络的 MTU 大时就进行分片,如果比网络的 MTU 小时则不做操作,也就是说传输过程中数据包可能被多次分片,但不进行重组,重组操作由数据包的最终接收方执行。 (2)IP隧道IP隧道技术允许两个独立网络之间的虚拟点对点链接。它是通过将一个数据包(可能是IP数据包)封装在另一个数据包中实现的,从而使内部数据包具有与外部数据包不同的源地址和目的地址。外部数据包的源地址和目的地址是IP隧道的两端,内部数据包的地址用于在两侧的网络中传输数据。中间的路由器不会考虑封装的数据内容,而链接的两端需要配置隧道协议。入口点需要将原始数据包用外部IP封装,出口点则要解包并检查其中是否存在一个可以在目标网络中发送的标准数据包。根据JSOF对这个漏洞的描述,Treck TCP/IP协议堆栈中的数据包由称为tspacket的数据结构表示,包含另一个重要结构ttUserPacket,以及指向tsSharedData数据结构的指针,一个tspacket与一个数据缓冲区相关联,tspacket包含以下几个涉及漏洞的字段:
例如,如果我们的数据包是ICMP返回请求数据包(Ping),数据将由三层包组成:以太网,其次是IPv4,最后是ICMP。在这种情况下,当以太网层被处理时(在函数tfEtherRecv中),pktuLinkDataPtr指向以太网报头的开始处,然后在移动到下一层之前,使用以下图所示代码进行调整:
2.2 漏洞根本原因
首先了解以下两个字段: IHL(4位):表示IP报头的大小(以双字为单位)。最小值为5(20个字节)。如果有IP选项,则报头长度会变大,最大值为0xf(60字节)。 Total Length总长度(2字节):整个IP数据包的大小,以字节为单位包括报头。函数tfIpIncomingPacket从一些基本的健全性检查开始。除报头校验和外还验证ip_version,data_available,header_length,total_length等字段,如果所有健全性检查均通过,则该函数检查IP报头中指定的总长度是否严格小于数据包的pktuChainDataLength值,如果是则表明实际收到的数据比IP报头中所描述的要多,这时进行微调操作以删除多余的数据。判断方式为:
影响范围
受影响版本: Treck TCP/IP < 6.0.1.67解决方案
1 检测方式
可通过针对代码资产进行核查,看是否使用了Treck的相关代码,并从源代码中查看软件版本是否在受影响范围。针对二进制库文件,可以使用如下命令查看库文件的版本,确定是否使用了受影响的版本。strings 驱动名称 | grep -e "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
若检测当前版本在受影响范围内,则存在上述安全风险。
2 修复建议
TreckTCP/IP最新版本已修复该漏洞,修复版本为6.0.1.67及其后的所有版本。访问该链接获取最新版相关组件: https://treck.com/products/3 深信服检测方案
访问该链接获取深信服检测工具: https://edr.sangfor.com.cn/api/download/scan_tool.zip时间轴
2020/6/16
JSOF发布相关安全警告。
2020/6/29
Treck官方发布漏洞相关软件库更新。
2020/7/1
深信服千里目安全实验室发布漏洞分析文章。