2008년 인터넷을 뒤흔들었던 DNS 캐시 포이즈닝 공격이 다시 고개를 들 수 있다는 경고가 나왔습니다. 전 세계적으로 사용되는 BIND와 Unbound 소프트웨어에서 새로운 취약점이 발견되었기 때문인데요. 이번 글에서는 이 취약점들이 무엇인지, 그리고 우리 시스템을 안전하게 지킬 수 있는 5가지 방어 전략을 자세히 알려드릴게요.

DNS 캐시 포이즈닝, 대체 무엇인가요?
DNS(Domain Name System)는 인터넷 주소록과 같아서, 우리가 웹사이트 주소를 입력하면 해당 웹사이트의 실제 서버 IP 주소를 찾아줍니다. 이 과정에서 DNS 해석기(resolver)는 한 번 찾은 정보를 일정 시간 저장해두는데, 이를 캐시(cache)라고 부릅니다.
DNS 캐시 포이즈닝은 이 캐시에 위조된(poisoned) 정보를 주입하는 사이버 공격입니다. 공격자는 위조된 IP 주소를 캐시에 넣어, 사용자가 특정 웹사이트에 접속하려 할 때 실제 사이트가 아닌 악성 사이트로 연결되도록 속일 수 있습니다. 이 공격은 2008년 댄 카민스키 연구원에 의해 심각성이 알려지면서 대규모 인터넷 보안 위협으로 부상했었어요. 당시에는 UDP 패킷의 예측 가능한 트랜잭션 ID를 이용해 공격이 가능했습니다.

2025년 발견된 BIND와 Unbound 취약점의 정체
최근 BIND와 Unbound라는 두 가지 주요 DNS 해석 소프트웨어에서 새로운 캐시 포이즈닝 취약점이 발견되었습니다. BIND는 전 세계에서 가장 널리 사용되는 DNS 소프트웨어 중 하나이며, Unbound 역시 중요한 역할을 합니다.
BIND에서 발견된 취약점은 CVE-2025-40778과 CVE-2025-40780 두 가지입니다.
- CVE-2025-40778은 BIND가 응답의 레코드를 너무 관대하게 받아들여, 공격자가 위조된 데이터를 캐시에 주입할 수 있게 합니다.
- CVE-2025-40780은 의사 난수 생성기(PRNG)의 약점 때문에 공격자가 BIND가 사용할 소스 포트와 쿼리 ID를 예측할 수 있게 만듭니다. 성공하면 공격자 응답이 캐시될 수 있습니다. 이 두 취약점은 각각 심각도 8.6점을 받았습니다.
Unbound에서도 유사한 취약점이 보고되었으며, 이 취약점의 심각도는 5.6점입니다. 이 모든 취약점에 대한 패치는 이미 제공되고 있습니다.

과거 Kaminsky 공격과 이번 취약점의 차이점
이번에 발견된 DNS 캐시 포이즈닝 취약점들은 2008년 카민스키 공격만큼 광범위하거나 치명적이지는 않을 것으로 예상됩니다. 당시 공격은 인터넷 전체를 마비시킬 수 있는 잠재력을 가지고 있었지만, 이번 취약점은 몇 가지 중요한 차이점을 보입니다.
가장 큰 이유는 2008년 공격 이후 DNS 생태계 전체에 걸쳐 수많은 방어 조치들이 구현되었기 때문입니다.
- 권한 있는 서버의 안전성: 권한 있는 DNS 서버 자체는 이번 취약점에 취약하지 않습니다.
- DNSSEC: DNSSEC(DNS Security Extensions)는 DNS 레코드에 디지털 서명을 적용하여 데이터의 무결성과 출처를 확인해주는 강력한 보호막입니다. 이는 위조된 응답을 걸러내는 데 도움을 줍니다.
- 속도 제한 및 방화벽: 많은 조직에서 DNS 해석기에 대한 쿼리 속도 제한 및 서버 방화벽 설정을 통해 무차별 대입 공격이나 스푸핑 시도를 방지하고 있습니다.
Red Hat은 CVE-2025-40780에 대해 “악용이 비단조롭고, 네트워크 수준의 스푸핑과 정확한 타이밍을 요구하며, 서버 침해 없이 캐시 무결성에만 영향을 미치므로, Critical이 아닌 Important 등급으로 간주한다”고 밝혔습니다. 하지만 여전히 일부 조직에서는 피해를 입을 가능성이 있으므로 방심할 수는 없습니다.
내 시스템 안전하게 지키는 5가지 DNS 보안 강화 전략
이번 DNS 캐시 포이즈닝 취약점 경고는 다시 한번 DNS 보안의 중요성을 일깨워줍니다. 다음 5가지 전략으로 여러분의 시스템을 안전하게 보호하세요.
즉시 패치 적용하기
가장 중요하고 기본적인 방어 전략입니다. BIND 및 Unbound 개발사에서 제공하는 최신 보안 패치를 최대한 빨리 적용해야 합니다. 패치는 취약점을 수정하여 공격을 막는 가장 직접적인 방법입니다.
DNSSEC 구현
DNSSEC는 DNS 응답의 무결성과 진위를 보장하여 캐시 포이즈닝과 같은 공격을 방지하는 데 매우 효과적입니다. 아직 DNSSEC를 사용하고 있지 않다면 적극적으로 도입을 검토하고 구현해야 합니다.
속도 제한 및 방화벽 설정
DNS 해석기에 대한 쿼리 속도를 제한하고, 외부에서 들어오는 의심스러운 트래픽을 차단하는 방화벽 규칙을 설정하는 것이 좋습니다. 이는 공격자가 대량의 위조된 응답을 보내는 것을 어렵게 만듭니다.
DNS 해석기(Resolver) 다중화
단일 DNS 해석기에 모든 의존성을 두지 않고, 여러 개의 해석기를 분산하여 사용하는 전략입니다. 하나의 해석기가 공격당하더라도 서비스 전체가 마비되는 것을 막을 수 있습니다.
모니터링 및 로깅 강화
DNS 트래픽과 시스템 로그를 주기적으로 모니터링하여 비정상적인 활동이나 패턴을 조기에 감지해야 합니다. 의심스러운 활동이 발견되면 즉시 대응하여 피해를 최소화할 수 있습니다.

마무리
DNS 캐시 포이즈닝은 과거에도 그랬고, 앞으로도 인터넷 서비스의 안정성과 사용자 보안을 위협하는 중요한 문제입니다. 이번 BIND 및 Unbound 취약점 경고를 통해 우리 모두 DNS 보안에 대한 경각심을 가지고, 위에 제시된 방어 전략들을 철저히 적용하여 안전한 인터넷 환경을 만들어나가야 합니다. 시스템 관리자라면 오늘 당장 패치 여부를 확인하고, 관련 보안 설정을 점검해 보시는 건 어떨까요? 궁금한 점이 있다면 댓글로 남겨주세요!