다음을 통해 공유


Web Application Firewall DRS 및 CRS 규칙 그룹과 규칙

Application Gateway WAF(웹 애플리케이션 방화벽)의 Azure 관리형 DRS(기본 규칙 집합)는 일반적인 취약성 및 악용으로부터 웹 애플리케이션을 적극적으로 보호합니다. Azure에서 관리하는 이러한 규칙 집합은 새 공격 서명을 막기 위해 필요에 따라 업데이트를 받습니다. 기본 규칙 집합에는 Microsoft 위협 인텔리전스 컬렉션 규칙도 통합됩니다. Microsoft 인텔리전스 팀은 향상된 적용 범위, 특정 취약성 패치 및 향상된 가양성 감소를 위해 협력을 통해 이러한 규칙을 작성하고 있습니다.

OWASP 핵심 규칙 집합 3.2(CRS 3.2)를 기반으로 정의된 규칙을 사용하는 옵션도 있습니다.

규칙을 개별적으로 사용하지 않도록 설정하거나 각 규칙에 대해 특정 작업을 설정할 수 있습니다. 이 문서에는 현재 사용 가능한 규칙 및 규칙 집합이 포함되어 있습니다. 게시된 규칙 집합에 업데이트가 필요한 경우 여기에 문서화합니다.

참고 항목

WAF 정책에서 규칙 집합 버전을 변경하면 규칙 집합에 대한 기존 사용자 지정이 새 규칙 집합의 기본값으로 다시 설정됩니다. 참조: 규칙 집합 버전 업그레이드 또는 변경

기본 규칙 집합 2.1

DRS(기본 규칙 집합) 2.1은 OWASP(Open Web Application Security Project) CRS(핵심 규칙 집합) 3.3.2의 기준이며 추가 독점 보호 규칙, Microsoft Threat Intelligence 팀에서 개발한 규칙 및 가양성을 줄이기 위한 서명 업데이트를 포함합니다. 또한 URL 디코딩 이외의 변환도 지원합니다.

DRS 2.1은 Java 주입을 방어하는 새로운 엔진과 새로운 규칙 세트, 초기 파일 업로드 검사 세트 및 CRS 버전에 비해 더 적은 오탐을 제공합니다. 필요에 맞게 규칙을 사용자 지정할 수도 있습니다. 새 Azure WAF 엔진에 대해 자세히 알아봅니다.

DRS 2.1에는 다음 표와 같이 17개의 규칙 그룹이 포함됩니다. 각 그룹에는 여러 규칙이 포함되며 개별 규칙, 규칙 그룹 또는 전체 규칙 집합에 대한 동작을 사용자 지정할 수 있습니다.

위협 유형 규칙 그룹 이름
일반 일반
잠금 메서드(PUT, PATCH) 메소드 적용
프로토콜 및 인코딩 문제 프로토콜 적용
헤더 삽입, 요청 스머글링 및 응답 분할 프로토콜 공격
파일 및 경로 공격 LFI
RFI(원격 파일 포함) 공격 RFI
원격 코드 실행 공격 RCE
PHP 주입 공격 PHP
Node JS 공격 NodeJS
사이트 간 스크립팅 공격 증권 시세 표시기
SQL 삽입 공격 SQLI
세션 고정 공격 세션 고정
JAVA 공격 세션:JAVA
웹쉘 공격(MS) MS-위협인텔리전스-WebShells
AppSec 공격(MS) MS-위협Intel-AppSec
SQL 주입 공격(MS) MS-쓰레트인텔-SQLI
CVE 공격(마이크로소프트) MS-Threat인텔-CVE

DRS 2.1에 대한 미세 조정 지침

Application Gateway WAF에서 DRS 2.1을 시작하는 동안 WAF를 조정하려면 다음 지침을 사용합니다.

규칙 ID 규칙 그룹 설명 추천
942110 SQLi를 참조하십시오. SQL 삽입 공격: 일반적인 삽입 테스트 감지됨 규칙 942110을 사용하지 않도록 설정하고 MSTIC 규칙 99031001로 대체했습니다.
942150 SQLi를 참조하십시오. SQL 삽입 공격 규칙 942150을 사용하지 않도록 설정하고 MSTIC 규칙 99031003로 대체했습니다.
942260 SQLi를 참조하십시오. 기본 SQL 인증 바이패스 시도 감지 2/3 규칙 942260을 사용하지 않도록 설정하고 MSTIC 규칙 99031004로 대체했습니다.
942430 SQLi를 참조하십시오. 제한된 SQL 문자 이상 감지(인수): 특수 문자 # 초과(12) 규칙 942430을 비활성화하십시오. 이 규칙은 너무 많은 잘못된 양성 반응을 유발합니다.
942440 SQLi를 참조하십시오. SQL 주석 시퀀스가 검색됨 규칙 942440을 사용하지 않도록 설정하고 MSTIC 규칙 99031002로 대체했습니다.
99005006 MS-ThreatIntel-WebShells Spring4Shell 상호 작용 시도 SpringShell 취약성을 방지하기 위해 계속 사용
99001014 MS-ThreatIntel-CVEs Spring Cloud 라우팅 식 삽입이 시도됨 - CVE-2022-22963 SpringShell 취약성을 방지하기 위해 계속 사용
99001015 MS-ThreatIntel-WebShells Spring Framework 안전하지 않은 클래스 개체 악용이 시도됨 CVE-2022-22965 SpringShell 취약성을 방지하기 위해 계속 사용
99001016 MS-ThreatIntel-WebShells Spring Cloud Gateway Actuator 삽입이 시도됨 CVE-2022-22947 SpringShell 취약성을 방지하기 위해 계속 사용
99001017 MS-ThreatIntel-CVEs Apache Struts 파일 업로드 악용 시도CVE-2023-50164 Apache Struts 취약성을 방지하기 위해 작업을 차단으로 설정합니다. 이 규칙에는 이상 항목 점수가 지원되지 않습니다.

핵심 규칙 집합 3.2

