← 목록으로

CVE-2017-0144 (EternalBlue): WannaCry를 전 세계로 퍼뜨린 SMB 취약점

[CVE] CVE 분석 · 작성: 2026-07-19 19:39:08 · 조회 4

EternalBlue는 Windows의 SMBv1(파일 공유 프로토콜) 구현에 있던 원격 코드 실행 취약점이다. 이 취약점을 이용한 익스플로잇 코드가 2017년 Shadow Brokers라는 그룹에 의해 공개적으로 유출되면서, 같은 해 WannaCry 랜섬웨어가 이를 이용해 전 세계 수십만 대의 컴퓨터를 며칠 만에 감염시키는 대규모 사고로 이어졌다.

근본 원인: SMBv1의 정수 오버플로우

SMBv1 프로토콜의 특정 요청(Trans2 관련 처리)을 처리하는 커널 드라이버(srv.sys)에 정수 오버플로우 취약점이 있었다. 공격자가 조작한 패킷 필드 값이 정수 연산 과정에서 예상 범위를 벗어나면서, 실제 할당된 버퍼보다 작은 크기가 계산되어 이후 처리 과정에서 힙 버퍼 오버플로우로 이어지는 구조였다. 최종적으로 커널 메모리 영역에 공격자가 원하는 코드를 심고 실행시킬 수 있었다 — 커널 레벨에서 실행되는 코드라는 점 때문에 시스템 최고 권한(SYSTEM)을 그대로 획득하는 결과로 이어졌다.

왜 "네트워크로 전파되는 웜(worm)"이 가능했나

일반적인 원격 코드 실행 취약점은 대상 하나를 뚫는 데 그치지만, EternalBlue는 다음 조건이 겹치면서 자동 전파형 공격의 완벽한 재료가 됐다.

WannaCry는 여기에 랜섬웨어(파일 암호화 후 금전 요구)를 결합해서, 감염 → 자동 전파 → 파일 암호화가 사람의 개입 없이 자동으로 이어지는 최악의 조합을 만들었다.

패치가 있었는데도 왜 그렇게 퍼졌나

가장 뼈아픈 지점이 여기다. 마이크로소프트는 이 취약점에 대한 패치(MS17-010)를 WannaCry가 퍼지기 약 두 달 전에 이미 배포한 상태였다. 그런데도 대규모 피해가 발생한 이유는:

즉 이 사건은 취약점 자체의 기술적 심각성뿐 아니라, "패치가 나와도 실제로 적용되기까지의 격차(patch gap)"가 현실에서 얼마나 큰 리스크인지를 극명하게 보여준 사례로 더 자주 인용된다.

대응과 교훈

CVE 분석 카테고리의 글 (4/8)

  1. CVE-2024-3400: Palo Alto PAN-OS GlobalProtect 원격 코드 실행
  2. CVE-2021-44228 (Log4Shell): 로그 한 줄로 서버를 장악당한 사건
  3. CVE-2014-0160 (Heartbleed): OpenSSL 하트비트가 새어나간 메모리
  4. CVE-2017-0144 (EternalBlue): WannaCry를 전 세계로 퍼뜨린 SMB 취약점
  5. CVE-2021-34527 (PrintNightmare): 프린터 드라이버 관리 기능이 만든 권한 상승
  6. CVE-2022-0847 (Dirty Pipe): 파이프로 읽기전용 파일을 덮어쓴 취약점
  7. CVE-2021-3156 (Sudo Baron Samedit): 힙 오버플로우로 root 획득
  8. CVE-2022-22965 (Spring4Shell): 클래스 로더 조작으로 이어지는 RCE
← CVE-2014-0160 (Heartbleed): OpenSSL 하트비트가 새어나간 메모리 CVE-2021-34527 (PrintNightmare): 프린터 드라이버 관리 기능이 만든 권한 상승 →