'Samba'에 해당되는 글 1건

  1. 2010.09.16 Samba Buffer Overrun 취약점 (CVE-2010-3069)
0x06 vulnerability2010. 9. 16. 08:44


[출처: Symantec]
 
Samba에 존재하는 원격 버퍼 오버플로우 취약성이 공개되었습니다. Samba 3.5.4 버전에 대해 해당 취약성에 대한 분석을 수행한 결과, 취약한 두 개의 주요 함수가 확인되었습니다. 이 함수들은 dom_sid_parse()와 sid_parse()며, 신뢰되지 않은 데이터에서 Windows Security ID (SID)를 파싱하도록 설계되었습니다.
 
sid_parse() 함수는 "sid->num_auths = CVAL(inbuf, 1);" 구문을 사용해 신뢰되지 않은 데이터에서 값을 읽어 온 후, 해당 값을 검사하지 않고 다음과 같은 for 루프의 제어 값으로 사용합니다:
 
for (i=0;i<sid->num_auths;i++)
sid->sub_auths[i] = IVAL(inbuf, 8+i*4);
 
CVAL 매크로는 버퍼에서 부호 없는 char를 읽은 후, 부호 있는 char "sid->num_auths"로 할당합니다. 이로 인해, 15만 저장하도록 의도된 버퍼에 총 127의 32비트 정수 값이 쓰여지게 할 수 있습니다. 이는, 취약한 버퍼의 근접 메모리를 손상시키는 데 이용될 수 있습니다. dom_sid_parse() 함수도 유사하게 취약합니다. SID를 포함한 데이터가 다수의 '-' 문자를 포함하도록 조작될 경우, num_sub_auths로 불리는 카운터가 증가할 수 있습니다:
 
num_sub_auths = 0;
for (i=0;sidstr[i];i++) {
if (sidstr[i] == '-') num_sub_auths++;
}
 
num_sub_auths가 sub_auths의 최대 값(15)보다 크지 않도록 하기 위한 아무런 경계 검사가 이루어지지 않기 때문에, 다음과 같은 for 루프가 메모리 손상을 발생시킬 수 있습니다:
 
for (i=0;i<num_sub_auths;i++) {
if (sidstr[0] != '-') {
return false;
}
sidstr++;
ret->sub_auths[i] = strtoul(sidstr, &p, 10);
if (p == sidstr) {
return false;
}
sidstr = p;
}
 
해당 취약성들을 이용하기 위한 어떤 공격 경로가 존재할지를 알아내기 위해 어느 정도의 시간을 투자한 후, 우선적으로는 해당 취약성은 SMB_COM_NT_TRANSACT (NT_TRANS) SMB 요청의 하위 명령 NT_TRANSACT_IOCTL을 통해 원격에서 이용할 수 있는 것으로 드러났습니다(이는, 정적 분석만을 통한 결과입니다). 하지만, 다수의 외부 보고서에 따르면, 이러한 메소드를 이용해 해당 취약성을 이용하는 것은 불가능하다고 합니다. 또 다른 공격 경로는 인증 정보를 필요로 하거나 악성 LDAP 서버를 사용해야 하는 것으로 보입니다. 이로 인해, 해당 취약성은 긴급한 위협으로 보이지는 않습니다. 하지만, 취약한 해당 함수에 대한 모든 경로에 대한 조사가 이루어진 것이 아니라는 것을 알아두어야 할 것입니다.
 
취약한 버전의 Samba를 실행 중인 사용자들은 가능한 빨리 벤더가 제공하는 패치를 적용할 것을 권장합니다. Samba 서버들에 대한 액세스가 제어되어야 할 것이며, 신뢰할 수 있는 사용자들에 대한 액세스만이 허용되어야 할 것입니다. 권한 분리 및 chroot jail과 같은 추가적인 종심 방어 기법의 사용도 해당 취약성과 같은 취약성에 대한 성공적인 공격으로 공격자가 입힐 수 있는 피해를 제한하는 데 도움이 될 수 있을 것입니다. 해당 취약성에 대한 추가적인 정보는 다음 참조들에서 확인할 수 있습니다.
 

Buffer Overrun Vulnerability
http://us1.samba.org/samba/security/CVE-2010-3069.html
 
Samba 3.5.5 Available for Download
http://us1.samba.org/samba/history/samba-3.5.5.html


Posted by demantos