🛡️ WAF(Web Application Firewall)는 전통적인 네트워크 방화벽(Layer 3/4)의 한계를 극복하기 위해 등장했으며, 웹 애플리케이션 계층(Layer 7) 트래픽을 전문적으로 분석하여 방어하는 시스템입니다. WAF의 주요 역할은 SQL Injection, XSS(Cross-Site Scripting), 파일 업로드 취약점 등 웹 애플리케이션 자체의 논리적 허점을 노리는 공격을 실시간으로 탐지하고 차단하는 것입니다. 심화 과정인 본 포스팅에서는 WAF의 근본적인 동작 모델, 아키텍처 배포 방식, 그리고 이러한 방어막을 뚫으려는 고도화된 우회(Evasion) 공격 기법들을 분석하겠습니다.
✨ 핵심 원리: Layer 7 트래픽 분석을 통한 HTTP/S 취약점 방어
WAF는 단순히 포트 번호나 IP 주소를 확인하는 기존 방화벽과 달리, HTTP/S 프로토콜의 헤더, URL, 쿠키, POST 데이터 등 실제 요청 내용(Payload)을 파싱(Parsing)하여 애플리케이션 수준의 공격 패턴을 식별합니다.
🧠 1. WAF의 핵심 동작 모델: 블랙리스트, 화이트리스트, 이상 탐지
WAF가 공격을 탐지하는 방식은 크게 세 가지 모델로 나뉘며, 실제 환경에서는 이들을 혼합하여 사용합니다.
- 블랙리스트 (Blacklist / Signature-based): 알려진 공격 패턴 데이터베이스와 트래픽을 비교하여 차단합니다. 변종 공격에는 취약합니다.
- 화이트리스트 (Whitelist / Positive Security Model): 정상적인 트래픽 패턴을 정의하고, 이를 벗어나는 모든 요청을 차단합니다. 새로운 공격 방어에 가장 강력하지만, 유지 보수 비용이 높습니다.
- 이상 탐지 (Anomaly Detection): 정상 행위를 학습하고, 이 기준에서 크게 벗어나는 비정상적인 트래픽 양상(예: 갑작스러운 요청 속도 급증)을 탐지합니다.

⚙️ 2. WAF의 배포 방식과 검사 원리 (리버스 프록시 vs. 투명 프록시)
WAF의 성능과 네트워크 영향은 배포 방식에 따라 달라집니다.
- 리버스 프록시 (Reverse Proxy Mode): WAF가 외부 인터넷과 웹 서버 사이에 위치하여 서버 IP를 숨기고 트래픽을 완전히 종단(Termination)하여 검사한 후 서버로 전달합니다. SSL/TLS Offloading 등의 추가 기능을 수행할 수 있습니다.
- 투명 프록시 / 브리지 모드 (Transparent/Bridge Mode): WAF가 네트워크 경로 중간에 투명하게(In-line) 배치되어 IP나 포트를 변경하지 않고 통과시키면서 검사만 수행합니다. 기존 네트워크 구성 변경이 최소화됩니다.

🧪 3. WAF 우회 공격 사례 1: 인코딩 및 주석 삽입 기법
블랙리스트(시그니처) 기반의 WAF를 무력화시키는 가장 흔한 방법은 공격 페이로드(Payload)를 필터링 로직이 인식하지 못하도록 **난독화(Obfuscation)**하는 것입니다.
- 다중/혼합 인코딩: WAF 필터가 하나의 특정 인코딩 방식만 디코딩하도록 설계된 취약점을 이용해, URL 인코딩과 HTML 엔티티 인코딩 등을 혼합하여 WAF를 통과합니다.
- 주석 삽입 (Comment Injection): WAF 필터가 SELECT와 FROM 사이의 공백 패턴만 감지하도록 설계되었다면, 그 사이에 SQL 주석(/* */)을 삽입하여 필터를 우회하고, SQL 엔진은 이를 정상 명령어로 실행합니다.
- NULL 바이트 삽입 (Null Byte Injection): %00과 같은 NULL 바이트를 문자열 끝에 삽입하여, 웹 서버가 이 부분을 문자열의 끝으로 인식하게 만들어 파일 경로 등을 조작합니다.