권장되는 관리 규칙 집합은 기본 규칙 집합 2.1이며, OWASP(Open Web Application Security Project) CRS(핵심 규칙 집합) 3.3.2의 기준이며 Microsoft Threat Intelligence 팀에서 개발한 추가 독점 보호 규칙 및 가양성을 줄이기 위한 서명 업데이트를 포함합니다. DRS 2.1의 대안으로 OWASP CRS 3.2.0 버전을 기반으로 하는 CRS 3.2를 사용할 수 있습니다.

CRS 3.2에는 다음 표와 같이 14개의 규칙 그룹이 포함되어 있습니다. 각 그룹은 비활성화할 수 있는 여러 개의 규칙을 포함합니다.

참고 항목

CRS 3.2는 WAF_v2 SKU에서만 사용할 수 있습니다. CRS 3.2는 새 Azure WAF 엔진에서 실행되므로 CRS 3.1 또는 그 이전으로 다운그레이드할 수 없습니다. 다운그레이드해야 하는 경우 Azure 지원에 문의하세요.

규칙 그룹 이름 위협 유형
일반 일반
새로운 CVE 및 알려진 CVE 알려진 CVEs
잠금 메서드(PUT, PATCH) 요청-911-메소드-강제 실행
포트 및 환경 스캐너 요청-913-스캐너-탐지
프로토콜 및 인코딩 문제 요청-920-프로토콜 적용
헤더 삽입, 요청 스머글링 및 응답 분할 요청-921-프로토콜-공격
파일 및 경로 공격 요청-930-애플리케이션 공격-LFI
RFI(원격 파일 포함) 공격 요청-931-애플리케이션 공격-RFI
원격 코드 실행 공격 요청-932-애플리케이션 공격-RCE
PHP 주입 공격 요청-933-응용 프로그램-공격-PHP
사이트 간 스크립팅 공격 요청-941-애플리케이션 공격-XSS
SQL 삽입 공격 요청-942-애플리케이션 공격-SQLI
세션 고정 공격 요청-943-애플리케이션 공격 세션 고정
JAVA 공격 요청-944-애플리케이션 공격-자바

관리 규칙 집합 튜닝

DRS와 CRS는 기본적으로 WAF 정책의 검색 모드에서 사용하도록 설정됩니다. 관리 규칙 집합 내에서 개별 규칙을 사용하지 않거나 사용하도록 설정하여 애플리케이션 요구 사항을 충족할 수 있습니다. 규칙별로 특정 작업을 설정할 수도 있습니다. DRS/CRS는 블록, 로그 및 변칙 점수 작업을 지원합니다. Bot Manager 규칙 집합은 허용, 차단 및 로그 작업을 지원합니다.

경우에 따라 WAF 평가에서 특정 요청 특성을 생략해야 할 수도 있습니다. 일반적인 예제로는 인증에 사용되는 Active Directory 삽입 토큰이 있습니다. 특정 WAF 규칙이 평가될 때 적용하거나 모든 WAF 규칙 평가에 전역적으로 적용하도록 제외를 구성할 수 있습니다. 제외 규칙은 전체 웹 애플리케이션에 적용됩니다. 자세한 내용은 Application Gateway를 사용하는 WAF(Web Application Firewall) 제외 목록을 참조하세요.

기본적으로 DRS 버전 2.1/CRS 버전 3.2 이상에서는 요청이 규칙과 일치할 때 변칙 점수를 사용합니다. CRS 3.1 이하에서는 기본적으로, 일치하는 요청을 차단합니다. 또한 핵심 규칙 집합에서 미리 구성된 규칙을 무시하려는 경우 동일한 WAF 정책에서 사용자 지정 규칙을 구성할 수 있습니다.

사용자 지정 규칙은 항상 핵심 규칙 집합의 규칙을 평가하기 전에 적용됩니다. 요청이 사용자 지정 규칙과 일치하면 해당 규칙 동작이 적용됩니다. 요청이 차단되거나 백 엔드로 전달됩니다. 다른 사용자 지정 규칙이나 핵심 규칙 집합의 규칙은 처리되지 않습니다.

변칙 채점

CRS 또는 DRS 2.1 이상을 사용하는 경우 WAF는 기본적으로 변칙 채점을 사용하도록 구성됩니다. WAF가 방지 모드인 경우에도 규칙과 일치하는 트래픽은 즉시 차단되지 않습니다. 대신 OWASP 규칙 집합은 각 규칙의 심각도(위험, 오류, 경고 또는 알림)를 정의합니다. 심각도는 변칙 점수라고 하는 요청의 숫자 값에 영향을 줍니다.

규칙 심각도 변칙 점수에 기여하는 값
위험 5
오류 4
경고 3
알림 2

변칙 점수가 5 이상이고 WAF가 방지 모드인 경우 요청이 기록되지만 차단되지는 않습니다. 요청에서 변칙 점수가 5 이상이고 WAF가 검색 모드인 경우 요청이 기록되지만 차단되지는 않습니다.

예를 들어 전체 변칙 점수가 5이므로 방지 모드에서는 하나의 위험 규칙 일치 항목만으로도 WAF에서 요청을 차단하는 데 충분합니다. 그러나 하나의 경고 규칙 일치 항목은 변칙 점수를 3만큼 증가시키며, 이것만으로는 트래픽을 차단하는 데 충분하지 않습니다. 변칙 규칙이 트리거되면 로그에 "일치" 작업이 표시됩니다. 변칙 점수가 5 이상인 경우 WAF 정책이 방지 또는 검색 모드인지 여부에 따라 "차단됨" 또는 "검색됨" 작업으로 트리거되는 별도의 규칙이 있습니다. 자세한 내용은 변칙 채점 모드를 참조하세요.

편집증 수준

각 규칙은 특정 파라노이아 수준 (PL)으로 할당됩니다. Paranoia Level 1(PL1)에 구성된 규칙은 덜 엄격하며 오탐이 거의 발생하지 않습니다. 미세 조정에 대한 최소한의 요구로 기준 보안을 제공합니다. PL2의 규칙은 더 많은 공격을 감지하지만, 조정이 필요한 오탐을 유발할 것으로 예상됩니다.

