AWS WAF에서 텍스트 변환 사용 - AWS WAF, AWS Firewall Manager 및 AWS Shield Advanced

AWS WAF에서 텍스트 변환 사용

이 섹션에서는 요청을 검사하기 전에 적용할 AWS WAF에 대한 변환을 제공하는 방법을 설명합니다.

패턴 또는 집합 제약 조건을 찾는 문에서 요청을 검사하기 전에 AWS WAF에서 적용할 변환을 제공할 수 있습니다. 변환은 공격자가 AWS WAF를 우회하기 위해 사용하는 일부 비정상적인 서식을 제거하기 위해 웹 요청을 다시 포맷합니다.

이 옵션을 JSON 본문 요청 구성 요소 선택과 함께 사용하는 경우 AWS WAF는 JSON에서 검사할 요소를 구문 분석하고 추출한 후 변환을 적용합니다. 자세한 내용은 JSON 본문 섹션을 참조하세요.

하나 이상의 변환을 제공하는 경우 AWS WAF에서 변환을 적용하는 순서도 설정합니다.

WCU – 각 텍스트 변환은 10WCU입니다.

AWS WAF 콘솔 및 API 설명서에서는 다음 위치에서 이러한 설정에 대한 지침도 제공합니다.

  • 콘솔의 규칙 빌더 - 텍스트 변환. 이 옵션은 요청 구성 요소를 사용할 때 제공됩니다.

  • API 문 내용TextTransformations

텍스트 변환을 위한 옵션

각 변환 목록에는 콘솔 및 API 사양과 뒤 이어 설명이 표시됩니다.

Base64 decode – BASE64_DECODE

AWS WAF는 Base64 인코딩 문자열을 디코딩합니다.

Base64 decode extension – BASE64_DECODE_EXT

AWS WAF는 Base64로 인코딩된 문자열을 디코딩하되 유효하지 않은 문자를 무시하는 엄격하지 않은 구현을 사용합니다.

Command line – CMD_LINE

이 옵션은 공격자가 운영 체제 명령줄 명령을 삽입하고 명령의 일부 또는 전부를 위장하기 위해 비정상적인 형식을 사용하는 상황을 완화합니다.

