[하루한줄] ISC BIND 서버의 정보 유출 취약점
URL
ZDI-21-502: AN INFORMATION DISCLOSURE BUG IN ISC BIND SERVER
Target
- BIND 9.11.31, 9.16.15 이전
Explain
ISC사의 DNS 서버 소프트웨어인 BIND에서 발견된 정보 유출 취약점의 세부 정보가 공개되었습니다.
der_match_tag_and_length()
함수는 태그를 매칭하고 네트워크 패킷에서 길이와 같은 필드를 파싱하는 함수로, 취약점이 발생하는 코드는 아래와 같습니다.
static int der_match_tag_and_length(const unsigned char *p, size_t len, Der_class xclass,
Der_type type, int tag, size_t *length_ret, size_t *size)
{
size_t l, ret = 0;
int e;
e = der_match_tag(p, len, xclass, type, tag, &l);
if (e) {
return (e);
}
p += l;
len -= l;
ret += l;
e = der_get_length(p, len, length_ret, &l); // (1)
if (e) {
return (e);
}
...
}
해당 함수에서 호출하는 der_get_length()
함수의 인자 중 length_ret
은 호출자에서 값에 대한 검증이 이뤄져야 하지만 해당 함수에서는 검증을 하지 않고 반환합니다. der_match_tag_and_length()
함수에서 반환된 검증되지 않은 길이 값은 이후 negTokenInit을 디코딩하는 decode_NegTokenInit()
함수 내의 여러 검사에 사용되어 OOB Access로 이어질 수 있습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.