CSSとPNGファイルとがWAFのXSSに引っかかった【AWS備忘録】

AWS WAF & Shields

先日AWS WAF配下にある、WordPressの作業をしていたら、WAFに引っかかった。CSSとPNGファイルのアップロードがXSSルールに引っかかったとのことなので、記録代わりにメモ。

1.事象の詳細

作業としては、PNGファイルのアップロードと各ページでカスタムCSSを適用する作業。

しかし、どちらもサーバーからの応答が返ってこないと作業者からの報告があり、コンソールを確認すると、設定していたコアルールセット (CRS) マネージドルールグループのCrossSiteScripting_BODYがブロックしていた。

2.コアルールセット (CRS) マネージドルールグループとCrossSiteScripting_BODYについて

コアルールセット (CRS) ルールグループ

コアルールセット (CRS) ルールグループは、Webアプリケーションの一般的な攻撃を防ぐためのルールをまとめたもの。HTTPリクエストのヘッダー、ボディの中身を内容を見て、攻撃性のあるリクエストかどうかを検査する。。

リクエストサイズが大きすぎるリクエスト、Botによるアクセス、XSSが疑われるものなどの攻撃をブロックする。

CRSルールグルーブの内容をより詳しく知りたい方は下記サイトをご参照。

ベースラインルールグループ - AWS WAF, AWS Firewall Managerおよび AWS Shield Advanced
AWS ベースラインルールグループはマネージドルールから入手できます。

CrossSiteScripting_BODY

CrossSiteScripting_BODYは、CRSルールグループに含まれているルールの一つでリクエストボディにXSSが疑われる要素がないかを検査するルール。

下記は公式サイトからの抜粋。

ビルトインを使用してリクエスト本文を検査し、一般的なクロスサイトスクリプティング (XSS) パターンがないか調べます。 AWS WAF クロスサイトスクリプティング攻撃ルールステートメントパターンの例には、<script>alert("hello")</script>などのスクリプトあります。

3.CSSとPNGのXSSについて

CSSの場合

JavaScript同様、<style>タグを表示させることができれば、画面の表示を変えることができる。それがCSSを使ったXSS

XSSによって注入されたCSSが悪さをする攻撃をCSSインジェクションというらしい。それなら、SQLインジェクションもXSSの一種と呼べるのかな。

因みに、所詮はCSSファイルなのでできることは限られていて、遭遇する機会は少ないとのこと。そもそもXSSに対して脆弱性があるのであればJavaScriptを埋め込むのだから。そらそうじゃ。

CSSインジェクション | 技術者ブログ | 三井物産セキュアディレクション株式会社
MBSDでWeb脆弱性診断の仕事をしている小山です。 初めてのブログ執筆となりますが、今回はCSSインジェクションという脆弱性について、脆弱性診断の仕事における視点を中心に書きたいと思います。脆弱性の特性上、クロスサイトスクリプティング(X...

PNGの場合

Internet explorerの時代には拡張子がpngでも、内容がHTMLであれば、それを読み込んでしまっていたよう。しかし、同様にpngの中にスクリプトを書いてGoogle chromeで読み込んでも正しく読み込んではくれなかった。

画像ファイルによるクロスサイト・スクリプティング(XSS)傾向と対策
補足 この記事は旧徳丸浩の日記からの転載です( 元URL 、 アーカイブ 、 はてなブックマーク1 、 はてなブックマーク2 )。 備忘のため転載いたしますが、この記事は2007年12月6日に公開されたもので、当時の徳丸の考えを示すものを、...

コメントやピクセルデータ、キャッシュファイルを使用すれば、攻撃できるとのことだけど、少し面倒なので、今回はここで諦めるとする。

ImageMagickを使うWebアプリのセキュリティ - 3. XSS・アクセス制御 | 技術者ブログ | 三井物産セキュアディレクション株式会社
本記事はImageMagick関連の記事の3本目です。ImageMagickの既知の脆弱性、システム情報の漏洩などの問題を扱った1つ目の記事、DoSを扱った2つ目の記事も参照ください。最終となる3回目の今回は、XSSとアクセス制御を…

4.まとめ

WAFの誤検知とはいえ、意外なてセキュリティリテラシーを獲得できた。使える知識かは別だけど。

個人的にはマネージドルールももう少ししきい値や例外ルールを柔軟にカスタマイズできると嬉しいんだけどね。(今はアクセスを許可するとかカウントするくらいしかできないので。)

今回はここまでとします。

タイトルとURLをコピーしました