|
커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
|
|
|
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
pront40
가입: 2004년 8월 18일 올린 글: 2 위치: VVT
|
올려짐: 2005.1.24 월, 10:56 am 주제: 모든 리눅스 커널에 또 다른 보안 결함 발견 |
|
|
안녕하세요
sec-info 메일링리스트에 홍석범님이 올린 글입니다.
아래부터 원글입니다.
------------------------------------------------------
안녕하십니까? 오늘과내일의 홍석범입니다.
지난주에 uselib() 함수에서의 보안 취약성을 통해서 로컬의 일반 유저가
root 권한을 획득할 수 있는 취약성에 대해 메일을 드린 적이 있었는데,
며칠 후 다른 종류의 심각한 취약성이 공개되었습니다.
이 취약성은 커널의 page fault handler에서의 race condition 에 의한 것으로
본 취약성을 이용하여 로컬의 일반 유저가 root 권한을 쉽게 획득할 수 있습니다.
자세한 취약성 정보는 아래와 같습니다.
* 취약한 커널
2.4.x 버전 : 2.4.29-rc1 이전 버전(2.4.28 포함)
2.6.x 버전 : 2.6.10
* 취약하지 않은 커널
2.4.x 버전 : 2.4.29-rc2 버전 또는 2.4.29
2.6.x 버전 : 1월 12일 이후의 -ac나 -rc 패치버전
* 취약한 시스템
i386 계열의 SMP(symmetric multiprocessing) 시스템
즉, 단일 CPU를 사용하는 시스템은 본 취약성에 해당하지 않습니다.
그러나, 단일 CPU라도 hyperthreading이 지원될 경우
본 취약성에 해당합니다.
* 테스트 코드
http://packetstormsecurity.nl/0501-exploits/stackgrow.c
위 코드를 다운로드후 컴파일하여 실행하면 취약한지 여부를 확인할 수 있습니다.
## 취약한 경우
$ ./test
[+] in thread 1 (pid = 5791)
[+] in thread 2 (pid = 5792)
[+] rdtsc calibration: 32877
[+] exploiting race, wait...
[+] race won (shift: 572)
[+] kernel might be vulnerable.
## 취약하지 않은 경우
$ ./test
[+] in thread 1 (pid = 731)
[+] in thread 2 (pid = 732)
[+] rdtsc calibration: 35668
[+] exploiting race, wait...
아래는 커널 2.4.28인 SMP 시스템에서 실제 공격코드를 실행했을 때의 결과입니다.
$ ./exploit
[+] in thread 1 (pid = 7382)
[+] in thread 2 (pid = 7383)
[+] rdtsc calibration: 32596
[+] exploiting race, wait...
[+] race won (shift: 539)
bash# id
uid=0(root)
아래는 커널 2.4.29인 SMP 시스템에서 실제 공격코드를 실행했을 때의 결과입니다.
$ ./exploit
[+] in thread 1 (pid = 787)
[+] in thread 2 (pid = 788)
[+] rdtsc calibration: 35626
[+] exploiting race, wait...
[-] unable to exploit race in 30s,
kernel patched or load too high.
* 대응 방법
아래와 같은 3가지 방법이 있을 것 같습니다.
(1) 가급적 최신의 커널인 2.4.29 나 2.6.11-rc-1 등으로 패치/업그레이드 하십시오.
(2) 만약 커널 업그레이드가 여의치 않을 경우 임시로 /proc의 퍼미션을 일반 유저가
읽을 수 없도록 설정하십시오. 이와 같이 설정할 경우 exploit 실행을 막을 수 있습니다.
/proc의 디렉토리를 700 등으로 설정하면 됩니다.
(3) 공격 코드가 실행시에는 root 소유의 suid/sgid 파일을 필요로 합니다.
따라서 시스템내 root 소유의 suid/sgid 파일이 있다면 이 파일의 s비트를 제거하십시오.
suid/sgid는 find / -type f -perm +6000 -ls 를 실행하면 찾을 수 있습니다.
본 취약성에 대한 좀 더 자세한 내용은 아래의 URL 을 참고하시기 바랍니다.
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0001
감사합니다. _________________ 배우는것이 남는것입니다. |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 있습니다 답글을 올릴 수 있습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB © 2001, 2005 phpBB Group
|