Como usar transformações de texto no AWS WAF - AWS WAF, AWS Firewall Manager, e AWS Shield Advanced

Como usar transformações de texto no AWS WAF

Esta seção explica como fornecer transformações para o AWS WAF aplicar antes de inspecionar a solicitação.

Em instruções que busquem padrões ou definam restrições, você pode fornecer transformações para o AWS WAF aplicar antes de inspecionar a solicitação. A transformação reformata uma solicitação da Web para eliminar algumas das formatações incomuns que os invasores usam em uma tentativa de contornar o AWS WAF.

Quando você usa isso com a seleção do componente de solicitação de corpo JSON, o AWS WAF aplica suas transformações após analisar e extrair os elementos a serem inspecionados do JSON. Para ter mais informações, consulte Corpo JSON.

Se você fornecer mais de uma transformação, também definirá a ordem em que o AWS WAF deve aplicá-las.

WCUs:Cada transformação de texto é de 10 WCUs.

A documentação do console e da API do AWS WAF também fornece orientações para essas configurações nos seguintes locais:

  • Criador de regras no console:Transformação de texto. Essa opção está disponível quando você usa componentes de solicitação.

  • Conteúdo da instrução da API: TextTransformations

Opções para transformações de texto

Cada listagem de transformação mostra as especificações do console e da API seguidas pela descrição.

Base64 decode – BASE64_DECODE

O AWS WAF decodifica uma string codificada em Base64.

Base64 decode extension – BASE64_DECODE_EXT

AWS WAF decodifica uma string codificada em Base64, mas usa uma implementação tolerante que ignora caracteres que não são válidos.

Command line – CMD_LINE

Esta opção mitiga situações em que os atacantes podem estar injetando um comando de linha de comando do sistema operacional e estão usando formatação incomum para disfarçar todo o comando ou parte dele.

Use essa opção para executar as seguintes transformações:

  • Excluir os seguintes caracteres: \ " ' ^

  • Excluir espaços antes os seguintes caracteres: / (

  • Substituir os seguintes caracteres por um espaço: , ;

  • Substituir vários espaços por um espaço

  • Converter as letras maiúsculas, A-Z, em minúsculas, a-z

Compress whitespace – COMPRESS_WHITE_SPACE

O AWS WAF comprime o espaço em branco substituindo vários espaços por um espaço e substituindo os seguintes caracteres por um caractere de espaço (ASCII 32):

  • Quebra de página (ASCII 12)

  • Tabulação (ASCII 9)

  • Nova linha (ASCII 10)

  • Retorno de carro (ASCII 13)

  • Tabulação vertical (ASCII 11)

  • Espaço rígido (ASCII 160)

CSS decode – CSS_DECODE

AWS WAF decodifica caracteres que foram codificados utilizando regras de escape CSS 2.x syndata.html#characters. Essa função utiliza até dois bytes no processo de decodificação e, portanto, pode ajudar a descobrir caracteres ASCII codificados com CSS que normalmente não seriam codificados. Ela também é útil para combater a evasão, que é uma combinação de barra invertida e caracteres não hexadecimais. Por exemplo, ja\vascript para javascript.

Escape sequences decode – ESCAPE_SEQ_DECODE

AWS WAF decodifica as seguintes sequências de escape ANSI C: \a, \b, \f, \n, \r, \t, \v, \\, \?, \', \", \xHH (hexadecimal), \0OOO (octal). As codificações que não são válidas permanecem na saída.

Hex decode – HEX_DECODE

AWS WAF decodifica uma string de caracteres hexadecimais em um binário.

HTML entity decode – HTML_ENTITY_DECODE

O AWS WAF substitui caracteres representados em formato hexadecimal &#xhhhh; ou formato decimal &#nnnn; pelos caracteres correspondentes.

O AWS WAF substitui os caracteres codificados em HTML a seguir por caracteres não codificados. Essa lista usa codificação HTML em minúsculas, mas o tratamento não diferencia maiúsculas de minúsculas, por exemplo, &QuOt; e " são tratados da mesma forma.

Caractere codificado em HTML

substituído por…

"

"

&

&

<

<

&gt;

>

&nbsp; ou &NonBreakingSpace;

espaço incondicional, decimal 160

&NewLine;

\n, decimal 10

&Tab;

\t, decimal 9

&lcub; ou &lbrace;

{

&verbar;, &vert; ou &VerticalLine;

|

&rcub; ou &rbrace;

}

&excl;

!

&num;

#

&dollar;

$

&percent; ou &percnt;

%

&apos;

\

&lpar;

(

&rpar;

)

&ast; ou &midast;

*

&plus;

+

&comma;

,

&period;

.

&sol;

/

&colon;

:

&semi;

;

&equals;

=

&quest;

?

&tilde; ou &DiacriticalTilde;

~

&minus;

-

&lsqb; ou &lbrack;

[

&bsol;

\\

&rsqb; ou &rbrack;

]

&hat;

^

&lowbar; ou &underbar;

_

&grave; ou &DiacriticalGrave;

`

JS decode – JS_DECODE

O AWS WAF decodifica sequências de escape em JavaScript. Se um código \uHHHH estiver no intervalo de código ASCII de largura total de FF01-FF5E, o byte maior será utilizado para detectar e ajustar o byte menor. Caso contrário, somente o byte menor será utilizado, e o byte maior será zerado, causando uma possível perda de informações.

Lowercase – LOWERCASE

O AWS WAF converte letras maiúsculas (A-Z) em minúsculas (a-z).

MD5 – MD5

AWS WAF calcula um hash MD5 a partir dos dados na entrada. O hash calculado está em um formato binário bruto.

None – NONE

O AWS WAF inspeciona a solicitação da web conforme recebida, sem nenhuma transformação de texto.

Normalize path – NORMALIZE_PATH

O AWS WAF normaliza a string de entrada ao remover várias barras, autorreferências de diretório e referências anteriores de diretórios que não estão no início da entrada.

Normalize path Windows – NORMALIZE_PATH_WIN

O AWS WAF converte caracteres de barra invertida em barras progressivas e, em seguida, processa a string resultante usando a transformação NORMALIZE_PATH.

Remove nulls – REMOVE_NULLS

O AWS WAF remove todos os bytes NULL da entrada.

Replace comments – REPLACE_COMMENTS

AWS WAF substitui cada ocorrência de um comentário no estilo C (/* ... */) por um único espaço. Ele não comprime várias ocorrências consecutivas. Substitui comentários sem término por um espaço (ASCII 0x20). Isso não altera o encerramento independente de um comentário (*/).

Replace nulls – REPLACE_NULLS

O AWS WAF substitui cada byte NULL na entrada por caracteres de espaço (ASCII 0x20).

SQL hex decode – SQL_HEX_DECODE

O AWS WAF decodifica dados hexadecimais de SQL. Por exemplo, o AWS WAF decodifica (0x414243) para (ABC).

URL decode – URL_DECODE

O AWS WAF decodifica um valor codificado por URL.

URL decode Unicode – URL_DECODE_UNI

Como URL_DECODE, mas com suporte para codificação %u específica da Microsoft. Se o código estiver no intervalo de código ASCII de largura total de FF01-FF5E, o byte maior será utilizado para detectar e ajustar o byte menor. Caso contrário, somente o byte menor será utilizado, e o byte maior será zerado.

UTF8 to Unicode – UTF8_TO_UNICODE

AWS WAF converte todas as sequências de caracteres UTF-8 em Unicode. Isso ajuda a normalizar a entrada e a minimizar falsos positivos e falso-negativos para idiomas diferentes do inglês.