SQLインジェクションの仕組みとWAFによる防御

 2016.12.02  Secure Enterprise編集部

2005年頃に国内で初めて確認された“SQLインジェクションは、ここ10年程で急激に被害が増加し、現在ではWebサイト/Webサービス運営者にとって最も警戒すべきサイバー攻撃の一つとなりました。 

また、常にWebサーバ/Webアプリケーションの脆弱性が狙われているため、防御が難しい攻撃手法でもあります。

近年横行するSQLインジェクションに対して、企業はどう対応していけばいいのか?その答えの一つがWAF(Web Application Firewall)の導入です。

今回はSQLインジェクションの仕組みなどを紹介しつつ、SQLインジェクションに対するWAFの有用性を解説します。

同時にシマンテックが提供する「シマンテック クラウド型WAF」について紹介するので、ぜひ導入検討の参考にしてください。

SQLインジェクションは何が恐いのか?

なぜ数あるサイバー攻撃の中でもSQLインジェクションが脅威とされているのか? 

それは、SQLインジェクションがWebサーバ/Webアプリケーションの脆弱性を巧みに突き、比較的簡単に機密情報の搾取や破壊を行えるサイバー攻撃だからです。

SQLインジェクションは、Webサイト/Webサービスにおける入力フォームに不正文字列(SQL)を入力することで、Webサーバ/Webアプリケーションを不正に操作するという至ってシンプルな攻撃手法です。

また、脆弱性は常に発生するものなので、攻撃者にとっては格好の的がいくつも点在している状態でもあります。

従ってWebサーバ/Webアプリケーションの脆弱性が発生してから、ベンダーのセキュリティパッチ(修正プログラム)が提供されるまでの間を狙ったゼロデイ攻撃が行われやすく、全ての運営企業にとって大きな脅威だと言えます。

もう一つは、企業のWebサーバ/Webアプリケーションに対する低いセキュリティ意識SQLインジェクションの深刻化に拍車をかけています。

社内ネットワークに対するセキュリティ環境は十二分に構築しているものの、Webサーバ/Webアプリケーションに対する脅威への対策ができていないという企業が非常に多いのです。

恐らくはファイアウォールやIPS/IDS(不正通信防御/検知システム)といった、従来型のネットワークセキュリティがあれば十分と考えているのでしょう。

しかしこれらセキュリティ製品は、SQLインジェクションなどコマンド実行されるサイバー攻撃の検出精度は低く、WAFで検知したサイバー攻撃の半数以上を検知できなかったとの報告もあります。

SQLインジェクションの発生件数

2011年1月~20148月にかけ、シマンテックが提供する「シマンテック クラウド型WAF」を導入している国内678サイト(※)を対象に攻撃検知件数をまとめたデータによると、最も多かったのはSQLインジェクションによる脆弱性を狙った攻撃という結果が出ています。 

ちなみに2013年下半期では192,000件、2014年上半期には176,000件にも上りました。

もう一つ信頼性の高いデータによると、2016年上半期に発生した“Webサイト改ざん1,619件であり、国内最多数をSQLインジェクションが占めています。

参考:「JPCERT/CC インシデント報告対応レポート[2016年7月1日~2016年9月30日]インシデント報告対応レポート[2016年7月1日~2016年9月30日]

これほど多くの攻撃件数が発生しているにも関わらず、多くの企業がWebサーバ/Webアプリケーションを裸同然で運用しています。

※調査当時の実績であり、2015年5月時点では1,000サイトを超えています

SQLインジェクションの仕組み

ほとんどのWebアプリケーションは、Webサーバデータベース(RDBMS)への問い合わせにSQL文を使用しています。 

例えばECサイトの検索エンジンに「液晶テレビ」と入力すると、それをもとにWebアプリケーションがテンプレート化されたSQL文でWebサーバに要求を送信し、Webサーバがデータベース内に格納された液晶テレビデータをWebアプリケーションに返すことで検索結果ページに液晶テレビが一覧で表示されます。

しかしここで、ユーザーから入力されたデータをWebアプリケーションが適切にチェックできていないと、データベースに不正なSQL文が送信されてしまい内部データを搾取/破壊されてしまいます。

