
Cloudflare가 웹 애플리케이션 방화벽(WAF)에 요청과 응답을 함께 분석하는 전체 트랜잭션 탐지와 응답 규칙을 추가했다. 모든 요금제에서 사용할 수 있으며, 응답 규칙은 원본 서버가 보낸 응답을 요청자에게 전달하기 전에 차단할 수 있다.
새 기능은 의심스러운 요청만으로 공격 성공 여부를 판단하기 어려운 경우에 대응한다. 요청과 그에 따른 응답을 함께 분석하면 공격 시도가 실제로 민감한 정보를 노출했는지 확인하는 데 도움이 된다. Cloudflare는 최근 공개된 php2shell 취약점을 대상으로 한 관리형 보호 기능도 제공한다.
요청과 응답을 함께 분석한다
기존 WAF 규칙은 요청의 IP 주소, URL 경로, 헤더, 본문 등을 바탕으로 공격이나 원치 않는 트래픽이 원본 서버에 도달하기 전에 차단한다. 하지만 의심스러운 입력만으로는 애플리케이션이 이를 거부했는지, 오류를 반환했는지, 실제로 정보를 노출했는지 알 수 없다. 요청만으로 공격을 확정하면 정상 트래픽까지 막을 수 있고, 오탐을 피하려는 규칙만 사용하면 모호한 요청이 서버에 도달할 여지가 커진다.
전체 트랜잭션 탐지는 요청과 원본 서버의 응답을 연결해 공격의 결과를 판단할 단서를 제공한다. 예를 들어 파일 다운로드 기능에 GET /download?file=../../config/database.ini 요청이 들어오면 경로 이동 시도로 볼 수 있다. 그러나 요청만으로는 서버가 이를 거부할지, 오류를 반환할지, 파일 내용을 내보낼지 알 수 없다. 응답에 200 OK Content-Type: text/plain [database] username=app_service password=EXAMPLE_SECRET처럼 설정 파일로 보이는 내용이 포함되면 민감 정보 노출의 증거가 될 수 있다.
설정 파일과 비슷한 텍스트는 문서나 예제 파일에도 정상적으로 들어갈 수 있다. Cloudflare는 이를 경로 이동 시도와 결합해 판단하면 각 신호를 따로 볼 때보다 정보 노출을 더 강하게 보여주는 근거가 된다고 설명한다. 응답 규칙은 원본 응답을 Cloudflare WAF 차단 페이지와 HTTP 403으로 바꿔 요청자에게 민감한 정보가 전달되지 않도록 할 수 있다. 다만 원본 서버에서 이미 수행된 작업을 되돌리지는 못한다.
탐지와 차단은 별도로 설계됐다. 탐지는 트래픽을 분석해 요청과 응답에 메타데이터를 붙이고, 규칙이 그 결과에 따라 조치를 결정한다. 보안팀은 자체 트래픽에서 탐지 결과와 관련 엔드포인트·시그니처를 확인한 뒤 애플리케이션에 맞는 정책을 정할 수 있다. 이는 상시 탐지 프레임워크와 요청 기반 Attack Signature Detection의 방식을 확장한다.
탐지 결과에는 다음 응답 필드가 추가된다.
| 필드 | 설명 |
|---|---|
cf.waf.signature.response.confidence | 일치한 시그니처의 신뢰도 값 |
cf.waf.signature.response.categories | 일치한 시그니처의 분류 |
cf.waf.signature.response.ref | 시그니처 참조 ID, 최대 10개 |
첫 전체 트랜잭션 탐지는 주요 취약점의 공격 성공 여부를 확인하는 데 초점을 맞춘다. Cloudflare는 앞으로 데이터 노출과 유출 신호 탐지 등 다른 용도로 범위를 넓힐 계획이다.
관리형 규칙과 사용자 지정 규칙
모든 고객은 Cloudflare Managed Response Firewall Default 규칙 세트를 통해 전체 트랜잭션 탐지를 사용할 수 있다. 기본적으로 모든 요청에 적용되며, 시그니처가 일치하면 응답을 차단하고 표준 WAF 차단 페이지를 반환한다. 고객은 특정 경로를 제외하거나 적용 범위를 제한해 오탐 위험을 줄일 수 있다.
사용자 지정 응답 규칙은 요청·응답 속성과 탐지 결과를 조합해 차단 여부를 정한다. 예를 들어 인증 게이트웨이가 요청을 내부 사용자로 표시하지 않았을 때 관리 화면이 노출되는 상황을 막는 규칙은 다음과 같다.
http.request.uri.path starts_with "/admin" and not http.request.headers["x-internal-user"][0] eq "true" and http.response.code eq 200 and http.response.headers["content-type"][0] contains "text/html"
이 규칙은 인증되지 않은 요청이 /admin을 대상으로 하고, 원본 서버가 성공 상태의 HTML 관리 페이지를 실제로 반환할 때만 차단한다. 일반적인 인증 실패, 리디렉션, 관리 페이지가 아닌 트래픽은 차단하지 않는다.
모든 고객은 로그와 차단 조치를 지원하는 사용자 지정 응답 규칙을 최대 3개까지 만들 수 있다. 사용할 수 있는 필드와 함수는 각 요금제의 요청 사용자 지정 규칙 이용 범위에 따른다. 응답 본문을 대상으로 규칙을 만드는 기능은 아직 제공되지 않는다.
유료 고객은 cf.waf.signature.response.* 필드를 호스트 이름, URL 경로, 출발지 IP, 요청 헤더 등과 조합해 맞춤 정책을 만들 수 있다. Cloudflare는 이 응답 필드를 모든 계정에 순차적으로 적용하고 있으며, 아직 이용할 수 없는 고객은 계정 담당자에게 문의해야 한다.
관리형 또는 사용자 지정 응답 규칙이 트랜잭션을 기록하거나 차단하면 이벤트가 Security Events에 표시된다. 대응 담당자는 요청의 전체 맥락과 조치를 취한 규칙을 확인할 수 있다. 현재 요청만 분석하는 규칙과 전체 트랜잭션 규칙은 같은 분석 페이지에 함께 표시되며, 응답 규칙 이벤트는 Managed Rules 또는 Custom Rules 서비스에 포함된다.
이용 방법
전체 트랜잭션 탐지는 Cloudflare를 통해 트래픽을 프록시하는 모든 zone에서 일반 제공된다. 대시보드의 Security > Security Rules에서 보호 적용 여부를 확인할 수 있다. 정책을 조정하려면 Security Analytics에서 전체 트랜잭션 탐지 결과를 살펴본 뒤 애플리케이션에 맞는 응답 단계 규칙을 만들면 된다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요