• Linux Keyring refcount 内核提权漏洞(CVE-2016-0728)

    日期:2016-01-20 | 分类:Linux安全

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/riusksk-logs/336939370.html

    原始的漏洞分析文章参见:“ANALYSIS AND EXPLOITATION OF A LINUX KERNEL VULNERABILITY (CVE-2016-0728)”
    http://perception-point.io/2016/01/14/analysis-and-exploitation-of-a-linux-kernel-vulnerability-cve-2016-0728/
     
    此次漏洞的问题出现在linux密钥管理keyrings上,在创建新会话去覆盖旧会话时,没有对旧数据进行清理,导致内存泄露(引用计数refcount),通过整数溢出refcount为0,导致keyring对象释放,再使用IPC发送消息,用与keyring对象大小相等的内存块去填充free的对象空间,修改已释放的keyring对象中的revoke函数指针,使其指向用户空间的自定义函数,通过它来执行commit_creds(prepare_kernel_cred(0)),就相当于执行shellcode,从而实现Root提权。
     
    整个利用过程如下:
    内存泄露 =》 整数溢出 =》Use After Free =》 篡改函数指针指向shellcode=》实现提权
     
    cve_2016_0728
    分享到: