ISC는 2023년 6월 21일 BIND 9 보안 취약점 3건을 공개했습니다(사전 통지는 6월 14일). 세 건 모두 재귀 리졸버(recursive resolver)로 동작하는 named에 영향을 주고, 심각도는 High, CVSS 점수는 7.5이며, 원격으로 악용할 수 있습니다. 공격자는 named를 비정상 종료시키거나 메모리를 고갈시켜 서비스 거부(DoS)를 일으킬 수 있습니다. 세 건 모두 원문 기준으로 현재 알려진 실제 악용 사례는 없습니다. 수정 버전은 9.16.42, 9.18.16, 9.19.14와 Supported Preview Edition 9.16.42-S1, 9.18.16-S1입니다.
한눈에 보기
| 번호 | 내용 | 심각도 | 영향 버전 | 수정 버전 |
|---|---|---|---|---|
| CVE-2023-2911 | stale-answer-client-timeout 0 설정에서 recursive-clients 할당량을 초과하면 named가 비정상 종료될 수 있음 | High (CVSS 7.5) | 9.16.33 ~ 9.16.41 / 9.18.7 ~ 9.18.15 / 9.16.33-S1 ~ 9.16.41-S1 / 9.18.11-S1 ~ 9.18.15-S1 | 9.16.42 / 9.18.16 / 9.16.42-S1 / 9.18.16-S1 |
| CVE-2023-2828 | 설정한 캐시 크기 제한(max-cache-size)을 크게 초과할 수 있음 | High (CVSS 7.5) | 9.11.0 ~ 9.16.41 / 9.18.0 ~ 9.18.15 / 9.19.0 ~ 9.19.13 / 9.11.3-S1 ~ 9.16.41-S1 / 9.18.11-S1 ~ 9.18.15-S1 | 9.16.42 / 9.18.16 / 9.19.14 / 9.16.42-S1 / 9.18.16-S1 |
| CVE-2023-2829 | synth-from-dnssec 사용 시 잘못된 형식의 NSEC 레코드로 named가 비정상 종료될 수 있음 | High (CVSS 7.5) | 9.16.8-S1 ~ 9.16.41-S1 / 9.18.11-S1 ~ 9.18.15-S1 (Supported Preview Edition만 해당) | 9.16.42-S1 / 9.18.16-S1 |
건별 내용
CVE-2023-2911: recursive-clients 할당량 초과 시 named 비정상 종료
stale-answer-enable yes;와 stale-answer-client-timeout 0;을 함께 설정한 리졸버에서 recursive-clients 할당량에 도달하면, 만료 응답 제공(serve-stale) 관련 조회가 이어지면서 named가 루프에 빠지고 스택 오버플로(stack overflow)로 비정상 종료될 수 있습니다. 공격자는 특정 질의를 보내 이 상황을 일으킬 수 있습니다. ISC 내부 테스트에서 발견되었으며, 원문에 따르면 stale-answer-client-timeout 옵션을 지원하는 BIND 9.11-S 버전은 취약하지 않습니다.
CVE-2023-2828: 캐시 크기 제한 초과로 인한 메모리 고갈
재귀 리졸버는 캐시 크기가 max-cache-size의 7/8에 이르면 캐시 정리 알고리즘(cache-cleaning algorithm)으로 만료되었거나 가장 오래 쓰이지 않은 RRset을 지웁니다. 그런데 특정 RRset을 특정 순서로 질의하면 이 알고리즘의 효과가 크게 떨어져 설정한 제한을 훨씬 넘어 메모리를 쓰게 됩니다. max-cache-size 기본값은 호스트 전체 메모리의 90%이므로, 최악의 경우 호스트 메모리가 모두 고갈되어 서비스 거부 상태가 될 수 있습니다. 원문에 따르면 9.11.37, 9.11.37-S1 이전 버전은 평가하지 않았지만 BIND 9.11 전 버전이 취약할 것으로 보고 있으며, 더 오래된 일부 브랜치도 취약할 수 있습니다.
CVE-2023-2829: 잘못된 형식의 NSEC 레코드로 named 비정상 종료
DNSSEC 검증 캐시의 적극적 사용(Aggressive Use of DNSSEC-Validated Cache, RFC 8198) 옵션인 synth-from-dnssec을 켠 DNSSEC 검증 재귀 리졸버는, 잘못된 형식의 NSEC 레코드가 들어 있는 영역을 이용한 원격 공격으로 종료될 수 있습니다. synth-from-dnssec은 BIND 9.18, 9.18-S 이후 모든 버전에서 기본으로 켜져 있고, 그 이전 버전에서는 named.conf에서 명시적으로 켜야만 동작합니다. 원문에 나온 영향 버전은 BIND Supported Preview Edition(ISC 지원 고객용 미리보기 브랜치)뿐입니다.
운영자가 할 일
- 버전 확인 및 업그레이드: 운영 중인 BIND 9 버전이 영향 범위에 드는지 확인하고, 현재 버전과 가장 가까운 수정 버전(9.16.42, 9.18.16, 9.19.14, 9.16.42-S1, 9.18.16-S1)으로 업그레이드합니다.
- 바로 업그레이드할 수 없을 때 임시 조치
- CVE-2023-2911:
stale-answer-client-timeout을off또는 0이 아닌 값으로 설정하면 문제를 막을 수 있습니다. 단, 9.18.10, 9.16.36, 9.16.36-S1 또는 그 이전 버전에서는 0이 아닌 값을 쓰면 CVE-2022-3924에 취약해지므로 반드시off로 설정합니다. recursive-clients 한도를 크게 올려 발생 가능성을 줄이는 방법도 있지만, 이 한도는 서버 자원 고갈을 막는 데 중요하므로 ISC는 권하지 않습니다(한도를 완전히 끌 수도 없습니다). - CVE-2023-2828: 알려진 임시 조치가 없으므로 업그레이드해야 합니다.
- CVE-2023-2829:
synth-from-dnssec no;로 설정하면 문제를 막을 수 있습니다. 9.18 계열 -S 버전은 이 옵션이 기본으로 켜져 있으니 설정을 확인하세요.
- CVE-2023-2911:
- 설정 점검: 리졸버의
stale-answer-enable,stale-answer-client-timeout,synth-from-dnssec설정값을 확인해 두고, 리졸버의 메모리 사용량이 max-cache-size를 넘는지 지켜봅니다.
원문을 한국어로 번역·요약한 글입니다. 정확한 내용은 원문을 확인해 주세요. AI의 도움을 받아 작성하고 담당자가 검토했습니다.