출처 : 메일링리스트
안녕하십니까? 오늘과내일의 홍석범입니다.
최근 들어 리눅스 커널에 몇 가지 보안 버그가 있었지만
대부분 특수한 환경에서의 취약성이었습니다.
그러나 최근 공개된 uselib() 함수에서의 보안 취약성을 통해서
내부의 일반 유저가 root 권한을 획득할 수 있는 취약성이 확인되었습니다.
본 취약성에 대한 정보는 아래와 같습니다.
* 취약한 커널버전
2.2.x : 모든 버전
2.4.x : 2.4.28을 포함한 2.4.29-pre3 까지, 2.4.28 이하 모든 버전
2.6.x : 2.6.10을 포함한 2.6.10 이하 모든 버전
* 취약하지 않은 커널 버전
2.4.x : 2.4.29-rc1
--> 2.4.28 설치후 2.4.29-rc1 으로 패치하여야 함
또는 2.4.28 설치후 http://maphia.flowsecurity.org/patch/uselib-2.4.28.patch 패치
2.6.x : 2.6.10-ac8
2.6.10 설치후 2.6.10-ac8 로 패치하여야 함
* 공격방법
Local exploit이며 remote에서의 공격은 불가합니다.
그러나 최근 php injection등을 통해 일반 권한을 쉽게 획득할 수 있으므로
조처를 취하시는 것이 좋습니다.
아래는 exploit 를 실행하여 성공했을때의 결과입니다.
$./exploit
[+] SLAB cleanup
child 1 VMAs 65527
child 2 VMAs 65527
child 3 VMAs 65527
...
child 18 VMAs 63322
[+] moved stack bfffb000, task_size=0xc0000000, map_base=0xbf800000
[+] vmalloc area 0xdf800000 - 0xfedbb000
Wait... \
[+] race won maps=49205
expanded VMA (0xbfffc000-0xffffe000)
[!] try to exploit 0xe2d25000
[+] gate modified ( 0xffec903c 0x0804ec00 )
[+] exploited, uid=0
sh-2.05b# id
uid=0(root) gid=0(root)
아래는 2.4.29-rc1으로 패치한 후의 실행 결과입니다.
$./exploit
[-] FAILED: open lib (/dev/shm/_elf_lib not writable?) (Permission denied)
$
일부에서는 /dev/shm을 커널에서 삭제하거나 umount를 하면 된다고 하지만
옵션에서 /tmp 등으로 변경할 수 있기 때문에 의미가 없습니다.
만약 패치가 어려운 경우에는 임시로 다음과 같이 해도 되는 것 같습니다.
(공식적으로 확인된 내용은 아니며 단지 저의 테스트 결과일 뿐입니다.)
# chmod 700 /proc/
즉, /proc 디렉토리를 700 으로 설정하도록 하는 것으로 이 설정을 통해서
일반 유저가 ps나 w 를 실행할 수 없는 것 외에 특별히 문제가 되는 것은 없습니다.
이는 공격코드내에서 /proc/slabinfo 정보를 읽어야 하기 때문입니다.
$ ./exploit
[+] SLAB cleanup
child 1 VMAs 65527
child 2 VMAs 65527
child 3 VMAs 65527
child 4 VMAs 65043
[+] moved stack bfffe000, task_size=0xc0000000, map_base=0xbf800000
[+] vmalloc area 0xe0000000 - 0xfffc1000
Wait... \
[-] FAILED: uselib (Cannot allocate memory)
Killed
$
$ ./exploit
[+] SLAB cleanup
[-] FAILED: get_slab_objs: /proc/slabinfo not readable? (Permission denied)
Killed
$
다른 정보/의견 있으시면 공유 부탁드립니다.
감사합니다.
* ino님에 의해서 게시물 이동되었습니다 (2005-01-12 21:08)

ino
05-01-11 16:26
0개
2,636회
uselib() 함수에서의 보안 취약성
댓글목록
등록된 댓글이 없습니다.