기본적으로 DRS 2.1 및 CRS 3.2 규칙 버전은 PL1 및 PL2에 모두 할당된 규칙을 포함하여 Paranoia Level 2에서 사전 구성됩니다. PL1에서만 WAF를 사용하려는 경우 PL2 규칙을 모두 사용하지 않도록 설정하거나 해당 작업을 '로그'로 변경할 수 있습니다. PL3 및 PL4는 현재 Azure WAF에서 지원되지 않습니다.

참고 항목

CRS 3.2 규칙 집합에는 PL3 및 PL4의 규칙이 포함되지만 이러한 규칙은 항상 비활성 상태이며 구성된 상태 또는 작업에 관계없이 사용하도록 설정할 수 없습니다.

규칙 집합 버전 업그레이드 또는 변경

업그레이드하거나 새 규칙 집합 버전을 할당하고 기존 규칙 재정의 및 제외를 유지하려는 경우 PowerShell, CLI, REST API 또는 템플릿을 사용하여 규칙 집합 버전을 변경하는 것이 좋습니다. 새 버전의 규칙 집합에는 최신 규칙, 추가 규칙 그룹이 있을 수 있으며, 더 나은 보안을 적용하고 가양성(false positives)을 줄이기 위해 기존 서명에 대한 업데이트가 있을 수 있습니다. 테스트 환경에서 변경 내용의 유효성을 검사하고 필요한 경우 미세 조정한 다음 프로덕션 환경에 배포하는 것이 좋습니다.

참고 항목

Azure Portal을 사용하여 새 관리 규칙 집합을 WAF 정책에 할당하는 경우 규칙 상태, 규칙 작업 및 규칙 수준 제외와 같은 기존 관리 규칙 집합의 모든 이전 사용자 지정이 새 관리 규칙 집합의 기본값으로 다시 설정됩니다. 그러나 사용자 지정 규칙, 정책 설정 및 전역 제외는 새 규칙 집합 할당 중에 영향을 받지 않습니다. 프로덕션 환경에 배포하기 전에 규칙 재정의를 다시 정의하고 변경 내용의 유효성을 검사해야 합니다.

OWASP CRS 3.1

CRS 3.1에는 다음 표와 같이 14개의 규칙 그룹이 포함되어 있습니다. 각 그룹은 비활성화할 수 있는 여러 개의 규칙을 포함합니다. 규칙 집합은 OWASP CRS 3.1.1 버전을 기반으로 합니다.

참고 항목

CRS 3.1은 WAF_v2 SKU에서만 사용할 수 있습니다.

규칙 그룹 이름 설명
일반 일반 그룹
알려진 CVEs 신규 및 알려진 CVE 검색 도움말
요청-911-메소드-강제 실행 잠금 메서드(PUT, PATCH)
요청-913-스캐너-탐지 포트 및 환경 스캐너로부터 보호
요청-920-프로토콜 적용 프로토콜 및 인코딩 문제로부터 보호
요청-921-프로토콜-공격 헤더 삽입, 요청 스머글링 및 응답 분할로부터 보호
요청-930-애플리케이션 공격-LFI 파일 및 경로 공격으로부터 보호
요청-931-애플리케이션 공격-RFI RFI(원격 파일 포함) 공격으로부터 보호
요청-932-애플리케이션 공격-RCE 원격 코드 실행 공격으로부터 보호
요청-933-응용 프로그램-공격-PHP PHP 삽입 공격으로부터 보호
요청-941-애플리케이션 공격-XSS 사이트 간 스크립팅 공격으로부터 보호
요청-942-애플리케이션 공격-SQLI SQL 삽입 공격으로부터 보호
요청-943-애플리케이션 공격 세션 고정 세션 고정 공격으로부터 보호
요청-944-애플리케이션 공격 세션-JAVA JAVA 공격으로부터 보호

봇 매니저 1.0

Bot Manager 1.0 규칙 집합은 악의적인 봇에 대한 보호 및 좋은 봇 검색을 제공합니다. 규칙은 봇 트래픽을 Good, Bad 또는 Unknown 봇으로 분류하여 WAF에서 검색한 봇에 대한 세부적인 제어를 제공합니다.

규칙 그룹 설명
배드봇 잘못된 봇으로부터 보호
굿봇 양호한 봇 식별
언노운봇 알 수 없는 봇 식별

봇 매니저 1.1

Bot Manager 1.1 규칙 집합은 Bot Manager 1.0 규칙 집합의 향상된 기능입니다. 악성 봇에 대한 향상된 보호를 제공하고 좋은 봇 검색을 향상합니다.

규칙 그룹 설명
배드봇 잘못된 봇으로부터 보호
굿봇 양호한 봇 식별
언노운봇 알 수 없는 봇 식별

다음 규칙 그룹 및 규칙은 Application Gateway에서 웹 애플리케이션 방화벽을 사용할 때 사용할 수 있습니다.

2.1 규칙 집합

일반

규칙 ID 변칙 점수 심각도 편집증 수준 설명
200002 중요 - 5 PL1 요청 본문을 구문 분석하지 못함
200003 중요 - 5 PL1 엄격한 유효성 검사에 실패한 다중 파트 요청 본문

메서드 적용

규칙 ID 변칙 점수 심각도 편집증 수준 설명
911100 중요 - 5 PL1 정책에서 허용하지 않는 메서드

PROTOCOL-ENFORCEMENT

