시스템관리자의 쉼터 커피닉스 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

가입없이 누구나 글을 쓸 수 있습니다. 공지사항에 대한 댓글까지도..




BBS >> 설치, 운영 Q&A | 네트웍, 보안 Q&A | 일반 Q&A || 정보마당 | AWS || 자유게시판 | 구인구직 || 공지사항 | 의견제시
모든 리눅스 kernel에 또다시 보안결함 발견

 
글 쓰기   답변 달기    커피닉스, 시스템 엔지니어의 쉼터 게시판 인덱스 -> *NIX / IT 정보
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
bird72



가입: 2003년 9월 24일
올린 글: 77

올리기올려짐: 2004.2.20 금, 4:12 pm    주제: 모든 리눅스 kernel에 또다시 보안결함 발견 인용과 함께 답변

안녕하세요...

또 취약점이 커널에서 발견이 되었네요...

빨리 빨리 패치하세요...

아래는 cert.co.kr의 메일링 리스트입니다.

코드:

안녕하십니까? 오늘과내일의 홍석범입니다.

한달여전에 발견된 리눅스 커널의 메모리 관리 코드인 mremap 에서의  취약성에 이어
이번에는 같은 코드에서 return value 를 체크하지 않는 문제로 인하여 일반유저 권한으로
local 에서 root 권한을 획득할 수 있는 심각한 취약성이 발견되었습니다.
 
이로써 금번까지 3달 연속 약 한 달을 주기로 심각한
리눅스 커널 취약성이 발견되고 있습니다.

12월초순 : do_brk() 함수에서의 취약성       (2.4.22 이하 버전 취약)
1월 중순 : mremap 에서 bound 체킹 취약성 (2.4.23 이하 버전 취약)
2월중순 : mremap 에서 return value 취약성  (2.4.24 이하 버전 취약)

이번 취약성 역시 현존하는 모든 리눅스 커널에 해당하며
취약한 버전과 안전한 버전은  각각 다음과 같습니다.

-------------------------------------------------------------
               취약한 버전                                   |     패치버전
-------------------------------------------------------------
   * 커널 2.2.25 를 포함한 2.2.25 이전 버전      --> 패치버전 미제공 
   * 커널 2.4.24 를 포함한 2.4.24 이전 버전     --> 2.4.25
   * 커널 2.6.2 를 포함한 2.6.2 버전                --> 2.6.3
--------------------------------------------------------------

참고로 금번 취약성과 관련된 패치는 아래와 같습니다.

--- linux-2.4.20/mm/mremap.c~   2004-02-05 00:17:20.000000000 +0000
+++ linux-2.4.20/mm/mremap.c    2004-02-05 00:22:32.000000000 +0000
@@ -305,7 +305,9 @@
                if ((addr <= new_addr) && (addr+old_len) > new_addr)
                        goto out;

-               do_munmap(current->mm, new_addr, new_len);
+               ret = do_munmap(current->mm, new_addr, new_len);
+               if (ret && new_len)
+                       goto out;
        }

        /*
@@ -313,9 +315,11 @@
         * the unnecessary pages..
         * do_munmap does all the needed commit accounting
         */
