WAFFLED: Exploiting Parsing Discrepancies to Bypass Web Application Firewalls
이 논문은 헤더와 본체 파싱 불일치를 악용하여 5 가지 주요 WAF 를 우회하는 1,207 가지 공격 벡터를 발견하고, 이를 해결하기 위해 RFC 표준을 준수하는 HTTP-Normalizer 라는 프록시 도구를 제안합니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
🛡️ 핵심 개념: "방화벽과 서버가 서로 다른 언어로 읽는 사기극"
이 연구의 핵심은 **"파싱 불일치 (Parsing Discrepancies)"**입니다. 이를 쉽게 비유하자면 다음과 같습니다.
- 웹 방화벽 (WAF): 건물의 경비실입니다. 들어오는 사람 (데이터) 을 검사해서 나쁜 사람 (해커) 을 막아냅니다.
- 웹 서버 (웹 애플리케이션): 건물의 실제 사무실입니다. 경비실이 통과시킨 사람을 받아 업무를 처리합니다.
문제 상황:
경비실 (방화벽) 과 사무실 (서버) 이 같은 문서를 보고도 서로 다른 해석을 하는 경우가 있습니다.
- 경비실은 "이건 안전해, 통과시켜!"라고 생각하지만,
- 사무실은 "아, 이거 숨겨진 위험이 있구나!"라고 해석해서 실행해 버립니다.
이 연구팀은 이 **오해 (불일치)**를 이용해, 해커가 악성 코드를 숨겨서 경비실을 속이고 사무실로 침투하는 방법을 찾아냈습니다.
🔍 연구팀은 무엇을 했나요? (3 가지 주요 발견)
연구팀은 5 개의 유명한 방화벽 (Cloudflare, AWS, Azure 등) 과 6 개의 웹 서버 프로그램을 대상으로 실험을 했습니다. 그들은 해커가 악성 코드를 직접 변조하는 대신, **데이터의 포장 방식 (헤더, 구분자 등)**을 살짝 비틀어서 방화벽을 혼란스럽게 만들었습니다.
1. "우편물 포장"을 헷갈리게 하기 (Multipart)
- 비유: 택배 상자에 여러 개의 소포가 들어있을 때, 각 소포를 구분하는 '테이프'가 있습니다.
- 공격: 해커는 이 테이프 이름에 특수 문자를 섞거나, 테이프를 두 번 적는 등 포장 방식을 약간 비틀었습니다.
- 결과: 경비실은 "이건 엉망진창이라서 무시해야겠다"라고 생각해서 통과시켰지만, 사무실은 "아, 이건 테이프가 두 개 있는 거구나"라고 해석해서 숨겨진 악성 코드를 꺼내 실행했습니다.
- 발견: 이 방법으로 351 가지의 새로운 공격 경로를 찾았습니다.
2. "문서 형식"을 뒤흔들기 (XML & JSON)
- 비유: 문서의 제목이나 구조를 살짝 바꾸는 것입니다. 예를 들어, "제목"을 "제 목"처럼 띄어쓰기를 하거나,
<기호 대신 다른 기호를 쓰는 식입니다. - 공격: XML 이나 JSON 데이터의 구조를 RFC(인터넷 표준 규칙) 에는 맞지만, 방화벽이 읽기엔 이상한 형태로 변형했습니다.
- 결과: 방화벽은 "이건 표준이 아니야"라고 무시하거나, "안전해"라고 판단했지만, 서버는 "아, 이건 표준을 살짝 변형한 거구나"라고 이해하고 악성 코드를 실행했습니다.
- 발견: XML 에서 299 가지, JSON 에서 557 가지의 공격 경로를 발견했습니다.
총합: 이 모든 방법을 합쳐서 1,207 가지의 새로운 공격 방법을 찾아냈습니다.
🌍 현실 세계에서는 얼마나 위험할까요?
연구팀은 "이게 실제로 쓰일 수 있을까?"를 확인하기 위해 인터넷의 실제 웹사이트 100 개를 조사했습니다.
- 결과: 놀랍게도 90% 이상의 웹사이트가 서로 다른 데이터 형식 (예: 일반 폼 데이터와 멀티파트 데이터) 을 구분 없이 똑같이 받아주는 것으로 나타났습니다.
- 의미: 해커가 "아, 이 사이트는 A 형식만 받아주겠지?"라고 생각할 필요 없이, B 형식으로 변조해서 공격해도 대부분 통한다는 뜻입니다. 이는 이 공격 기법이 매우 광범위하게 적용 가능하다는 것을 의미합니다.
🛠️ 해결책: "HTTP-Normalizer" (정리꾼)
이 연구팀은 단순히 문제를 지적하는 데 그치지 않고, 해결책도 제시했습니다.
- 아이디어: 방화벽과 서버 사이에 **'정리꾼 (HTTP-Normalizer)'**이라는 가상의 도구를 두는 것입니다.
- 역할: 이 도구는 들어오는 모든 데이터를 **엄격한 인터넷 표준 (RFC)**에 맞춰 깔끔하게 정리합니다.
- "이 테이프 이름이 이상하네? 표준대로 고쳐줄게."
- "여기에 숨겨진 공백이 있네? 다 지워줄게."
- 효과: 정리된 데이터는 방화벽과 서버가 동일하게 해석하게 됩니다. 방화벽이 "위험하다"고 판단하면 서버도 "위험하다"고 판단하고 차단하게 되어, 해커의 속임수가 통하지 않게 됩니다.
연구팀은 이 도구를 만들어 테스트한 결과, 발견된 모든 공격을 100% 막아낼 수 있음을 증명했습니다.
📝 요약 및 결론
- 문제: 방화벽과 서버가 데이터를 해석하는 방식이 미세하게 달라서, 해커가 이 틈을 타고 악성 코드를 숨겨 넣을 수 있습니다.
- 발견: 5 대 방화벽과 주요 서버 프로그램에서 1,207 가지의 새로운 공격 방법을 찾아냈습니다.
- 위험성: 실제 웹사이트 90% 이상이 이 공격에 취약할 수 있습니다.
- 해결: 데이터를 표준에 맞게 '정리'해주는 도구를 사용하면 이 모든 공격을 막을 수 있습니다.
한 줄 평:
"방화벽과 서버가 서로 다른 '해석'을 하는 틈을 이용해 해커가 들어가는 사기를 막기 위해, 모든 데이터를 '표준 언어'로 통일해달라는 강력한 경고이자 해결책입니다."
이 연구는 방화벽 제조사들에게 "단순히 규칙을 늘리는 것보다, 데이터를 해석하는 기준을 표준에 맞게 통일하는 것이 더 중요하다"는 교훈을 남겼습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.