규칙 ID 변칙 점수 심각도 편집증 수준 설명
920100 알림 - 2 PL1 잘못된 HTTP 요청 줄
920120 중요 - 5 PL1 다중 파트/양식 데이터 바이패스 시도
920121 중요 - 5 PL2 다중 파트/양식 데이터 바이패스 시도
920160 중요 - 5 PL1 Content-Length HTTP 헤더는 숫자가 아닙니다.
920170 중요 - 5 PL1 본문 내용이 있는 GET 또는 HEAD 요청
920171 중요 - 5 PL1 Transfer-Encoding를 사용한 GET 또는 HEAD 요청
920180 알림 - 2 PL1 POST 요청에 Content-Length 헤더가 누락되었습니다.
920181 경고 - 3 PL1 Content-Length 및 Transfer-Encoding 헤더가 99001003 제공
920190 경고 - 3 PL1 범위: 잘못된 마지막 바이트 값
920200 경고 - 3 PL2 범위: 필드가 너무 많음(6개 이상)
920201 경고 - 3 PL2 범위: pdf 요청에 대한 필드가 너무 많음(35개 이상)
920210 중요 - 5 PL1 여러/충돌하는 연결 헤더 데이터 발견
920220 경고 - 3 PL1 URL Encoding 남용 공격 시도
920230 경고 - 3 PL2 여러 URL Encoding 감지됨
920240 경고 - 3 PL1 URL Encoding 남용 공격 시도
920260 경고 - 3 PL1 유니코드 전자/반자 남용 공격 시도
920270 오류 - 4 PL1 요청에 잘못된 문자(null 문자)
920271 중요 - 5 PL2 요청에 잘못된 문자(인쇄할 수 없는 문자)
920280 경고 - 3 PL1 호스트 헤더가 누락된 요청
920290 경고 - 3 PL1 빈 호스트 헤더
920300 알림 - 2 PL2 Accept 헤더가 누락된 요청
920310 알림 - 2 PL1 요청에 빈 Accept 헤더가 있음
920311 알림 - 2 PL1 요청에 빈 Accept 헤더가 있음
920320 알림 - 2 PL2 사용자 에이전트 헤더 누락
920330 알림 - 2 PL1 빈 사용자 에이전트 헤더
920340 알림 - 2 PL1 요청에 콘텐츠가 있지만 Content-Type 헤더가 누락됨
920341 중요 - 5 PL1 콘텐츠가 있는 요청은 Content-Type 헤더 필요
920350 경고 - 3 PL1 호스트 헤더가 숫자 IP 주소
920420 중요 - 5 PL1 요청 콘텐츠 유형이 정책에서 허용되지 않음
920430 중요 - 5 PL1 HTTP 프로토콜 버전이 정책에서 허용되지 않음
920440 중요 - 5 PL1 URL 파일 확장명이 정책에서 허용되지 않음
920450 중요 - 5 PL1 HTTP 헤더가 정책에서 제한됨
920470 중요 - 5 PL1 잘못된 Content-Type 헤더
920480 중요 - 5 PL1 요청 콘텐츠 유형 문자 집합이 정책에서 허용되지 않음
920500 중요 - 5 PL1 백업 또는 작업 파일에 액세스 시도

PROTOCOL-ATTACK

규칙 ID 변칙 점수 심각도 편집증 수준 설명
921110 중요 - 5 PL1 HTTP 요청 밀반입 공격
921120 중요 - 5 PL1 HTTP 응답 분리 공격
921130 중요 - 5 PL1 HTTP 응답 분리 공격
921140 중요 - 5 PL1 헤더를 통한 HTTP 헤더 삽입 공격
921150 중요 - 5 PL1 페이로드를 통한 HTTP 헤더 삽입 공격(CR/LF 검색됨)
921151 중요 - 5 PL2 페이로드를 통한 HTTP 헤더 삽입 공격(CR/LF 검색됨)
921160 중요 - 5 PL1 페이로드를 통한 HTTP 헤더 삽입 공격(CR/LF 및 헤더-이름 발견)
921190 중요 - 5 PL1 HTTP 분할(요청 파일 이름에서 CR/LF 검색됨)
921200 중요 - 5 PL1 LDAP 삽입 공격

LFI - 로컬 파일 포함

규칙 ID 변칙 점수 심각도 편집증 수준 설명
930100 중요 - 5 PL1 경로 탐색 공격(/../)
930110 중요 - 5 PL1 경로 탐색 공격(/../)
930120 중요 - 5 PL1 OS 파일 액세스 시도
930130 중요 - 5 PL1 제한된 파일 액세스 시도

RFI - 원격 파일 포함

규칙 ID 변칙 점수 심각도 편집증 수준 설명
931100 중요 - 5 PL1 가능한 RFI(원격 파일 포함) 공격: IP 주소를 사용하는 URL 매개 변수
931110 중요 - 5 PL1 가능한 RFI(원격 파일 포함) 공격: 일반 RFI 취약 매개 변수 이름이 URL 페이로드에 사용됨
931120 중요 - 5 PL1 가능한 RFI(원격 파일 포함) 공격: URL 페이로드가 후행 물음표 문자(?)에 사용됨
931130 중요 - 5 PL2 가능한 RFI(원격 파일 포함) 공격 = 오프-도메인 참조/링크

RCE - 원격 명령 실행

규칙 ID 변칙 점수 심각도 편집증 수준 설명
932100 중요 - 5 PL1 원격 명령 실행: Unix 명령 삽입
932105 중요 - 5 PL1 원격 명령 실행: Unix 명령 삽입
932110 중요 - 5 PL1 원격 명령 실행: Windows 명령 삽입
932115 중요 - 5 PL1 원격 명령 실행: Windows 명령 삽입
932120 중요 - 5 PL1 원격 명령 실행: Windows PowerShell 명령 발견
932130 중요 - 5 PL1 원격 명령 실행: Unix 셸 식 또는 Confluence 취약성(CVE-2022-26134)이 발견됨
932140 중요 - 5 PL1 원격 명령 실행: Windows FOR/IF 명령 발견
932150 중요 - 5 PL1 원격 명령 실행: 직접 Unix 명령 실행
932160 중요 - 5 PL1 원격 명령 실행: Unix Shell 코드 발견
932170 중요 - 5 PL1 원격 명령 실행: Shellshock(CVE-2014-6271)
932171 중요 - 5 PL1 원격 명령 실행: Shellshock(CVE-2014-6271)
932180 중요 - 5 PL1 제한된 파일 업로드 시도

PHP 공격

