취약점을 이용한 악성코드나 해킹 공격은 시간을 따지지 않는다.
운영체제(OS)나 네트워크 장비 등 핵심 시스템의 보안 취약점이 발견된 뒤 이를 막을 수 있는 패치가 발표되기도 전에 그 취약점을 이용한 악성코드나 해킹 공격을 감행하는 수법입니다.
제로데이(Zero-day)란 아직 알려지지 않은 컴퓨터 소프트웨어의 취약점을 의미합니다. 취약점은 웜(worm) 혹은 바이러스(virus) 형태로도 나타날 수 있고 멀웨어(malware)는 제로데이를 악용하여 시스템을 공격할 수도 있습니다.
일반적으로는 사용 중인 컴퓨터 혹은 기타 장비, S/W, 운영체제 등에서 취약점이 발견되면 제작자나 개발자가 취약점을 보완하는 패치를 배포하고 사용자가 이를 내려받아 대처하는 것이 관례이나, 보안 취약점 존재 자체가 공표되기도 전에 해당 취약점을 악용하여 이루어지는 보안 공격을 의미하며 신속한 공격이 특징입니다.
제로데이 공격은 공격의 신속성을 의미하는 것으로 대응책이 공표되기도 전에 공격이 이루어지기 때문에 대처 방법이 없습니다. 아직 알려지지 않은 취약 지점도 공격할 수 있는 알려지지 않은 프로그램 공격이 대표적인 수법이며 역으로 공격에 이용된 패킷의 특징을 분석해서 아직 발견되지 않은 취약점을 차단하는 연구도 진행되고 있으나 확실한 해결책이라고 할 수 없습니다.
최근 사례는 다음과 같습니다.
2019년 6월 동유럽에서 발견한 MS 윈도를 대상으로 한 공격
2019년 2월 CVE-2019-0797 (Automatic Exploit Prevention)
CVE-2019-2215 구글 안드로이드 디바이스
DNC Hack
Aurora
제로데이 자체가 알려지지 않은 취약점이기에 선제적으로 모든 제로데이 취약점을 찾아내서 막는 것은 불가능합니다. 다만 이런 취약점이 시스템 전체를 해하도록 설계를 하지 않는다거나 코드 분석, 휴리스틱스 분석, 의심되는 부분의 에뮬레이션, 샌드박스를 활용한 테스팅 등은 일종의 방어 활동이 될 수 있습니다. Zeroday Emergency Response Team (ZERT)라는 제로데이 공격을 연구하고 방어하는 팀도 과거에 있었습니다.
1day 공격은 S/W 업체들이 패치를 발표한 당일에 패치를 분석하거나 업데이트된 버전의 diff 정보를 분석하여 어떤 취약점을 어떻게 수정하였는지를 발견하고 아직 패치가 완료되지 않은 시스템을 대상으로 그 취약점을 공격하는 방식입니다. 이런 공격을 피하기 위해서는 발표된 패치를 빠르게 수행하는 것만이 정답입니다.