CVE-2016-8655,af_packet Linux 內核通殺提權漏洞淺析

簡單寫一下思路 這個東西需要namespace方面的支援,
首先open socket , 一連串路徑(packet_set_ring()->init_prb_bdqc()->
prb_setup_retire_blk_timer()->prb_init_blk_timer()->
prb_init_blk_timer()->init_timer())後產生 timer object, 搶著在socket close.
之前控制po->tp_version 使其走其他路徑搶先free timer object.
這時候用add_key來heap sprey 覆蓋 被free的time object.
內核攻擊老司機都懂, 被蓋掉的time object裡面已經放了 我們事先準備好的
time object 其內部function pointer已經被我們hijacked.
從user mode 調用 hijacked function in time object.
這時候可以從user mode call hijacked function得到root.

summary :
0x0. race condition -> UAF. 在這牛逼的時代, 不算新。
0X1. vsyscall的利用 (跟vDSO差不多), and set_memory_rx().
0X2. 改用add_key()來做heap spraying. 有別於以往科恩(Keen Team)用sendmmsg來heap spraying.
0x3. 安卓上可利用 gid=3004/AID_NET_RAW 建立AF_PACKET sockets
(mediaserver) and can trigger the bug.

Ref:
http://seclists.org/oss-sec/2016/q4/607

寫的倉促 歡迎討論指教.

时间: 2024-12-21 17:59:16

CVE-2016-8655,af_packet Linux 內核通殺提權漏洞淺析的相关文章

第一章 Linux內核簡介

1. Linux是類Unix系統,但他不是Unix. 儘管Linux借鑑了Unix的許多設計並且實現了Unix的API(由Posix標準和其他Single Unix Specification定義的),但Linux沒有像其他Unix變種那樣直接使用Unix的源代碼. 2. Linux系統的基礎是內核.C庫.工具集和系統的基本工具,如登錄程序和Shell. 3. 操作系統是指在整個系統中負責完成最基本功能和系統管理的那些部分.這些部分應該包括內核.設備驅動程序.啓動引導程序.命令行Shell或者其

第十章 內核同步的方法

原子操作 1. 原子操作可以保證指令以原子的方式執行--執行過程不被打斷. 2. 兩個原子操作絕對不可能併發地訪問同一個變量.大多數體繫結構會提供支持原子操作的簡單算數指令,即使沒有,也會爲單步執行提供鎖內存總線的指令,確保其他改變內存的操作不會同時發生. 3. 原子操作分爲兩種,一種是針對整數的,另一種是針對單獨的位. 4. 針對單獨位的操作,提供了一套原子操作和一套非原子操作,非原子操作函數的特點函數名字前綴多了兩個下劃線.比如test_bit()對應的非原子形式是__test_bit().

第二章 從內核出發

1. 內核源碼樹的根目錄描述 目錄 描述 arch 特定體繫結構的代碼 block 塊設備IO層 crypto 加密API Documentation 內核源碼文檔 drivers 設備驅動程序 firmware 使用某些驅動程序而需要的設備固件 fs VFS和各種文件系統 include 內核頭文件 init 內核引導和初始化 ipc 進程間通訊代碼 kernel 像調度程序這樣的核心子系統 lib 通用內核函數 mm 內存管理子系統和VM net 網絡子系統 samples 示例,示範代碼

第九章 內核同步介紹

1. 隨着2.6版內核的出現,Linux內核已經發展成搶佔式內核,如果不加保護,調度程序可以在任何時刻搶佔正在運行的內核代碼,重新調度其他的進程執行 2. 臨界區或者臨界段:訪問和操作共享數據的代碼段 3. 如果兩個執行線程(指代的是任何正在執行的代碼,如一個在內核執行進程.一個中斷處理程序或者內核線程)處於同一個臨界區中同時執行,就成它是競爭條件(race conditions) 4. 避免併發和防止競爭條件稱爲同步(synchronization). 5. 忙等待:反覆處於一個循環中,不斷檢

Linux下安裝Oracle database內核參數設置

參考:1529864.1 ************************************************** RAM                                  Swap Space Between 1 GB and 2 GB       1.5 times the size of RAM Between 2 GB and 16 GB      Equal to the size of RAM More than 16 GB                

基於tiny4412的Linux內核移植 --- 实例学习中断背后的知识(2)

作者:彭东林 邮箱:[email protected] QQ:405728433 平台 tiny4412 ADK Linux-4.9 概述 前面一篇博文基於tiny4412的Linux內核移植 --- 实例学习中断背后的知识(1)结合示例分析了一下新版kernel引入设备树和irq domain后中断幕后的一些知识,其中的示例只是使用gpio中断的一种方式,此外,还有一种,就像博文 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(1)中描述的那样,这种实现方式又是如何进行的呢

马哥2016全套视频 linux运维视频教程

马哥2016全套视频 linux运维视频教程 linux培训视频 http://edu.51cto.com/course/course_id-5524.htmlhttp://edu.51cto.com/course/course_id-5537.htmlhttp://edu.51cto.com/course/course_id-5538.html 马哥linux全套视频 linux运维视频 linux运维培训视频 http://edu.51cto.com/course/course_id-553

linux CVE-2019-14287 Sudo提权漏洞

CVE-2019-14287 sudo介绍 sudo,也就是以超级管理员身份运行(superuser do)的意思.sudo 是 Linux 中最常使用的重要实用程序之一,它功能十分强大,几乎安装在每一款基于 UNIX 或 Linux 的操作系统上,也是这些操作系统的核心命令.作为一个系统命令,普通用户可通过它以特殊权限来运行程序或命令(通常以 root 用户身份运行命令),而无需切换使用环境. § sudo能够限制用户只在某台主机上运行某些命令. § sudo提供了丰富的日志,详细地记录了每个

脏牛Linux本地提权漏洞复现(CVE-2016-5195)

学习该漏洞的原因: 总是看到圈子里一位老哥发文章使用这个漏洞来提权,进过测试发现centos比较难提取,而Ubuntu是比较好提权的. 漏洞范围: Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复) 危害: 低权限用户利用该漏洞可以在众多Linux系统上实现本地提权 简要分析: 该漏洞具体为,get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空