규칙 ID 변칙 점수 심각도 편집증 수준 설명
933100 중요 - 5 PL1 PHP 삽입 공격: 여는/닫는 태그 발견
933110 중요 - 5 PL1 PHP 삽입 공격: PHP 스크립트 파일 업로드 발견
933120 중요 - 5 PL1 PHP 삽입 공격: 구성 지시문 발견
933130 중요 - 5 PL1 PHP 삽입 공격: 변수 발견
933140 중요 - 5 PL1 PHP 삽입 공격: I/O 스트림 발견
933150 중요 - 5 PL1 PHP 삽입 공격: 고위험 PHP 함수 이름 발견
933151 중요 - 5 PL2 PHP 삽입 공격: 보통 위험 PHP 함수 이름 발견
933160 중요 - 5 PL1 PHP 삽입 공격: 고위험 PHP 함수 호출 발견
933170 중요 - 5 PL1 PHP 삽입 공격: 직렬화된 개체 삽입
933180 중요 - 5 PL1 PHP 삽입 공격: 변수 함수 호출 발견
933200 중요 - 5 PL1 PHP 삽입 공격: 래퍼 체계가 검색됨
933210 중요 - 5 PL1 PHP 삽입 공격: 변수 함수 호출 발견

Node JS 공격

규칙 ID 변칙 점수 심각도 편집증 수준 설명
934100 중요 - 5 PL1 Node.js 삽입 공격

XSS - 교차 사이트 스크립팅

규칙 ID 변칙 점수 심각도 편집증 수준 설명
941100 중요 - 5 PL1 libinjection을 통한 XSS 공격 감지됨
941101 중요 - 5 PL2 libinjection을 통한 XSS 공격이 검색됨.
이 규칙은 Referer 헤더가 있는 요청을 검색합니다
941110 중요 - 5 PL1 XSS 필터 - 범주 1: 스크립트 태그 벡터
941120 중요 - 5 PL1 XSS 필터 - 범주 2: 이벤트 처리기 벡터
941130 중요 - 5 PL1 XSS 필터 - 범주 3: 특성 벡터
941140 중요 - 5 PL1 XSS 필터 - 범주 4: JavaScript URI 벡터
941150 중요 - 5 PL2 XSS 필터 - 범주 5: 허용되지 않는 HTML 특성
941160 중요 - 5 PL1 NoScript XSS InjectionChecker: HTML 삽입
941170 중요 - 5 PL1 NoScript XSS InjectionChecker: 특성 삽입
941180 중요 - 5 PL1 노드 유효성 검사기 블랙리스트 키워드
941190 중요 - 5 PL1 스타일시트를 사용하는 XSS
941200 중요 - 5 PL1 VML 프레임을 사용하는 XSS
941210 중요 - 5 PL1 난독 처리된 JavaScript를 사용하는 XSS
941220 중요 - 5 PL1 난독 처리된 VB 스크립트를 사용하는 XSS
941230 중요 - 5 PL1 'embed' 태그를 사용하는 XSS
941240 중요 - 5 PL1 'import' 또는 'implementation' 특성을 사용하는 XSS
941250 중요 - 5 PL1 IE XSS 필터 - 공격 감지됨
941260 중요 - 5 PL1 'meta' 태그를 사용하는 XSS
941270 중요 - 5 PL1 'link' href를 사용하는 XSS
941280 중요 - 5 PL1 'base' 태그를 사용하는 XSS
941290 중요 - 5 PL1 'applet' 태그를 사용하는 XSS
941300 중요 - 5 PL1 'object' 태그를 사용하는 XSS
941310 중요 - 5 PL1 US-ASCII 잘못된 형식의 인코딩 XSS 필터 - 공격 탐지
941320 중요 - 5 PL2 가능한 XSS 공격 감지됨 - HTML 태그 처리기
941330 중요 - 5 PL2 IE XSS 필터 - 공격 감지됨
941340 중요 - 5 PL2 IE XSS 필터 - 공격 감지됨
941350 중요 - 5 PL1 UTF-7 인코딩 IE XSS - 공격 탐지
941360 중요 - 5 PL1 JavaScript 난독 처리 탐지
941370 중요 - 5 PL1 JavaScript 전역 변수 발견
941380 중요 - 5 PL2 AngularJS 클라이언트 쪽 템플릿 삽입이 검색됨

SQLI - SQL 삽입

규칙 ID 변칙 점수 심각도 편집증 수준 설명
942100 중요 - 5 PL1 libinjection을 통한 SQL 삽입 공격 감지됨
942110 경고 - 3 PL2 SQL 삽입 공격: 일반적인 삽입 테스트 감지됨
942120 중요 - 5 PL2 SQL 삽입 공격: SQL 연산자 감지됨
942130 중요 - 5 PL2 SQL 주입 공격: SQL 동어반복이 감지됨
942140 중요 - 5 PL1 SQL 삽입 공격: 일반 DB 이름이 검색됨
942150 중요 - 5 PL2 SQL 삽입 공격
942160 중요 - 5 PL1 sleep() 또는 benchmark()를 사용하여 블라인드 sqli 테스트를 감지합니다.
942170 중요 - 5 PL1 조건부 쿼리를 포함하여 SQL benchmark 및 sleep 삽입 공격 감지
942180 중요 - 5 PL2 기본 SQL 인증 바이패스 시도 감지 1/3
942190 중요 - 5 PL1 MSSQL 코드 실행 및 정보 수집 시도 감지
942200 중요 - 5 PL2 MySQL 주석-/공백-난독 처리된 삽입 및 억음 악센트 기호 종료 감지
942210 중요 - 5 PL2 연결된 SQL 삽입 시도 감지 1/2
942220 중요 - 5 PL1 정수 오버플로 공격 검색, 3.0.00738585072007e-308이 “매직 넘버” 크래시인 경우를 제외하고 skipfish에서 가져옴
942230 중요 - 5 PL1 조건부 SQL 삽입 시도 감지
942240 중요 - 5 PL1 MySQL 문자 집합 스위치 및 MSSQL DoS 시도 감지
942250 중요 - 5 PL1 MATCH AGAINST, MERGE 및 EXECUTE IMMEDIATE 삽입 감지
942260 중요 - 5 PL2 기본 SQL 인증 바이패스 시도 감지 2/3
942270 중요 - 5 PL1 기본적인 sql 삽입 검색. mysql, oracle 등에 대한 일반적인 공격 문자열
942280 중요 - 5 PL1 Postgres pg_sleep 삽입, waitfor delay 공격 및 데이터베이스 종료 시도 감지
942290 중요 - 5 PL1 기본적인 MongoDB SQL 삽입 시도 찾기
942300 중요 - 5 PL2 MySQL 주석, 조건 및 ch(a)r 삽입이 검색됨
942310 중요 - 5 PL2 연결된 SQL 삽입 시도 감지 2/2
942320 중요 - 5 PL1 MySQL 및 PostgreSQL에 저장된 저장 프로시저/함수 삽입 감지
942330 중요 - 5 PL2 클래식 SQL 삽입 프로빙 감지 1/2
942340 중요 - 5 PL2 기본 SQL 인증 바이패스 시도 감지 3/3
942350 중요 - 5 PL1 MySQL UDF 삽입 및 기타 데이터/구조 조작 시도 감지
942360 중요 - 5 PL1 연결된 기본 SQL 삽입 및 SQLLFI 시도 감지
942361 중요 - 5 PL2 키워드 alter 또는 union을 기준으로 기본 SQL 삽입 감지
942370 중요 - 5 PL2 클래식 SQL 삽입 프로빙 감지 2/2
942380 중요 - 5 PL2 SQL 삽입 공격
942390 중요 - 5 PL2 SQL 삽입 공격
942400 중요 - 5 PL2 SQL 삽입 공격
942410 중요 - 5 PL2 SQL 삽입 공격
942430 경고 - 3 PL2 제한된 SQL 문자 이상 감지(인수): 특수 문자 # 초과(12)
942440 중요 - 5 PL2 SQL 주석 시퀀스가 검색됨
942450 중요 - 5 PL2 SQL 16진수 Encoding이 식별됨
942470 중요 - 5 PL2 SQL 삽입 공격
942480 중요 - 5 PL2 SQL 삽입 공격
942500 중요 - 5 PL1 MySQL 인라인 주석이 감지됨
942510 중요 - 5 PL2 틱 또는 백틱에 의한 SQLi 우회 시도가 감지됨.

