ISC는 2021년 4월 28일 BIND 9 보안 취약점 3건을 공개했습니다. 하나는 GSS-TSIG에서 쓰는 SPNEGO 구현의 버퍼 오버플로(buffer overflow)이고, 나머지 둘은 손상된 증분 영역 전송(IXFR)과 DNAME 레코드 처리 중 어서션 검사 실패(assertion failure)로 named가 종료되는 문제입니다. 세 건 모두 원격에서 악용할 수 있으며, ISC는 현재 실제 공격 사례는 파악하지 못했다고 밝혔습니다. 수정 버전은 BIND 9.11.31, 9.16.15, 9.17.12(개발 브랜치)이며, Supported Preview Edition은 9.11.31-S1, 9.16.15-S1입니다.
한눈에 보기
| 번호 | 내용 | 심각도 | 영향 버전 | 수정 버전 |
|---|---|---|---|---|
| CVE-2021-25216 | GSS-TSIG에서 쓰는 SPNEGO 구현의 버퍼 오버플로 | High (CVSS 8.1: 32비트 / 7.4: 64비트) | 9.5.0 ~ 9.11.29 / 9.12.0 ~ 9.16.13 / 9.11.3-S1 ~ 9.11.29-S1 / 9.16.8-S1 ~ 9.16.13-S1 / 9.17.0 ~ 9.17.1 | 9.11.31 / 9.16.15 / 9.11.31-S1 / 9.16.15-S1 |
| CVE-2021-25214 | 손상된 수신 IXFR로 named 비정상 종료 | Medium (CVSS 6.5) | 9.8.5 ~ 9.8.8 / 9.9.3 ~ 9.11.29 / 9.12.0 ~ 9.16.13 / 9.9.3-S1 ~ 9.11.29-S1 / 9.16.8-S1 ~ 9.16.13-S1 / 9.17.0 ~ 9.17.11 | 9.11.31 / 9.16.15 / 9.17.12 / 9.11.31-S1 / 9.16.15-S1 |
| CVE-2021-25215 | DNAME 처리 중 어서션 검사 실패로 named 종료 | High (CVSS 7.5) | 9.0.0 ~ 9.11.29 / 9.12.0 ~ 9.16.13 / 9.9.3-S1 ~ 9.11.29-S1 / 9.16.8-S1 ~ 9.16.13-S1 / 9.17.0 ~ 9.17.11 | 9.11.31 / 9.16.15 / 9.17.12 / 9.11.31-S1 / 9.16.15-S1 |
건별 내용
CVE-2021-25216: GSSAPI SPNEGO 버퍼 오버플로
BIND가 GSS-TSIG의 보안 정책 협상에 쓰는 자체 SPNEGO(Simple and Protected GSSAPI Negotiation Mechanism) 구현에서 버퍼 오버플로 취약점이 발견되었습니다. 기본 설정에서는 취약한 코드 경로가 노출되지 않습니다. 그러나 tkey-gssapi-keytab이나 tkey-gssapi-credential 옵션을 명시적으로 설정한 서버는 영향을 받습니다. 이런 설정은 Samba 연동이나 Active Directory 도메인 컨트롤러와 함께 쓰는 환경에서 흔합니다. 64비트 빌드에서는 버퍼 과다 읽기(buffer over-read)로 서버가 종료될 수 있고, 32비트 빌드에서는 서버 종료와 함께 원격 코드 실행(remote code execution)까지 가능할 수 있습니다. ISC는 MIT·Heimdal Kerberos 라이브러리가 표준 SPNEGO 구현을 제공한다는 이유로, 4월 릴리스부터 모든 지원 브랜치에서 자체 SPNEGO 구현을 제거했습니다.
CVE-2021-25214: 손상된 수신 IXFR로 named 비정상 종료
증분 영역 전송(IXFR) 스트림에 영역 꼭대기(apex)가 아닌 소유자 이름을 가진 SOA 레코드가 들어 있으면, 이를 받은 named가 해당 영역의 SOA 레코드를 영역 데이터베이스에서 실수로 삭제할 수 있습니다. 그러면 다음 SOA 갱신(refresh) 질의 때 어서션이 실패해 named가 종료됩니다. 공격자에게서 영역 전송을 받는 서버라면 원격으로 악용될 수 있습니다.
CVE-2021-25215: DNAME 처리 중 어서션 검사 실패
DNAME 레코드(RFC 6672)를 처리하는 과정의 결함으로, 같은 RRset을 응답(ANSWER) 섹션에 두 번 이상 추가하려다 어서션 검사가 실패해 named가 종료될 수 있습니다. 권한(authoritative) 서버는 영역 데이터베이스에 있는 DNAME 레코드로, 재귀(recursive) 서버는 권한 서버에 질의하는 과정에서 받은 레코드로 영향을 받습니다. ISC에 따르면 현재 유지 중인 브랜치(9.11, 9.11-S, 9.16, 9.16-S, 9.17)를 포함해 모든 BIND 9 버전이 해당되며, 알려진 우회 방법은 없습니다.
운영자가 할 일
- 업그레이드: 현재 버전과 가장 가까운 수정 버전으로 올리십시오. 9.11.31, 9.16.15, 9.17.12가 있고, Supported Preview Edition은 9.11.31-S1, 9.16.15-S1입니다. CVE-2021-25215는 우회 방법이 없으므로 업그레이드가 유일한 대응입니다.
- GSS-TSIG 사용 여부 확인(CVE-2021-25216): 설정에
tkey-gssapi-keytab이나tkey-gssapi-credential이 있는지 확인하십시오. 특히 Samba·Active Directory 연동 서버와 32비트로 빌드한 서버는 우선 조치 대상입니다. 다른 방식으로 동적 업데이트를 인증할 수 있다면 GSS-TSIG를 쓰지 않는 것으로도 이 취약점을 피할 수 있습니다. - 빌드 환경 점검: 수정 버전에는 ISC 자체 SPNEGO 구현이 없습니다. 따라서 GSS-TSIG를 쓰려면 시스템에 관련 라이브러리와 헤더 파일(MIT 또는 Heimdal Kerberos 등)이 있어야 합니다. GSS-TSIG를 쓰지 않는다면
./configure에--without-gssapi를 주어 빌드할 수 있습니다. - IXFR 임시 조치(CVE-2021-25214): 바로 업그레이드할 수 없다면
options,zone,server블록 중 필요한 곳에request-ixfr no;를 설정해 증분 영역 전송을 끄면 문제가 되는 어서션이 실행되지 않습니다. 영역 전송을 받는 상대 서버가 신뢰할 수 있는지도 함께 점검하십시오.
원문을 한국어로 번역·요약한 글입니다. 정확한 내용은 원문을 확인해 주세요. AI의 도움을 받아 작성하고 담당자가 검토했습니다.