한국어

About_LINUX

리눅스 보안 2.4.22 커널

2003.12.04 15:26

jun 조회 수:3614

http://www.certcc.or.kr 메일링에서 받은 내용 입니다.
안녕하십니까? 오늘과내일의 홍석범입니다.


### 리눅스 커널(kernel)에 심각한 보안 결함 발견 ###

2.4.23을 제외한 모든 리눅스 커널(2.4.22 포함)에 심각한 보안 결함이
발견되어 일반유저가 root 권한을 획득할 수 있는 취약성이 발견되었습니다.
이 취약성을 통해 얼마전 debian project 관련 서버가 해킹을 당하였는데,
이는 일반유저인 한 개발자의 id 로 로그인 후 상위 권한(uid 0 ) 을 획득하였다고 합니다.
이 공격코드에 대해 자세히 알려지지는 않았지만 알려진 바로는
대략 다음과 같습니다.

* 본 취약성은 do_brk() 함수에서 발생하는데, 이 함수는 프로세스의 메모리
  heap 을 관리하는 역할을 하며 만약 "ulimit -d" 로 일반유저의 data segment size 를
  제한할 경우 임시 방편이 될 수 있는 것으로 알려져 있습니다.
  그러나, 다른 몇 가지 방식으로도 공격이 가능하므로 근본적으로는
  2.4.23 으로 업그레이드 할 것을 권장합니다.
* 이미 underground 에서는 공격코드가 일부 공유되었다고 합니다.
   따라서 public 으로 공개되는 것은 시간문제일 것입니다.
* intel 기반의 H/W 인 경우만 본 취약성에 영향을 받으며
   Sun H/W 는 영향을 받지 않는다고 알려져 있습니다.
* Grsecurity 등을 설치하였을 경우에도 영향을 받는다고 알려져 있습니다.
* 커널의 취약성이므로 본 취약성은 배포판에 관계없습니다.  

본 취약성에 대해서는 아래의 URL 을 참고하시기 바랍니다.

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0961
http://rhn.redhat.com/errata/RHSA-2003-392.html
http://www.zdnet.com.au/newstech/security/story/0,2000048600,20281486,00.htm
http://www.securitytracker.com/alerts/2003/Dec/1008343.html



### bind 8.x 의 negative cache poisoning 취약성 발견 ###

bind 8.x 버전에서 악의적인 공격자가 DNS 서버에 negative cache poisoning 이
가능함으로써 특정 도메인에 대한 잘못된 Cache 정보를 전달하여 DoS 공격을
수행할 수 있습니다.
이에 대해 bind 8.3.x 사용자는 8.3.7 로, bind 8.4.x 사용자는 8.4.3 으로
업그레이드하실 것을 권장합니다.

예) named 버전정보 확인방법.
# named -v
BIND 9.2.1

[참고] cache poisoning 공격에 대응하기 위해

(1) cache poisoning 공격이 쉬운 것은 아니지만 그렇다고 불가능한 것은 아닙니다.
실제로 bind 4.x 는 말할 것도 없고 bind 8.x 버전에서는 negative 뿐만 아니라
positive cache poisoning 공격도 가능하며 공격툴도 공개되어 있습니다.
(2) bind 8.x 가 bind 9.x에 비해 cache poisoning 에 취약하다고 할 수 있는 근거는
cache poisoning 공격의 원리를 이해하면 알 수 있습니다.
cache poisoning 을 위해서는 source ip / source port /transaction id 만 위조하면
되는데,  앞의 두개는 쉽게 위조 가능하며 transaction id 도 16비트(1-65535까지)이므로
bind 8.x 의 경우 순차적으로 변화하는 특성을 이용하면 쉽게 추측가능하다는 것입니다.
bind 9.x 의 경우 애초부터 보안을 고려하여 design 되었고, 또한 transaction id 가
random 하게 변화하므로, cache poisoning 이 매우 어렵습니다.
또한 bind 의 대안으로 개발중인 djbdns 의 경우  transaction id 뿐만 아니라
source port 도 random 하게 변화하므로 cache poisoning 이 가장 어려운 것으로 알려져 있습니다.
그러나 몇가지 표준을 따르지 않는 문제가 있으므로 bind 9.x 로 사용하실 것을 권장합니다.
(3) cahce poisoning 은 원리상 recursion(순환질의)이 허용된 서버에서만
공격할 수 있습니다. 따라서 recursion 을 허용할 필요가 없다면
ip 대역을 엄격하게 제한하실 것을 권장합니다. 아래의 경우 recursion 을 허용할 ip로
100.100.100.100 및 192.168.1.0/24 대역으로 제한한 예입니다.

options {
        allow-recursion {100.100.100.100; 192.168.1.0/24; };
};

IP 대신 TSIG(Transaction SIGnatures)를 이용하여 인증할 수도 있습니다.  

아예, recursion 을  허용할 필요가 없다면 아래와 같이 차단하는 것이 좋습니다.

options {
        allow-recursion {none;};
};

또는,  
options {
         recursion no;
};

본 취약성에 대해서는 아래의 URL을 참고하시기 바랍니다.

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0914
http://www.kb.cert.org/vuls/id/734644




감사합니다.