SESSION-FIXATION

규칙 ID 변칙 점수 심각도 편집증 수준 설명
943100 중요 - 5 PL1 가능한 세션 고정 공격: HTML의 쿠키 값 설정
943110 중요 - 5 PL1 가능한 세션 고정 공격: 오프-도메인 참조 페이지가 있는 SessionID 매개 변수 이름
943120 중요 - 5 PL1 가능한 세션 고정 공격: 참조 페이지가 없는 SessionID 매개 변수 이름

JAVA 공격

규칙 ID 변칙 점수 심각도 편집증 수준 설명
944100 중요 - 5 PL1 원격 명령 실행: Apache Struts, Oracle WebLogic
944110 중요 - 5 PL1 잠재적 페이로드 실행 검색
944120 중요 - 5 PL1 가능한 페이로드 실행 및 원격 명령 실행
944130 중요 - 5 PL1 의심스러운 Java 클래스
944200 중요 - 5 PL2 Java 역직렬화 Apache Commons 악용
944210 중요 - 5 PL2 Java serialization을 사용할 수 있음
944240 중요 - 5 PL2 원격 명령 실행: Java 직렬화 및 Log4j 취약성(CVE-2021-44228, CVE-2021-45046)
944250 중요 - 5 PL2 원격 명령 실행: 의심스러운 Java 메서드가 검색됨

MS-ThreatIntel-WebShells

규칙 ID 변칙 점수 심각도 편집증 수준 설명
99005002 중요 - 5 PL2 웹 셸 상호 작용 시도(POST)
99005003 중요 - 5 PL2 웹 셸 업로드 시도(POST) - CHOPPER PHP
99005004 중요 - 5 PL2 웹 셸 업로드 시도(POST) - CHOPPER ASPX
99005005 중요 - 5 PL2 웹 셸 상호 작용 시도
99005006 중요 - 5 PL2 Spring4Shell 상호 작용 시도

MS-ThreatIntel-AppSec

규칙 ID 변칙 점수 심각도 편집증 수준 설명
99030001 중요 - 5 PL2 헤더의 경로 통과 우회(/.././../)
99030002 중요 - 5 PL2 요청 본문의 경로 통과 우회(/.././../)

MS-ThreatIntel-SQLI

규칙 ID 변칙 점수 심각도 편집증 수준 설명
99031001 경고 - 3 PL2 SQL 삽입 공격: 일반적인 삽입 테스트 감지됨
99031002 중요 - 5 PL2 SQL 주석 시퀀스가 검색됨
99031003 중요 - 5 PL2 SQL 삽입 공격
99031004 중요 - 5 PL2 기본 SQL 인증 바이패스 시도 감지 2/3

MS-ThreatIntel-CVEs

규칙 ID 변칙 점수 심각도 편집증 수준 설명
99001001 중요 - 5 PL2 알려진 자격 증명으로 F5 tmui(CVE-2020-5902) REST API 악용 시도
99001002 중요 - 5 PL2 Citrix NSC_USER 디렉터리 통과 시도함 CVE-2019-19781
99001003 중요 - 5 PL2 Atlassian Confluence Widget Connector 악용 시도함 CVE-2019-3396
99001004 중요 - 5 PL2 Pulse Secure 사용자 지정 템플릿 악용 시도함 CVE-2020-8243
99001005 중요 - 5 PL2 SharePoint 형식 변환기 악용 시도함 CVE-2020-0932
99001006 중요 - 5 PL2 Pulse Connect 디렉터리 통과 시도함 CVE-2019-11510
99001007 중요 - 5 PL2 Junos OS J-Web 로컬 파일 포함 시도함 CVE-2020-1631
99001008 중요 - 5 PL2 Fortinet 경로 통과 시도함 CVE-2018-13379
99001009 중요 - 5 PL2 Apache struts ognl 삽입 시도함 CVE-2017-5638
99001010 중요 - 5 PL2 Apache struts ognl 삽입 시도함 CVE-2017-12611
99001011 중요 - 5 PL2 Oracle WebLogic 경로 통과 시도함 CVE-2020-14882
99001012 중요 - 5 PL2 Telerik WebUI 안전하지 않은 역직렬화 악용 시도함 CVE-2019-18935
99001013 중요 - 5 PL2 SharePoint 안전하지 않은 XML 역직렬화 시도함 CVE-2019-0604
99001014 중요 - 5 PL2 Spring Cloud 라우팅 식 삽입이 시도됨 - CVE-2022-22963
99001015 중요 - 5 PL2 Spring Framework 안전하지 않은 클래스 개체 악용이 시도됨 CVE-2022-22965
99001016 중요 - 5 PL2 Spring Cloud Gateway Actuator 삽입이 시도됨 CVE-2022-22947
99001017* 해당 없음(N/A) 해당 없음(N/A) Apache Struts 파일 업로드 악용 시도CVE-2023-50164

