前回の記事の回答と解説に入っていきます。
なお、この例については一件だけではなく、ここ数年複数目撃しています。
なので、WAFを導入する際の注意点として認知していただけると幸いです。
正解発表!!
前回の問題の正解を発表します!
SQLインジェクションでDBから情報を取得できたのは・・・
HTTPSを使用しているBサイトの方でした。
ではなぜHTTPSの方で取得できたのでしょうか?
まずDBサーバに到達するまでのNW構成を考えてみましょう。(ここらへんは推測です。)
HTTPでの通信は以下のようになっていると予想され、通信経路上のWAFによりパケットの中身を確認できるため、不正な通信はブロックされます。
上記の状況から、SQLインジェクションは有となってもも「sqlmap」によるDBの情報取得はできなかったと推測しています。
一方、HTTPS通信の場合は同じような経路になっていた場合は以下のようになると考えることができます。
よって、WAFが防御機能として適切に働いていおらず「sqlmap」で取得可能な状態になってしまったと予想できます。
HTTPSには通信経路の暗号化を行うという重要な役目があるため、個人情報や認証情報を使用する箇所ではHTTPSを使用しなければなりません。
じゃあどうすればいいの?
この事象を見た際に私はIPAの情報処理試験の問題を思い出しました。
皆さん情報処理試験の過去問を解いて以下のような問題を見たことないですかね?以下はIPAの過去問から取得(https://www.jitec.ipa.go.jp/1_04hanni_sukiru/_index_mondai.html)
この問題の正解は「C」となりますね!(皆さん分かりましたよね。)
ここでは「SSLアクセラレータ」が肝になります。SSLアクセラレータの概要は以下になります。
参考:http://www.atmarkit.co.jp/fsecurity/dictionary/aig/sslaccelerator.html
HTTPSの通信をHTTPに変換してくれる機器と思ってください。もちろん製品によってはロードバランサとしても動作していたりするものもあるかと思います。
なので、WAFの位置としては、SSLアクセラレータの後ろに配置することで、通信内容を解析できWAFの機能として有効に動作できます。(以下は参考の構成)
IPAの問題もただ覚えるだけではなく、知識として入れることで有効に活用できる良い例かなと思いました。
最後に
WAFによる対策の失敗例を記載しましたが、ちゃんとWAFがどういったものでどの場合は遮断でき、どの場合は遮断できないのかを導入する側もちゃんと理解する必要があるということが分かったかと思います。
WAF業者の営業さんも理解していない場合もあると思います。(彼らもノルマが大変そうですし。。)
営業と技術は常に悲しい戦いを繰り広げていますので。
なお、もちろん製品によっては大丈夫なものもあるでしょう。(ModSecurityを拡張したものなんかはアクセラレータはなくてもいけそうですしね。)
あとはWAFを導入するときの考え方として、最終防衛ラインと考える必要があると思っています。
WAFがあるから、セキュリティ対策をしなくていいと思っている人がもしかしたらいるかもしれませんが、それは大きな間違えです。
ちゃんと基本的なセキュリティ対策をした上で、WAFによる防御を行うことで対策は有効になります。
(PCI DSSでもWAFによる「多層防御」といっています。)
WAFで検知できない、アクセス制御の不備等の脆弱性もありますので今一度自分の管理するサーバの状態を見直してみてください。
補足:今回の画像で使用したアイコンはVMwareのサイトのフリー素材から作成しています。以下サイトURLです。
https://communities.vmware.com/thread/400678?start=0&tstart=0
不明点や要望やこういったこともやって欲しいとの要望があれば、お問い合わせページやコメント、ツイッターからでも結構ですので、気軽にご連絡ください。
コメント