目次
- 1.はじめに
- 2.Text Transformation とは
- 3.AWS WAF の Text Transformation 機能一覧
- 4.使い道
- 5.WafCharm と合わせた活用
- 6.おわりに
1. はじめに
2021年6月25日 PDT にて、AWS WAF の Text Transformation の変換パターンが大幅に増えました。
そもそも AWS WAF の Text Transformation とはどんな機能なのか、どのような使い道があるのか、
というところを合わせてご紹介しようと思います。
2. Text Transformation とは
Text Transformation とは WAF が文字列を検査する前に前処理を行う機能です。
例えばLinuxではディレクトリパスの区切り文字が”/”なのに対して、
Windows では “\”であるといった環境による差分や、
Base64 でエンコードされた入力とそうでない入力、といった入力のパターンに対して
同一のシグネチャで検査したいという状況において表現を統一的に扱えます。
表現が統一されれば、検査シグネチャも表現に合わせて複数用意する必要がなくなります。
3. AWS WAF の Text Transformation 機能一覧
https://docs.aws.amazon.com/waf/latest/APIReference/API_TextTransformation.html
合計21種類の変換ルールから最大10個(2021/06/29 JPT 時点)まで同時に適用することができます。ただし、記載した変換処理が順番に全て行われるため、デコード処理によっては or 条件等でコンディションを分ける必要があります。
Type | New? | 説明 |
BASE64_DECODE | New | base64 をデコード |
BASE64_DECODE_EXT | New | 無効な文字を無視するなど寛容な base64 をデコード |
CMD_LINE | コマンドラインに利用される入力パターンを正規化 | |
COMPRESS_WHITE_SPACE | 空白文字を正規化 | |
CSS_DECODE | New | CSS 2.x の escape rule でエンコードされた文字列をデコード |
ESCAPE_SEQ_DECODE | New | ANCI C の escape シーケンスをデコード |
HEX_DECODE | New | 16進数表現をバイナリ表現に正規化 |
HTML_ENTITY_DECODE | html 文字実体参照をデコード | |
JS_DECODE | New | Javascript の escape シーケンスをデコード |
LOWERCASE | 大文字を小文字に変換 | |
MD5 | New | md5 でハッシュ化 |
NONE | 何もしない。Text Transformation を利用しない際に利用する。 | |
NORMALIZE_PATH | New | “//” や “../”といった特殊なディレクトリ表現を正規化 |
NORMALIZE_PATH_WIN | New | Windows のバックスラッシュ表現をスラッシュに変換したのちに NORMALIZE_PATH と同等の変換 |
REMOVE_NULLS | New | NULL を削除 |
REPLACE_COMMENTS | New | C 言語の “/* … */” というコメントをスペースに置き換える。 |
REPLACE_NULLS | New | NULL を空白に置換 |
SQL_HEX_DECODE | New | SQL の 16進数表現をデコード |
URL_DECODE | URIエンコードされた表現をデコード | |
URL_DECODE_UNI | New | URL_DECODE と似た動きだが、マイクロソフトの %u エンコードをサポート |
UTF8_TO_UNICODE | New | UTF-8 を Unicode に変換 |
4. 使い道
元々用意されていた URI_DECODE と LOWERCASE は非常に汎用的に利用することができます。シンプルなシグネチャの作成においても、URI エンコードや、大文字小文字を考慮する機会は多いでしょう。
今回新たに追加された中で言うと、NORMALIZE_PATH も利用できる機会はそれなりに多いのではないかと考えられます。
他は商用のルールで誤検知してしまう特殊な API を、ご自身で補完したいというパワーユーザー向けな印象を持ちます。
WAF のスペシャリストでない限りは特定の入力のみ通過させるような、ホワイトリスト運用専用ルールで活用できる場面があるかもしれません。
5. WafCharm と合わせた活用
WafCharm ユーザー様の方で、Text Transformation を併用することで WafCharm がより便利になるといったことは想定されません。
今後 WafCharm のルールが Text Transformation を利用して最適化されたり、
WafCharm サポートによるルールカスタマイズに利用される可能性はあります。
6. おわりに
今回追加された Text Transformation のパターンはオープンソースの WAF である ModSecurity (https://github.com/SpiderLabs/ModSecurity) に備わっている、高度な Text Transformation 機能から輸入されたようです。高度だから便利ということはなく、使う側のリテラシーが求められるので簡単に利用できるものではない印象です。
WafCharm のユーザー様であれば特に気にせず、
今まで通りシグネチャのカスタマイズや運用をお任せしていただければと思います。