* 이 규칙의 작업은 기본적으로 로그로 설정됩니다. Apache Struts 취약성을 방지하기 위해 작업을 차단으로 설정합니다. 이 규칙에 대해 변칙 점수가 지원되지 않습니다.

참고 항목

WAF의 로그를 검토하는 경우 949110 규칙 ID가 표시될 수 있습니다. 규칙 설명에 인바운드 변칙 점수 초과가 포함될 수 있습니다.

이 규칙은 요청에 대한 총 변칙 점수가 허용되는 최대 점수를 초과했음을 나타냅니다. 자세한 내용은 변칙 채점을 참조하세요.

다음 규칙 집합(CRS 3.0 및 CRS 2.2.9 그룹 및 규칙)은 Application Gateway의 Azure Web Application Firewall에서 더 이상 지원되지 않습니다. DRS 2.1 / CRS 3.2로 업그레이드하는 것이 좋습니다.

3.0 규칙 집합

일반

RuleId 설명
200004 가능한 다중 항목 불일치 경계

KNOWN-CVES

RuleId 설명
800100 log4j 취약성 CVE-2021-44228, CVE-2021-45046을 검색하고 완화하는 데 도움이 되는 규칙
800110 Spring4Shell 상호 작용 시도
800111 Spring Cloud 라우팅 식 삽입이 시도됨 - CVE-2022-22963
800112 Spring Framework 안전하지 않은 클래스 개체 악용이 시도됨 - CVE-2022-22965
800113 Spring Cloud Gateway Actuator 삽입이 시도됨 - CVE-2022-22947

요청-911-METHOD-ENFORCEMENT

RuleId 설명
911100 정책에서 허용하지 않는 메서드

요청-913-SCANNER-DETECTION

RuleId 설명
913100 보안 스캐너와 연결된 사용자-에이전트 발견
913110 보안 스캐너와 연결된 요청 헤더 발견
913120 보안 스캐너와 연결된 요청 파일 이름/인수 발견
913101 스크립팅/일반 HTTP 클라이언트와 연결된 사용자-에이전트 발견
913102 웹 크롤러/봇과 연결된 사용자-에이전트 발견

요청-920-PROTOCOL-ENFORCEMENT

RuleId 설명
920100 잘못된 HTTP 요청 줄
920130 요청 본문을 구문 분석하지 못함
920140 엄격한 유효성 검사에 실패한 다중 파트 요청 본문
920160 Content-Length HTTP 헤더는 숫자가 아닙니다.
920170 본문 내용이 있는 GET 또는 HEAD 요청
920180 POST 요청에 Content-Length 헤더가 누락되었습니다.
920190 range = 잘못된 마지막 바이트 값
920210 여러/충돌하는 연결 헤더 데이터 발견
920220 URL Encoding 남용 공격 시도
920240 URL Encoding 남용 공격 시도
920250 UTF8 Encoding 남용 공격 시도
920260 유니코드 전자/반자 남용 공격 시도
920270 요청에 잘못된 문자(null 문자)
920280 호스트 헤더가 누락된 요청
920290 빈 호스트 헤더
920310 요청에 빈 Accept 헤더가 있음
920311 요청에 빈 Accept 헤더가 있음
920330 빈 사용자 에이전트 헤더
920340 요청에 콘텐츠는 있지만 Content-Type 헤더 누락
920350 호스트 헤더가 숫자 IP 주소
920380 요청에 인수가 너무 많음
920360 인수 이름이 너무 김
920370 인수 값이 너무 김
920390 총 인수 크기 초과
920400 업로드된 파일 크기가 너무 큼
920410 업로드된 총 파일 크기가 너무 큼
920420 요청 콘텐츠 유형이 정책에서 허용되지 않음
920430 HTTP 프로토콜 버전이 정책에서 허용되지 않음
920440 URL 파일 확장명이 정책에서 허용되지 않음
920450 HTTP 헤더가 정책에서 제한됨(%@{MATCHED_VAR})
920200 범위 = 필드가 너무 많음(6개 이상)
920201 범위 = pdf 요청에 대한 필드가 너무 많음(35개 이상)
920230 여러 URL Encoding 감지됨
920300 Accept 헤더가 누락된 요청
920271 요청에 잘못된 문자(인쇄할 수 없는 문자)
920320 사용자 에이전트 헤더 누락
920272 요청에 잘못된 문자(ascii 127 미만의 인쇄 가능한 문자 이외의)
920202 범위 = pdf 요청에 대한 필드가 너무 많음(6개 이상)
920273 요청에 잘못된 문자(매우 엄격한 집합 이외의)
920274 요청 헤더에 잘못된 문자(매우 엄격한 집합 이외의)
920460 비정상적인 이스케이프 문자

요청-921-PROTOCOL-ATTACK

RuleId 설명
921100 HTTP 요청 밀반입 공격
921110 HTTP 요청 밀반입 공격
921120 HTTP 응답 분리 공격
921130 HTTP 응답 분리 공격
921140 헤더를 통한 HTTP 헤더 삽입 공격
921150 페이로드를 통한 HTTP 헤더 삽입 공격(CR/LF 검색됨)
921160 페이로드를 통한 HTTP 헤더 삽입 공격(CR/LF 및 헤더-이름 발견)
921151 페이로드를 통한 HTTP 헤더 삽입 공격(CR/LF 검색됨)
921170 HTTP 매개 변수 오염
921180 HTTP 매개 변수 오염(%@{TX.1})

요청-930-애플리케이션-ATTACK-LFI

RuleId 설명
930100 경로 탐색 공격(/../)
930110 경로 탐색 공격(/../)
930120 OS 파일 액세스 시도
930130 제한된 파일 액세스 시도

요청-931-애플리케이션-ATTACK-RFI

