なぜ、SQLインジェクションの対応が遅れるのか?
SQLインジェクション攻撃に利用されるWEBサイトの脆弱性と対策方法が明らかになっているにも関わらず、なぜいまだその攻撃が主流となっているのか?攻撃方法が進化し複雑になっているというのも理由に挙げられるが、多くのケースはWEBサイトを運営する側の対応が間に合っていないということがいえる。ほとんどの企業ではB to B、B to C向けのWEBサイトを持っており、そのサイトのページ数は数千から数万ページに上っている。そのサイトは最近構築したものもあれば、数年前に構築したものもある。日々、WEBサイトが構築、更新されている中で、すべてのWEBサイトを等しいレベルでセキュアに管理、維持できているかというと疑問が残るのは事実だろう。それら全てのページを確実にチェックし、セキュアな状態を維持するためには相当のコストがかかるのである。
そして対策が漏れてしまった脆弱なWEBサイトを日々、SQLインジェクションのツールが虎視眈々と探し回っているのだ。
Oracle Database Firewallの登場
SQLインジェクション攻撃はアプリケーションのコーディングの問題であり、今までオラクルでは、データベース側で対策としてできることは非常に限られていた。バインド変数やDBMS_ASSERTの使用を進めることぐらいしかできなかった。
しかし、2011年Oracle Database Firewallというデータベース・セキュリティに新しい製品が加わったことにより、新たな対策の手段が増えたのである。このOracle Database Firewallはその名の通り、Firewallである。アプリケーションとデータベース間は、SQLを使用してデータのやり取りを行うが、このSQLに対して通過の許可・不許可のポリシーを設定することができる。
Oracle Database Firewallは、アプリケーションとデータベース間のネットワーク上に配置し、ネットワークトラフィックをキャプチャし、その中に含まれるSQLに対してポリシーを設定することができる。機能としては、ブロッキング、モニタリングの2つの機能に大別される。ブロッキングは、SQL単位にPass、Blockの設定を行うことができ、SQLインジェクションのような外部からの不正アクセス、開発者や管理者といった内部からの不必要なアクセスを遮断することができる。モニタリングは、データベースへのすべてのSQLをキャプチャして記録し、ログ分析やレポーティング、不正なアクセスがあった場合のリアルタイムアラートなどを実現する。そして、この二つの機能が両輪となって、SQLインジェクションからの攻撃を防ぐ。つまり、脆弱なアプリケーションから組み立てられたSQLをOracle Database Firewallで的確にブロックすればデータベースへはSQLが届かない。脆弱なWEBサイトのパッチとしてOracle Database Firewallがデータベースを保護するのである。対象となるデータベースは、Oracle Databaseだけでなく、SQL Server、DB2、Sybase等に対応している。
では、どういった仕組みで動作するのか、そのアーキテクチャをご紹介しよう。