🔗 4. WAF 우회 공격 사례 2: 파라미터 분할(Splitting)과 불일치(Mismatch)
WAF가 요청을 파싱하고 서버로 전달하는 과정에서의 논리적 오류를 이용하는 심화 기법입니다.
- 파라미터 분할 (Parameter Splitting): HTTP 요청 헤더에 **CRLF(%0D%0A)**와 같은 개행 문자를 삽입하여 하나의 요청을 여러 개로 분할, WAF가 요청 전체를 제대로 분석하지 못하게 만듭니다. (HTTP Request Smuggling과 관련됨)
- 파라미터 불일치 (Parameter Mismatch): 서버 환경이 여러 개의 파라미터가 중복될 때(예: id=1&id=2) 이를 처리하는 방식과 WAF가 필터링을 수행하는 방식이 다를 때 발생합니다. 공격자는 WAF가 정상 값만 검사하도록 유도하고 서버는 악성 값만 실행하도록 만듭니다.

✅ 요약 및 방어 원칙 💯
| 🆔 모델 | ⚙️ 동작 방식 | 🔑 주요 우회 공격 | 🛡️ 방어 원칙 |
| 블랙리스트 | 시그니처 기반 패턴 매칭 | 다중/혼합 인코딩, 주석 삽입 | 디코딩 정규화 (모든 인코딩 처리) |
| 화이트리스트 | 허용된 정상 패턴 정의 | - (우회 공격 방어에 강함) | 최소 권한 원칙 기반 정책 유지 |
| 우회 기법 | 파싱/로직 불일치 이용 | 파라미터 분할, 중복 파라미터 | 파싱 표준화 (WAF와 서버의 파싱 규칙 통일) |
👉WAF의 우회 공격을 효과적으로 방어하기 위해서는 단순한 블랙리스트 패턴 업데이트를 넘어, WAF 단에서 모든 인코딩을 **디코딩 및 정규화(Normalization)**하여 공격 페이로드를 필터링해야 합니다. 또한 WAF와 웹 서버/WAS 간의 HTTP 파싱 규칙을 통일시켜 로직 불일치 취약점을 제거해야 합니다.
📚 출처
- OWASP (Open Web Application Security Project): Top 10 Vulnerabilities & Evasion Techniques
- RFC 7230 (HTTP/1.1 Message Syntax and Routing): HTTP Request Smuggling
- 웹 보안 아키텍처: 리버스 프록시 기반의 보안 구현
👉 함께 보면 도움되는 글: 로드 밸런서 vs 리버스 프록시: 트래픽 관리자의 역할 분담
로드 밸런서 vs 리버스 프록시: 트래픽 관리자의 역할 분담
로드 밸런서와 리버스 프록시의 핵심 차이점(목적, 기능 범위)을 분석합니다. 로드 밸런서의 부하 분산 및 헬스 체크 기능과 리버스 프록시의 보안, 캐싱, SSL 종료 기능을 비교하고, 현대 웹 서비
praymeyer2025.tistory.com
'💡 IT 핵심 지식 (Core) > 🔒사이버 보안' 카테고리의 다른 글
| 패킷 스니핑이 가능한 이유와 차단 기술 : 네트워크 도청 원리와 방어 메커니즘 (0) | 2025.12.13 |
|---|---|
| TLS 핸드셰이크의 실제 과정 : 신원 확인과 비밀 암호 교환 (0) | 2025.12.12 |
| 쿠키·세션·토큰의 보안 차이: 신분증과 보관함 (0) | 2025.12.11 |
| HTTPS는 왜 안전할까? 인증서·암호화 쉽게 정리 (0) | 2025.12.10 |
| 제로 트러스트 이후 주목받는 접근제어 방식, ABAC란? (0) | 2025.11.28 |