이 옵션을 사용하여 다음 변환을 수행합니다.

  • 다음 문자 삭제: \ " ' ^

  • 다음 문자 앞에 있는 공백 삭제: / (

  • 다음 문자를 공백으로 바꿈: , ;

  • 여러 개의 공백을 하나의 공백으로 바꿈

  • 대문자 A-Z을 소문자 a-z로 변환

Compress whitespace – COMPRESS_WHITE_SPACE

AWS WAF는 여러 공백을 하나의 공백으로 바꾸고 다음 문자를 공백 문자(ASCII 32)로 바꾸어 공백을 압축합니다.

  • 폼피드(ASCII 12)

  • 탭(ASCII 9)

  • 새줄(ASCII 10)

  • 캐리지 리턴(ASCII 13)

  • 세로 탭(ASCII 11)

  • 줄 바꿈하지 않는 공백(ASCII 160)

CSS decode – CSS_DECODE

AWS WAF는 CSS 2.x 이스케이프 규칙 syndata.html#characters를 사용하여 인코딩된 문자를 디코딩합니다. 이 함수는 디코딩 프로세스에서 최대 2바이트를 사용하므로 일반적으로 인코딩되지 않는 CSS 인코딩을 사용하여 인코딩된 ASCII 문자를 찾는 데 도움이 될 수 있습니다. 또한 백슬래시와 16진수가 아닌 문자의 조합인 회피를 방지하는 데 유용합니다. 예를 들어 javascript의 경우 ja\vascript입니다.

Escape sequences decode – ESCAPE_SEQ_DECODE

AWS WAF는 ANSI C 이스케이프 시퀀스 \a, \b, \f, \n, \r, \t, \v, \\, \?, \', \", \xHH(16진수), \0OOO(8진수)를 디코딩합니다. 유효하지 않은 인코딩은 출력에 남아 있습니다.

Hex decode – HEX_DECODE

AWS WAF는 16진수 문자열을 이진수로 디코딩합니다.

HTML entity decode – HTML_ENTITY_DECODE

AWS WAF는 16진수 형식 &#xhhhh; 또는 10진수 형식 &#nnnn;으로 표현된 문자를 해당 문자로 바꿉니다.

AWS WAF에서 다음 HTML로 인코딩된 문자를 인코딩되지 않은 문자로 바꿉니다. 이 목록은 &QuOt; 예시처럼 소문자 HTML 인코딩을 사용하지만 처리는 대소문자를 구분하지 않으며 "는 동일하게 처리됩니다.

HTML로 인코딩된 문자

다음으로 바꿈

"

"

&

&

<

<

&gt;

>

&nbsp; 또는 &NonBreakingSpace;

줄 바꿈하지 않는 공백, 십진수 160

&NewLine;

\n, 10진수 10

&Tab;

\t, 10진수 9

&lcub; 또는 &lbrace;

{

&verbar;,&vert; 또는 &VerticalLine;

|

&rcub; 또는 &rbrace;

}

&excl;

!

&num;

#

&dollar;

$

&percent; 또는 &percnt;

%

&apos;

\

&lpar;

(

&rpar;

)

&ast; 또는 &midast;

*

&plus;

+

&comma;

,

&period;

.

&sol;

/

&colon;

:

&semi;

;

&equals;

=

&quest;

?

&tilde; 또는 &DiacriticalTilde;

~

&minus;

-

&lsqb; 또는 &lbrack;

[

&bsol;

\\

&rsqb; 또는 &rbrack;

]

&hat;

^

&lowbar; 또는 &underbar;

_

&grave; 또는 &DiacriticalGrave;

`

JS decode – JS_DECODE

AWS WAF는 JavaScript 이스케이프 시퀀스를 디코딩합니다. \uHHHH 코드가 FF01-FF5E의 전폭 ASCII 코드 범위에 있으면 상위 바이트를 사용하여 하위 바이트를 감지하고 조정합니다. 그렇지 않으면 하위 바이트만 사용되고 상위 바이트는 0이 되어 정보가 손실될 수 있습니다.

Lowercase – LOWERCASE

AWS WAF에서 대문자(A-Z)를 소문자(a-z)로 변환합니다.

MD5 – MD5

AWS WAF는 입력의 데이터에서 MD5 해시를 계산합니다. 계산된 해시는 원시 이진 형식입니다.

None – NONE

AWS WAF는 텍스트 변환 없이 수신된 웹 요청을 검사합니다.

Normalize path – NORMALIZE_PATH

AWS WAF는 입력의 시작 부분에 있지 않은 다중 슬래시, 디렉터리 자체 참조 및 디렉터리 역참조를 제거하여 입력 문자열을 정상화합니다.

Normalize path Windows – NORMALIZE_PATH_WIN

AWS WAF는 백슬래시 문자를 슬래시로 변환한 다음 NORMALIZE_PATH 변환을 사용하여 결과 문자열을 처리합니다.

Remove nulls – REMOVE_NULLS

AWS WAF는 입력에서 모든 NULL 바이트를 제거합니다.

Replace comments – REPLACE_COMMENTS

AWS WAF는 C 스타일 주석(/* ... */)의 각 항목을 단일 공백으로 바꿉니다. 연속으로 여러 번 나타나는 주석은 압축하지 않습니다. 종료되지 않은 주석도 공백(ASCII 0x20)으로 대체합니다. 주석(*/)의 독립형 종료는 변경되지 않습니다.

Replace nulls – REPLACE_NULLS

AWS WAF는 입력의 각 NULL 바이트를 공백 문자(ASCII 0x20)로 바꿉니다.

SQL hex decode – SQL_HEX_DECODE

AWS WAF에서 SQL 16진수 데이터를 디코딩합니다. 예를 들어 AWS WAF는 (0x414243)를 (ABC)로 디코딩합니다.

URL decode – URL_DECODE

AWS WAF는 URL로 인코딩된 값을 디코딩합니다.

URL decode Unicode – URL_DECODE_UNI

URL_DECODE와 비슷하지만 Microsoft 고유의 %u 인코딩을 지원합니다. 코드가 FF01-FF5E의 전폭 ASCII 코드 범위에 있으면 상위 바이트를 사용하여 하위 바이트를 감지하고 조정합니다. 그렇지 않으면 하위 바이트만 사용되며 상위 바이트는 0이 됩니다.

UTF8 to Unicode – UTF8_TO_UNICODE

AWS WAF는 모든 UTF-8 문자 시퀀스를 유니코드로 변환합니다. 이는 입력을 정규화하고 영어가 아닌 언어에 대한 거짓 긍정 및 거짓 부정 최소화하는데 도움이 됩니다.