RuleId 설명
931100 가능한 원격 파일 포함(RFI) 공격 = IP 주소를 사용하는 URL 매개 변수
931110 가능한 원격 파일 포함(RFI) 공격 = 일반 RFI 취약한 매개 변수 이름이 URL 페이로드에 사용됨
931120 가능한 원격 파일 포함(RFI) 공격 = URL 페이로드가 후행 물음표 문자(?)에 사용됨
931130 가능한 원격 파일 포함(RFI) 공격 = 오프-도메인 참조/링크

요청-932-애플리케이션-ATTACK-RCE

RuleId 설명
932120 원격 명령 실행 = Windows PowerShell 명령 발견
932130 Application Gateway WAF v2: 원격 명령 실행: Unix 셸 식, Confluence 취약성(CVE-2022-26134) 또는 Text4Shell(CVE-2022-42889)이 발견됨

Application Gateway WAF v1: 원격 명령 실행: Unix 셸 식
932140 원격 명령 실행 = Windows FOR/IF 명령 발견
932160 원격 명령 실행 = Unix 셸 코드 발견
932170 원격 명령 실행 = Shellshock(CVE-2014-6271)
932171 원격 명령 실행 = Shellshock(CVE-2014-6271)

요청-933-애플리케이션-ATTACK-PHP

RuleId 설명
933100 PHP 삽입 공격 = 여는/닫는 태그 발견
933110 PHP 삽입 공격 = PHP 스크립트 파일 업로드 발견
933120 PHP 삽입 공격 = 구성 지시문 발견
933130 PHP 삽입 공격 = 변수 발견
933150 PHP 삽입 공격 = 고위험 PHP 함수 이름 발견
933160 PHP 삽입 공격 = 고위험 PHP 함수 호출 발견
933180 PHP 삽입 공격 = 변수 함수 호출 발견
933151 PHP 삽입 공격 = 보통 위험 PHP 함수 이름 발견
933131 PHP 삽입 공격 = 변수 발견
933161 PHP 삽입 공격 = 저가치 PHP 함수 호출 발견
933111 PHP 삽입 공격 = PHP 스크립트 파일 업로드 발견

요청-941-신청서-ATTACK-XSS

RuleId 설명
941100 libinjection을 통한 XSS 공격 감지됨
941110 XSS 필터 - 범주 1 = 스크립트 태그 벡터
941130 XSS 필터 - 범주 3 = 특성 벡터
941140 XSS 필터 - 범주 4 = JavaScript URI 벡터
941150 XSS 필터 - 범주 5 = 허용되지 않는 HTML 특성
941180 노드 유효성 검사기 블랙리스트 키워드
941190 스타일시트를 사용하는 XSS
941200 VML 프레임을 사용하는 XSS
941210 난독 처리된 JavaScript 또는 Text4Shell을 사용하는 XSS(CVE-2022-42889)
941220 난독 처리된 VB 스크립트를 사용하는 XSS
941230 'embed' 태그를 사용하는 XSS
941240 'import' 또는 'implementation' 특성을 사용하는 XSS
941260 'meta' 태그를 사용하는 XSS
941270 'link' href를 사용하는 XSS
941280 'base' 태그를 사용하는 XSS
941290 'applet' 태그를 사용하는 XSS
941300 'object' 태그를 사용하는 XSS
941310 US-ASCII 잘못된 형식의 인코딩 XSS 필터 - 공격 탐지
941330 IE XSS 필터 - 공격 감지됨
941340 IE XSS 필터 - 공격 감지됨
941350 UTF-7 인코딩 IE XSS - 공격 탐지
941320 가능한 XSS 공격 감지됨 - HTML 태그 처리기

요청-942-APPLICATION-ATTACK-SQLI

RuleId 설명
942100 libinjection을 통한 SQL 삽입 공격 감지됨
942110 SQL 삽입 공격: 일반적인 삽입 테스트 감지됨
942130 SQL 주입 공격: SQL 동어반복이 감지됨
942140 SQL 삽입 공격 = 일반 DB 이름 감지됨
942160 sleep() 또는 benchmark()를 사용하여 블라인드 sqli 테스트를 감지합니다.
942170 조건부 쿼리를 포함하여 SQL benchmark 및 sleep 삽입 공격 감지
942190 MSSQL 코드 실행 및 정보 수집 시도 감지
942200 MySQL 주석-/공백-난독 처리된 삽입 및 억음 악센트 기호 종료 감지
942230 조건부 SQL 삽입 시도 감지
942260 기본 SQL 인증 바이패스 시도 감지 2/3
942270 기본적인 sql 삽입 검색. mysql oracle 및 기타에 대한 일반적인 공격 문자열
942290 기본적인 MongoDB SQL 삽입 시도 찾기
942300 MySQL 주석, 조건 및 ch(a)r 삽입 감지
942310 연결된 SQL 삽입 시도 감지 2/2
942320 MySQL 및 PostgreSQL에 저장된 저장 프로시저/함수 삽입 감지
942330 클래식 SQL 삽입 프로빙 감지 1/2
942340 기본 SQL 인증 바이패스 시도 감지 3/3
942350 MySQL UDF 삽입 및 기타 데이터/구조 조작 시도 감지
942360 연결된 기본 SQL 삽입 및 SQLLFI 시도 감지
942370 클래식 SQL 삽입 프로빙 감지 2/2
942150 SQL 삽입 공격
942410 SQL 삽입 공격
942430 제한된 SQL 문자 이상 감지(인수): 특수 문자 # 초과(12)
942440 SQL 주석 시퀀스가 검색됨
942450 SQL 16진수 Encoding이 식별됨
942251 HAVING 삽입 감지
942460 메타 문자 이상 감지 경고 - 반복적인 단어가 아닌 문자

REQUEST-943-애플리케이션-공격-SESSION-FIXATION

RuleId 설명
943100 가능한 세션 고정 공격 = HTML의 쿠키 값 설정
943110 가능한 세션 고정 공격 = 오프-도메인 참조 페이지가 있는 SessionID 매개 변수 이름
943120 가능한 세션 고정 공격 = 참조 페이지가 없는 SessionID 매개 변수 이름