SQLインジェクション

SQLインジェクションの最新ニュースをまとめて検索!

SQLインジェクション: SQL Injection)とは、アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のこと。また、その攻撃を可能とする脆弱性のこと。

SQLに別のSQL文を「注入 (inject)」されることから、「ダイレクトSQLコマンドインジェクション」とも呼ばれる。

目次

[編集] 原理

アプリケーションが入力値を適切にエスケープしないままSQL中に展開することで発生する。

次のようなSQLを発行することを考える。

SELECT * FROM users WHERE name = '(入力値)';

ここで入力値に "' OR 't' = 't" という文字列を与えた場合を考えると、SQL文は次のように展開される。

SELECT * FROM users WHERE name = '' OR 't' = 't';

このSQL文では条件が常に真となるため、nameカラムの値にかかわらず、全レコードが選択される。

また、複数のSQL文を注入することによるデータの破壊や改ざん、ストアドプロシージャを実行されることによる情報の漏洩や改ざん、OSコマンドの実行などを引き起こすこともできる場合がある。

[編集] 対策

入力値を適切にエスケープすることで防ぐことができる。上述の文字列中への展開では、メタ文字 ''' にエスケープすることにより、次のようなSQLになり、意図されたとおりnameカラムが "' OR 't' = 't" という値を持つレコードが選択される。

SELECT * FROM users WHERE name = ''' OR ''t'' = ''t';

文字列リテラル以外では適切なエスケープ法がSQL標準に定義されていないので、ホワイトリスト(許可リスト)方式による入力値の検証を行うことで代用とする。

データベースシステムやライブラリによっては、準備された文 (prepared statement) を用いてエスケープ処理が自動化されており、対策もれを防ぐ上で有益である。

[編集] 実例

  • 2005年3月に発生した、クラブツーリズムのクレジットカード情報を含む個人情報漏洩
    同年6月にクラブツーリズムを含む14社への不正アクセスの疑いで中国人留学生が逮捕された。
  • 2005年5月に発生した、価格.comのWebサイト改ざん
    手口は、公式には秘匿されているが、SQLインジェクションによるものであるという説がある。クラブツーリズム事件の犯人は価格.comへの不正アクセスも行っていた。
  • 2005年6月に判明した、アデコの個人情報漏洩 - クラブツーリズム事件と同一犯
  • 2005年8月に判明した、静岡新聞社アットエスの個人情報漏洩 - クラブツーリズム事件と同一犯
  • 2005年11月に発生した、ワコールオンラインショップのクレジットカード情報を含む個人情報漏洩
  • 2005年11月に発生した、キッズオンラインのアカウント情報漏洩
  • 2006年1月に判明した、スカイソフトのクレジットカード情報を含む個人情報漏洩
    スカイソフトは閉店へと追い込まれた。
  • 2006年4月に発生した、るるぶのアカウント情報漏洩
  • 2006年6月に発生した、日本体育協会のWebサイト改ざん
  • 2007年7月に判明した、@SOLAショップのクレジットカード情報を含む個人情報漏洩
    @SOLAショップは休業となり、2008年8月時点でも再開していない。
  • 2008年3月に発生した、トレンドマイクロ@niftyクリエイティブメディアのWebサイト改ざん
  • 2008年3月に発生した、サウンドハウスのクレジットカード情報を含む個人情報漏洩
    過去に設置された不正プログラムを経由して不正アクセスが行われた疑いがある。
  • 2008年4月に発生した、カービューのWebサイト改ざん
  • 2008年5月に発生した、アイドラッグストアー、アイビューティーストアーのクレジットカード情報を含む個人情報漏洩
  • 2008年5月に発生した、富士山マガジンサービスのWebサイト改ざん
  • 2008年6月に発生した、アイリスプラザのクレジットカード情報漏洩
  • 2008年7月に判明した、ナチュラムのクレジットカード情報を含む個人情報漏洩
    過去に設置された不正プログラムを経由して不正アクセスが行われた疑いがある。
  • 2008年7月に発生した、米国向けプレイステーションのWebサイト改ざん
  • 2008年7月に発生した、独立行政法人石油天然ガス・金属鉱物資源機構のWebサイト改ざん
  • 2008年10月に発生した、ゴルフダイジェスト・オンラインのWebサイト改ざん

2008年3月頃より、SQLインジェクションによるWebサイトの改ざんが多発している[1]

情報が流出した場合には企業存続の危機につながりかねない。情報処理推進機構(IPA)はSQLインジェクションによる被害からの復旧コストは1億円を超えうるとしており[2]、実際にサウンドハウスの事例では補償のみでも122884名に1000円相当の期限付きクレジットを負担している。補償のほかにも専門家による調査、システムの入れ替え、顧客対応、一時閉鎖による営業機会の逸失、風評被害といった負担があり、SQLインジェクションも含めセキュリティ対策は厳密に行うべきである。しかしながら、NRIセキュアが企業を対象に2007年度に行ったセキュリティ診断の統計では、41%のWebサイトが不正アクセス可能であり、そのうち22%でSQLインジェクション攻撃に対する脆弱性があった[3]。また、この統計において、SQLインジェクションの脆弱性のうち84%が、対策を行っていたが抜け穴があるというものであった。

[編集] 脚注

  1. ^ JPCERT / CCによる注意喚起
  2. ^ Internet Watch - SQLインジェクションの復旧コスト、1億円超える事例も~IPAが報告書、2006年11月29日。
  3. ^ NRIセキュア - Webサイトのセキュリティ診断:傾向分析レポート2008、2008年7月28日。

[編集] 関連項目

[編集] 外部リンク

最終更新 2009年11月25日 (水) 05:47 (日時は個人設定で未設定ならばUTC)。
【SQLインジェクション】変更履歴

ご利用上の注意