-       ret = addr;
        if (old_len >= new_len) {
-               do_munmap(current->mm, addr+new_len, old_len - new_len);
+               ret = do_munmap(current->mm, addr+new_len, old_len - new_len);
+               if (ret && old_len != new_len)
+                       goto out;
+               ret = addr;
                if (!(flags & MREMAP_FIXED) || (new_addr == addr))
                        goto out;
                old_len = new_len;


커널소스 다운로드 : ftp://ftp.kr.kernel.org/pub/linux/kernel/

만약 rpm 으로 커널을 패치하시려면 각각 아래의 URL 을 참고하시기 바랍니다.

* 레드햇 9.0
https://rhn.redhat.com/errata/RHSA-2004-065.html

* 레드햇 7.2 / 7.3/ 8.0 (곧 제공될 예정)
http://download.fedoralegacy.org/

참고로, 아래 URL 에서는 레드햇 7.2/7.3/8.0 에 대해 유료로 rpm 패치를 제공하고 있군요.
http://transition.progeny.com/


패치가 종료된 후 시스템이 취약한 지 여부는 다음과 같이 확인 가능합니다.
(단지, Proof Of Concept 일 뿐 시스템에 영향을 주지는 않습니다.)

소스코드 다운로드 : http://www.security.nnov.ru/files/mremap_poc_2.c

$ gcc -o mremap_poc_2 mremap_poc_2.c                  //컴파일


## 취약한 커널 버전(2.4.24)의 경우

$ ./mremap_poc_2
mmap: Cannot allocate memory
created ~65530 VMAs
now mremapping 0x3FFE5000 at 0x3FFE1000Segmentation fault

이후 dmesg 또는 /var/log/messages 파일을 확인하면 다음과 같은
로그가 보이게 됩니다.

$ dmesg | tail -n 15  또는 tail -15 /var/log/messages

kernel BUG at mmap.c:1188!
invalid operand: 0000
CPU:    0
EIP:    0010:[<c0123201>]    Not tainted
EFLAGS: 00010287
eax: 3ffe2000   ebx: cead2140   ecx: cead3ec0   edx: cead3f60
esi: cead2124   edi: cead20e0   ebp: cead2140   esp: cf6b1f48
ds: 0018   es: 0018   ss: 0018
Process mremap_poc_2 (pid: 24785, stackpage=cf6b1000)
Stack: cead2140 cead2124 cead20e0 00000002 00000002 c0127f84 ce3be780 c0127ff4
       ce3be780 cead2140 cf6b0000 00001000 3ffe5000 ce3be79c ce3be780 3ffe2000
       cf6b0000 cead20e0 cead3f00 c01280ab 3ffe5000 00001000 00001000 00000003
Call Trace:    [<c0127f84>] [<c0127ff4>] [<c01280ab>] [<c01086e7>]

Code: 0f 0b a4 04 01 e7 1e c0 8b 7c 24 10 8b 74 24 14 8b 5c 24 18


## 취약하지 않은 커널 버전(2.4.25)의 경우

$ ./mremap_poc_2
mmap: Cannot allocate memory
created ~65530 VMAs
now mremapping 0x3FFE5000 at 0x3FFE1000
kernel may not be vulnerable

dmesg 에 아무런 로그가 남지 않음.


본 취약성에 대한 자세한 내용은 아래의 URL 을 참고하시기 바랍니다.

http://www.isec.pl/vulnerabilities/isec-0014-mremap-unmap.txt
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0077




감사합니다.


_________________
ilovesusu


bird72 가 2004.2.20 금, 5:09 pm에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기 MSN 메신저
gnobus



가입: 2003년 9월 25일
올린 글: 24

올리기올려짐: 2004.2.20 금, 5:08 pm    주제: Re: 모든 리눅스 kernel에 또다시 보안결함 발견 인용과 함께 답변

흐미.. 자꾸 왜 이런댜..
저야 뭐 나오는 족족 너 잘 만났다 하면서 업그레이드해서 리부팅 해 버리니까 전혀 문제될 것이 없지만 서버 운영자들은 머리 좀 아프겠습니다. Smile
이러다가 뭘 모르는 사람들이 리눅스에 대한 안 좋은 인식을 갖게 될까 걱정스럽습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
applewhy



가입: 2004년 4월 18일
올린 글: 9

올리기올려짐: 2004.4.18 일, 4:29 pm    주제: 인용과 함께 답변

레드헷을 처음 깔아봤는데 레드헷에서 제공되는 업데이터 프로그램으로도

새 커널을 갱신할수 있는건가요?
위로
사용자 정보 보기 비밀 메시지 보내기 MSN 메신저
123
손님





올리기올려짐: 2004.9.03 금, 1:21 am    주제: 123 인용과 함께 답변

Cool Laughing Crying or Very sad Idea Question Twisted Evil [b][i]12312312312[quote]123[code]123[list]23[list=]3[img]3[/img][url]3123123[embed]123[/embed]
위로
이전 글 표시:   
글 쓰기   답변 달기    커피닉스, 시스템 엔지니어의 쉼터 게시판 인덱스 -> *NIX / IT 정보 시간대: GMT + 9 시간(한국)
페이지 1 중 1

 
건너뛰기:  
새로운 주제를 올릴 수 있습니다
답글을 올릴 수 있습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB © 2001, 2005 phpBB Group