終わりなきデータベースのセキュリティ対策で押さえるべきポイントとは
前回は、情報漏えいがもたらす経営リスクと、リスク軽減のためには、従来の境界防御を中心としたセキュリティ対策(Firewall、IDS/IPS、Web Application Firewall)に加え、データベースのセキュリティ対策が重要であることについて簡単にご紹介しました。今回はデータベースを中心に据えたセキュリティ対策についてご紹介します。
攻撃シナリオへの対策は個々に行う必要あり
前回、データベースが攻撃されるシナリオとして、以下の4つをご紹介しました。
- なりすましによる詐欺的行為
- Webサーバ、APサーバの脆弱性を攻撃し、サーバへ侵入してデータベースを直接攻撃
- SQLインジェクションによる攻撃
- オンライン・サービスの境界防御を迂回する新たな攻撃(APT)
これらの攻撃シナリオはどれもデータベースの脆弱性を突いたものではありません。データベース内に正規のユーザとしてログインされると、「そのユーザの権限内で可能なSQLが実行される」ことがデータベースにおける正常な動作であるため、データが持ち出されたり、変更(改ざん)されても防ぎようがないのです。そのため、上記のいずれのシナリオにおいても、それぞれの脆弱性を有する箇所で適切な対策を講じなければなりません。
例えば、SQLインジェクションによる攻撃であれば、「アプリケーションでSQLインジェクションの脆弱性を作らないようにSQLを呼び出す※」という対策が必要です。
※SQLインジェクションの脆弱性を作らないようにSQLを呼び出す方法については、独立行政法人情報処理推進機構(IPA)が「安全なウェブサイトの作り方」の別冊として公開している「安全なSQLの呼び出し方」を参照してください。SQLインジェクションの仕組みと対策が詳細に記述されています。IPAでは、SQLインジェクション以外の脆弱性についても、脆弱性の種類別に対策を公開しています。
しかし、実際に被害に遭ってしまってから、または事前の予防として脆弱性対策を実施するにはある程度の時間を必要とします。図1と図2は、Webサイトの脆弱性の修正に要した日数の傾向を脆弱性の種類別に示したものです。
2つの図を見ていただくとおかわりになると思いますが、Webプログラムの修正のうち66%は90日以内に完了しています。それでも最長3ヵ月を要していますが、残り34%はさらに長期化しており、1,000日以上経過しても対応が完了しないものもあります。SQLインジェクションのように深刻度が高い脆弱性でも対応が長期化していて、修正が追いついていないように見受けられます。
また、最近のサイバー攻撃は、複数の攻撃手法を組み合わせたり、新たな脆弱性を発見し攻撃したり、と攻撃自体が複雑化、巧妙化しており、脆弱性対策とイタチごっこのような状態です。このため、IPAが公開しているような有効な脆弱性対策を積極的に実施することはもちろんですが、どんな攻撃パターンであろうともデータベースに不正アクセスされることを想定したセキュリティ対策を講じておかなければなりません。