
아카마이 테크놀로지스 / 김현도 부장
클라우드 WAF와 웹 공격
일반적으로 웹 어플리케이션 방화벽(Web Application Firewall, 이하 WAF)은 웹 서비스 보호를 위한 보안 솔루션을 통칭한다. WAF의 등장 이전에는 방화벽(Firewall), 침임탐지 시스템(Intrusion Detection System), 침입방지 시스템(Intrusion Prevention System)들이 네트워크 보안의 주요 요소로 활용되었다. 역할별로 살펴보면, 방화벽은 TCP/IP레이어에서의 IP와 Port정보를 기준으로 접근제어를 수행하는 기능을 담당하고 IDS와 IPS는 어플리케이션의 패킷 내용을 문자열 비교 방식을 통해 침임시도 감지와 차단을 수행하는 역할을 담당했다. 이러한 네트워크 보안 탐지와 방어 기술보다 더욱 빠르게 발전한 공격기술의 발달과 패턴의 다양화로 각종 침해사고들의 발생하였고 이에 대응 하기 위한 WAF의 필요성이 대두되었다.
최근 인터넷 서비스의 대부분을 차지하고 있는 웹 어플리케이션들의 보안 강화를 목적으로 도입되는 WAF는 HTTP 트래픽을 선제 검사하여 적절한 조치를 취함으로써 보호 대상인 인프라나 데이터센터에서는 비지니스로직과 관련된 업무나 새로운 기능의 개발에 집중할 수 있도록 돕고 있다.
웹 어플리케이션을 대상으로 하는 공격은 아주 다양하지만 주요 패턴 세가지를 먼저 살펴보면 아래와 같다.
- SQLi(SQL Injection)
악의적인 목적을 가진 사용자가 보안상의 취약점을 이용하여 데이터베이스 관련 언어인 SQL구문을 주입하고 실행되게 하여 서비스 제공자측에서 의도하지 않은 비정상적인 동작을 유도하여 인증 우회, 데이터의 유출이나 조작 등을 이끌어내는 공격이다.

