새로운 Exim BDAT 취약점, GnuTLS 빌드에 잠재적 코드 실행 노출

발행: (2026년 5월 13일 AM 01:44 GMT+9)
5 분 소요

Source: The Hacker News

Exim 로고

개요

Exim은 Unix‑계열 시스템용 오픈‑소스 메일 전송 에이전트(MTA)입니다.
취약점은 CVE‑2026‑45185(또는 Dead.Letter 로도 알려짐)로, GnuTLS가 처리하는 TLS 연결 중 Exim의 바이너리 데이터 전송(BDAT) 메시지 본문 파싱에서 발생하는 use‑after‑free 버그입니다.

“이 취약점은 클라이언트가 본문 전송이 완료되기 전에 TLS close_notify 알림을 보내고, 동일한 TCP 연결에서 마지막 바이트를 평문으로 전송할 때 BDAT 메시지 본문 처리 중에 트리거됩니다.” – Exim advisory1.

공격 순서 일러스트

기술 세부 사항

이 일련의 사건은 TLS 세션 종료 중에 이미 해제된 메모리 버퍼에 데이터를 쓰게 하여 힙 손상을 일으킬 수 있습니다. 공격자는 다음만 수행하면 됩니다:

  1. 서버에 TLS 연결을 설정한다.
  2. CHUNKING(BDAT) SMTP 확장을 사용한다.
  3. BDAT 전송이 완료되기 전에 close_notify 알림을 보낸다.
  4. 동일한 TCP 연결에서 마지막 평문 바이트를 전송한다.

XBOW 보안 연구소 책임자인 Federico Kirschbaum이 2026년 5월 1일에 이 결함을 발견하고 보고했습니다. 그는 다음과 같이 설명했습니다:

“TLS 종료 시 Exim은 TLS 전송 버퍼를 해제하지만, 중첩된 BDAT 수신 래퍼가 여전히 들어오는 바이트를 처리할 수 있어 ungetc()를 호출하게 됩니다. 이 함수는 해제된 영역에 단일 문자(\n)를 기록합니다. 이 1바이트 쓰기는 Exim의 할당자 메타데이터에 쓰여 할당자의 내부 구조를 손상시키고, 이후 공격자는 이 손상을 이용해 추가 프리미티브를 얻습니다.”2

영향

  • 4.97부터 4.99.2까지의 모든 Exim 버전에 영향을 미칩니다.
  • USE_GNUTLS=yes 로 컴파일된 빌드에만 해당됩니다. 다른 TLS 라이브러리(예: OpenSSL)를 사용하는 빌드는 영향을 받지 않습니다.
  • 현재 알려진 완화 방법은 패치를 적용하는 것 외에는 없습니다.

완화 조치

이 취약점은 Exim 4.99.3에서 수정되었습니다. 패치는 활성 BDAT 전송 중에 TLS close 알림을 받으면 입력 처리 스택을 깔끔하게 초기화하여 오래된 포인터가 사용되는 것을 방지합니다.

모든 사용자는 가능한 한 빨리 버전 4.99.3 이상으로 업그레이드할 것을 강력히 권고합니다.

역사적 배경

이는 Exim에서 처음이 아닌 중요한 use‑after‑free 버그입니다. 2017년 말, Exim은 유사한 취약점(CVE‑2017‑16943)을 패치했으며, 이는 특수하게 조작된 BDAT 명령을 통해 인증되지 않은 공격자가 원격 코드 실행을 수행할 수 있게 했습니다. 2017년 버그의 CVSS 점수는 9.8이었습니다.3

참고 문헌

Footnotes

  1. Exim advisory, 2026 년 5월 1일.

  2. Federico Kirschbaum 인터뷰, XBOW.

  3. CVE‑2017‑16943 advisory.

0 조회
Back to Blog

관련 글

더 보기 »