【每日安全资讯】潜伏11年的Linux内核提权漏洞曝光

漏洞编号

CVE-2017-6074

漏洞概述

Linux内核近日又曝出权限提升漏洞,该漏洞可追溯至2005年,漏洞影响Linux操作系统主要发行版本,包括Redhat、Debian、OpenSUSE和Ubuntu。利用该漏洞,攻击者可以从低权限进程中进行内核代码执行。目前已知受影响的最老版本是2.6.18(2006年9月),不过该漏洞可能在先前的版本中已经存在,或许从支持DCCP开始(2005年10月的2.6.14)就已经存在问题了。

在Seclists.org发布该漏洞的作者Andrey Konovalov表示,很快就会放出PoC,在此期间给予修复时间。

安全研究员Andrey Konovalov最近用Syzkaller fuzzing工具,发现了DCCP协议实现中的Linux内核漏洞,漏洞潜伏时间超过10年。

DCCP协议

DCCP协议是面向消息的传输层协议,可最小化数据包报头带来的开销和终端处理的工程量。该协议可建立、维护和拆卸不可靠连接的数据流以及对不可靠数据流进行拥塞控制。
该DCCP双重释放漏洞可允许本地低权限用户修改Linux内核内存,导致拒绝服务(系统崩溃),或者提升权限,获得系统的管理访问权限。

漏洞详情

这是个UAF漏洞:在IPV6_RECVPKTINFO开启的情况下,内核解析DCCP协议的流程中判断已经收到了DCCP_PKT_REQUEST返回包,就会释放解析过程使用的SKB地址。(“DCCP protocol implementation freed SKB (socket buffer) resources for a DCCP_PKT_REQUEST packet when the IPV6_RECVPKTINFO option is set on the socket.”)

按现在的实现,解析DCCP协议的流程中如果dccp_v6_conn_request有返回值,就会通过dccp_rcv_state_process中的__kfree_skb释放掉解析过程中收到了DCCP_PKT_REQUEST返回包的SKB地址。但是,如果IPV6_RECVPKTINFO开启的情况下编译内核,skb地址就会被存储在ireq->pktopts,而dccp_v6_conn_request中的引用计数会增加,这样skb就仍然会被使用。直到dccp_rcv_state_process进程中才会被释放。

攻击者使用某些内核堆喷射技术就能控制任意对象,并用任意数据重写其内容。如果重写过的对象中包含任何可触发的函数指针,攻击者便可在该内核中执行任意代码。

这个漏洞并不是远程代码执行漏洞,所以攻击者必须拥有系统本地账户,才能利用该漏洞。

两个月前,Linux内核也曝出了类似的提权漏洞CVE-2016-8655,该漏洞可以追溯到2011年,低权限本地用户利用Linux内核af_packet实现中的竞争条件,可获得root权限(漏洞详情:http://www.freebuf.com/vuls/122152.html)。

修复方案

手动修复:调用consume_skb,而非跳转discard并调用__kfree_skb。

更详细的修复方案请点击这里。如果你是高级Linux用户,那么可以应用补丁,重新构建内核,或者等待发行商发布更新。

来源:freebuf.com

更多资讯

  1. 俄国防部首次承认黑客部门存在 多国忧大选遭攻击
  2. Swift语言恶意勒索软件出现:面向macOS伪装成破解工具
  3. 2016年每秒出现6个新病毒,近500万台电脑遭强制加密勒索
  4. 窃取敏感信息新招数:将硬盘闪烁和耳机变成突破口
(信息来源于网络,安华金和搜集整理)

最后编辑于:2017/2/24作者: 安华金和

安华金和

安华金和专注于数据库安全领域,由长期致力于数据库内核研发和信息安全领域的专业资深人员共同创造,是国内领先的,提供全面的数据库安全产品、服务和解决方案服务商,覆盖数据库安全防护的事前检查、事中控制和事后审核,帮助用户全面实现数据库安全防护和安全合规。