[그림1. SQLi (이미지 출처: https://www.cloudflare.com/ko-kr/learning/security/threats/sql-injection)]
- XSS(Cross Site Scripting)
실제로는 CSS라는 약어를 사용해야 하지만 Cascade Style Sheet와 혼용하지 않기 위해 XSS를 사용한다.
악의적인 목적을 가진 사용자가 공격 대상 사이트에 스크립트를 주입하여 의도치 않은 행동을 수행시키거나 쿠키나 세션등의 민감정보를 특정 사이트로 전송시키거나 탈취하는 것이 목적이다. 사용자의 입력을 받는 웹사이트의 특정 부분이 공격 대상으로 사용되며 주로 사용되는 기법은 스크립트 태그 <script> 삽입, 자바스크립트 링크<a href=”javascript:alert(‘XSS’)”> 삽입, 이벤트 속성<img src=”#” onerror=”alert(‘XSS’)”> 삽입을 이용한 방식들이 자주 발견된다.
[그림2. XSS (이미지 출처:?https://www.cloudflare.com/ko-kr/learning/security/threats/cross-site-scripting)]
- Command Injection
악의적인 목적을 가진 사용자에 의한 비정상 요청값을 웹서비스를 제공하는 운영체제(OS) 명령어로 잘못 해석하도록 유도하여 해당 사용자가 파일이나 웹서버를 제어할 수 있게 만드는 공격이다. 사용자 입력값에 적절한 필터값이 적용되지 않는 경우 운영체제 시스템 명령어를 실행할 수 있으며 form, cookie, http header등을 통해 전달되어 내부 데이터 탈취나 백도어(Backdoor) 설치나 관리자 권한 탈취등의 피해가 발생된다. 리눅스 쉘 명령어중 하나인 파이프라인 (|)을 이용한 Command Injection의 공격도 흔한 사례이다.

[그림3. Command Injection (이미지 출처: https://www.plura.io)]
이외에도 다양한 형태의 공격 패턴이 존재하는데 국제 웹보안 표준 기구인 OWASP(The Open Web Application Security Project)에서는 주요 웹 어플리케이션 취약점 열가지를 추려서 각 패턴들에 대한 공격 방법과 이를 방어하기 위한 기법들을 안내하고 있다.
- A1:2017-Injection:
- A2:2017-Broken Authentication
- A3:2017-Sensitive Data Exposure
- A4:2017-XML External Entities (XXE)
- A5:2017-Broken Access Control
- A6:2017-Security Misconfiguration
- A7:2017-Cross-Site Scripting XSS
- A8:2017-Insecure Deserialization
- A9:2017-Using Components with Known Vulnerabilities
- A10:2017-Insufficient Logging & Monitoring
(출처: https://owasp.org/www-project-top-ten)
OWASP에서 이러한 가이드를 제공하는 이유는 웹 어플리케이션들의 취약점으로 인한 보안 사고를 방지하기 위함이며, 많은 보안 전문가와 보안조직에서 참고하는 중요한 지표 중 하나이다. 또한 WAF 솔루션의 보안성능을 검증할때 OWASP에서 제시하는 방어기법들이 적절히 구현되어 있는지도 참고자료로 사용된다.
시장조사 기관 포레스터 리서치가 발간한 포레스터 웨이브의 2018년 2분기 WAF 보고서는 Akamai, Amazon Web Services, Barracuda Networks, Cloudflare, F5 Networks, Foritnet, Imperva, Radware(ABC순)등을 대상으로 주요 기능별 평가 점수를 공개하고 있다.

[그림4. WAF 보고서 (이미지 출처: 포레스터 웨이브)]
WAF 기술 변화와 주요 특징
WAF는 웹 공격에 대한 방어 전략과 사용 방식에 따라 트렌드를 구분할 수 있다. 특정 연도를 지정하여 세대를 구분할 수는 없으나 각 세대별 WAF 기능들이 제공하는 기능들을 기준으로 나눠볼 수 있다.
- 1세대 WAF: 블랙리스트와 화이트리스트기반 운영
웹어플리케이션 취약점 공격에 주로 사용되었던 IP들을 수집하고 이를 목록화 하여 웹방화벽 정책에서 차단하는 것을 기본으로 하면서도 온라인 업데이트를 통해 새로운 공격 IP가 등장하면 이를 목록에 추가하는 방식이다(블랙리스트). 한편 정상적인 요청을 하는 클라이언트 IP들에 대해서 보안 운영 담당자가 다양한 형태의 분석 수행 이후 웹방화벽 정책에서 허용하도록 관리하는 방식을(화이트리스트) 적용한다.
충분한 보안 리소스를 가진 조직에서도 이러한 네트워크 리스트 관리는 부담일 수 밖에 없다. 또한 공격 패턴이 다양해짐에 따라 웹방화벽 엔진에 등록해야하는 시그니쳐의 수도 동일하게 증가해야 하므로 이를 검사하기 위한 부하의 증가와 IP 오탐으로 인한 잘못된 차단이나 허용으로 인한 문제가 보안 운영의 개선점으로 지적된다.
- 2세대 WAF : 화이트리스트 자동 생성
웹어플리케이션 관련 로그를 특정 주기마다 분석하여 정상적인 요청을 하는 클라이언트 IP를 화이트리스트에 자동으로 등록시키는 기능이 추가되었다. 하지만 정탐과 오탐을 판단하기 위한 최종 결정과 관리는 보안관리자의 몫이었으며 시간이 지남에 따라 더욱 다양해지는 웹 공격의 패턴을 빠르게 적용하여 필요한 대응을 완벽히 하기에는 부족함이 있었다.
- 3세대 WAF: 오탐율의 개선, 제로데이 공격의 대응
분산처리를 기본으로 하는 지능형 웹방화벽 엔진의 적용으로 오탐율이 극적으로 개선되었다. 공격을 분석함에 있어서 단일 패턴의 일치만으로 공격성 여부를 판단하지 않고 위험도별 지표 계산기법을 추가하여 좀 더 정밀한 탐지가 가능했디기 때문이다. 따라서 다양한 변종 공격에도 유연히 대응할 수 있으면서도 응답성능의 저하현상 역시 해결할 수 있다.
미국의 보안침해대응 센터(US-CERT)에 따르면 2020년 새롭게 등록된 취약점의 수가 17,000개를 넘어섰다고 한다. 이 취약점들 중 대다수는 웹어플리케이션에서 나왔으며 환산해보면 매일 46개 정도의 취약점이 발견되는 셈이다. 2019년 역시 비슷한 수치로 매일 새로운 취약점이 발견되었다고 한다. 웹방화벽 엔진의 업데이트가 일 단위가 아닌 시간단위로 이루어져야 하는 이유이기도 하며 그렇지 못한 경우 몇시간전 발견된 취약점 공격으로 인해 침해사고가 발생할 수 있다.
차세대 WAF의 보안 기능 요구사항
스타트업부터 엔터프라이즈 기업에 이르기까지 다양한 형태의 웹 어플리케이션들이 존재하고 있으며 이를 효과적으로 방어하기 위한 최적의 WAF솔루션은 상황마다, 조직의 형태와 인력구성에 따라 다를 수 있다. WAF 솔루션의 특징도 이에 맞추어 각 상황에 최적화된 형태로 특화되어 있으며 웹공격을 얼마나 정교하고 빠르게 감지하여 적절한 조치를 취하는 가를 넘어, 봇에 의한 요청 여부를 판단하거나 탈취된 계정을 이용한 요청들을 분리하는등의 기능 역시 속속 출시되고 있다. 차세대 WAF가 가져야 할 보안 관련 기능들을 짚어보면 아래와 같다.
가. 높은 수준의 자동화 기반 엔진 업데이트
머신러닝과 데이터마이닝, 휴리스틱 기반 탐지 기능을 적용하여 빠르게 변화하는 웹공격의 위협을 식별할 수 있어야 한다. 이는 WAF 솔루션에 요구되는 기본적인 기능임과 동시에 가장 중요한 요소이다. 시그니쳐 기반의 탐지 방법은 그 특성상 상대적으로 빠른 속도와 정확성이 높다는 장점이 있지만 그동안 발견되지 않았던 새로운 웹취약점 공격들은 기존 공격패턴의 변종형태를 가지는 경우가 많기 때문에 탐지가 어렵다. 따라서 자동화된 웹 취약점 공격 행위들에 대한 분석 시스템 기반으로하여 감지된 공격들에 대한 분석 및 연구를 병행하는 휴리스틱 기반의 탐지 방법까지 갖추는 것이 필요하다.
나. 적응형 API 가시성 제공과 제어 기능
API(Application Programming Interface)를 위한 보안은 기존 모노리식 아키텍쳐에서(Monolithic Architecture) 마이크로서비스(Micro Service Architecture) 아키텍쳐로의 전환과정에서 그 필요성이 대두되었다. 개발팀이 서비스를 위해 새롭게 정의한 API 스펙과 endpoint들은 보통 보안팀에 친절히 안내되지 않기 때문에 그 존재를 파악하는 것 조차 쉽지 않지만 중요한 보호 대상에 포함된다. 따라서 개발팀이나 보안팀에서 별도로 정의하지 않더라도 자주 쓰이는 API Endpoint를 식별하고 XML, JSON형태의 요청을 자동으로 검사하고 제어하는 기능이 필요하다.
다. 효율적인 보안 운영 지원
서비스의 개발과 운영을 자동화하는 워크플로우는 이미 CI (Continuous Integration)/ CD(Continuous Deployment)라는 명칭으로 DevOps 엔지니어들의 핵심요소로 자리 잡았다. WAF의 보안 설정 역시 CI/CD프로세스에 통합되어야 하며 이를 지원하기 위한 API(Application Programming Interface)와 CLI(Command Line Interface)은 필수적이다.
라. 모니터링과 로그
보안운영에 있어 SIEM(Security Information & Event Management)은 중요한 요소이다. 보안정보관리와 보안이벤트관리를 결합한 요소로 보안 경보에 대한 실시간 경보와 분석이 가능하도록 지원하는 표준 시스템에 WAF의 로그를 통합할 수 있어야 한다. 보안팀은 웹서비스에서 일어나고 있는 과거부터 현재까지의 적절한 기간 데이터를 확보하여 대응해야 하기 때문이다.
<참고 자료>
https://ko.wikipedia.org/wiki/%EC%9B%B9%EB%B0%A9%ED%99%94%EB%B2%BD
https://www.comworld.co.kr/news/articleView.html?idxno=49489
https://www.dailysecu.com/news/articleView.html?idxno=108637
저작권정책
K-ICT 클라우드혁신센터의 저작물인 『클라우드 기반의 waf와 기술 트렌드 분석』은 K-ICT 클라우드혁신센터에서 아카마이 테크놀로지스 김현도 부장에게 집필 자문을 받아 발행한 전문정보 브리프로, K-ICT 클라우드혁신센터의?저작권정책에 따라 이용할 수 있습니다.
다만 사진, 이미지, 인용자료 등 제3자에게 저작권이 있는 경우 원저작권자가 정한 바에 따릅니다.