脆弱性のあるWebサーバ/Webアプリケーションは、こうした不正SQL文を命令だと思い実行してしまうので、いとも簡単に情報漏洩やWebサイト改ざんが起きてしまうのです。

具体的な不正SQL文として、シマンテックブログに掲載されたものを以下に紹介します。

攻撃のイメージと影響

 掲示板の投稿を登録したテーブルpostsがあり、以下のSQL文を実行しているとします。$idは外部から指定する変数で、掲示板の投稿IDです。

SELECT body,subject FROM posts WHERE id='$id'

ここで、$id = "' union select id, password from users -- " と外部から指定された場合、生成されるSQL文は以下の通りです。 

 SELECT body,subject FROM posts WHERE id='' union select id, password from users -- '

ここで、SQLunionは、2つの検索結果を合わせて(和集合)検索結果とする演算子です。これにより、本来投稿内容のみを表示する問い合わせが、個人情報を表示する問い合わせに変化し、個人情報の漏洩に悪用されることになります。

引用:シマンテックオフィシャルブログ「SQLインジェクション脆弱性(CWE-89) の解説 

SQLインジェクションへの一般的な対策

SQLインジェクションへの対策としては、脆弱性を放置せずセキュリティパッチを適用するか、Webアプリケーションのを改修するというのが一般的です。

しかし企業によっては、セキュリティパッチ適用の時間がなかったり、Webアプリケーションを開発したベンダーが既に事業撤退で改修対応できないといったケースも少なくありません。 

また、バインド機構を利用したエスケープ処理という対策もよく提唱されていますが、完全に対処できるわけではないので、別視点から見たセキュリティ対策が重要です。

その対策とは、WAFによる総合的なWebサーバ/Webアプリケーション保護です。

SQLインジェクションに対するWAFの有用性

対策が難しいSQLインジェクションに対し、WAFではシグネチャベース(ブラックリスト)Webサーバ/Webアプリケーションの保護を提供しています。 

Webサーバ/Webアプリケーションの前面に設置することで、全てのリクエストがWAFを経由し、悪質なリクエストがあった際は検知/防御するので、Webサーバ/Webアプリケーションへ不正文字列が届かないセキュリティ環境を実現するのです。

ブラックリスト以外にはホワイトリストを使用した防御方法もありますが、管理負荷が増大するという問題があります。

どちらを(あるいは両方を)採用するかは、自社の現状課題とセキュリティ環境を考慮した上で決定することが重要です。

従って“WAFSQLインジェクションに対して有効というよりは、“セキュリティ製品としてSQLインジェクションを確実に防御できるのはWAFだけというイメージの方が強いでしょう。

「シマンテック クラウド型WAF」なら迅速なWAF環境を実現

シマンテックが提供する「シマンテック クラウド型WAF」は、WebベースでWAFサービスとして使用するため、専用ハードウェアの設置やWebサーバへのソフトウェアインストールは不要です。 

ユーザーが行う導入作業はDNS設定の変更のみなので、最短1週間での導入を実現します。

実際に、50サイトという大規模環境へのWAF導入を“1ヵ月未満という短期間で完了した実績があり、企業のニーズに合わせてWAF導入を迅速にサポートします。

また、クラウド型の特徴によりユーザー側での運用管理が不要なため、導入後も快適なセキュリティ環境を維持できる製品です。

まとめ

いかがでしょうか?SQLインジェクションは全てのWebサイト/Webサービス運営企業にとっての脅威であり、早急な対策が求められているサイバー攻撃の一つでもあります。

まずは、Webサーバ/Webサービスセキュリティに対する現状課題を整理しつつ、WAF導入を検討していきましょう。

WAF賢い選び方ガイド

本ブログ記事は、セキュリティに関する一般的な内容を掲載しています。シマンテック クラウド型WAF製品はウェブの情報漏えい対策に有効なソリューションですが、すべてのサイバー攻撃に対応できるものではありません。シマンテック クラウド型WAF製品についてご不明な点がございましたら、こちらのお問い合わせフォームよりご連絡ください。

RECOMMEND関連記事


RECENT POST「導入検討」の最新記事


この記事が気に入ったらいいねしよう!
WAF賢い選び方ガイド