제로데이(Zero-Day) 취약점은 소프트웨어 벤더가 아직 알지 못하거나 패치를 배포하기 전에 이미 공격자가 악용하는 보안 취약점이다. "제로 데이"는 벤더의 대응 시간이 0일이라는 의미다.
제로데이 생명주기
발견 → [취약점 존재하나 미공개]
↓
무기화 → 익스플로잇 코드 개발
↓
배포 → 공격 시작 (제로데이 공격)
↓
발각 → 벤더/연구자 인지
↓
패치 → CVE 발급, 패치 배포
↓
해결 → N-day 취약점 (패치 있으나 미적용 시스템 존재)
제로데이 시장
| 구매자 | 목적 | 가격 (예시) |
|---|
| 국가 기관 | 사이버 첩보, 군사 | $100K ~ $2.5M |
| 보안 기업 | 방어적 연구 | $5K ~ $200K |
| 버그 바운티 | 취약점 신고 보상 | $500 ~ $1M |
| 블랙마켓 | 범죄적 악용 | 다양 |
유명 제로데이 사례
Stuxnet (2010) : Windows 4개 제로데이 사용, 이란 원심분리기 파괴
EternalBlue (2017) : NSA 개발 SMBv1 취약점, WannaCry에 활용
Log4Shell (2021) : Log4j JNDI 인젝션, CVSS 10.0
Spectre/Meltdown : CPU 마이크로아키텍처 취약점
탐지 방법
python
# 행동 기반 이상 탐지 (간단한 예)
class ZeroDayDetector:
def __init__(self):
self.baseline = {} # 정상 행동 프로파일
def detect_anomaly(self, process_activity):
for proc, activity in process_activity.items():
baseline = self.baseline.get(proc, {})
# 정상 범위 벗어난 시스템 콜 패턴
if activity['syscall_count'] > baseline.get('avg', 0) * 3:
return True, f"Anomaly in {proc}"
# 비정상 네트워크 연결
if activity['new_connections'] > 100:
return True, f"Suspicious connections from {proc}"
return False, None
방어 전략
- •공격 표면 축소: 불필요한 서비스/기능 비활성화
- •행동 기반 탐지: 시그니처 없이 이상 행동 탐지 (EDR)
- •가상화/샌드박싱: 취약한 앱 격리
- •최소 권한 원칙: 익스플로잇 피해 최소화
- •네트워크 세그멘테이션: 횡적 이동 제한
관련 문서
- •[[apt|APT (지능형 지속 위협)]]
- •[[supply-chain-attack|공급망 공격]]
- •[[memory-safety|메모리 안전성]]
- •[[privilege-escalation|권한 상승]]