第1回・SQLインジェクション
今回より「トラブル事例に学ぶWebサイトのセキュリティ」(全12回)の連載を開始いたします。実際に発生したトラブル事例を参考に、Webサイトを運営している上でどのようなリスクが存在しているかを整理して、その具体的な対策を取り上げていきます。
-----------------------------------------------------------------
SQLインジェクションとは、データベースと連動しているWebアプリケーションに、本来想定されていない命令文を入力するなどして、データベースを不正に操作する攻撃のことです。SQLインジェクションが成功すると、データベースのデータを盗まれたり、書き換えられる可能性があり、最悪の場合、アプリケーションの暴走によってシステムが破壊されることもあります。
SQLインジェクションは、Webアプリケーションへの攻撃手法として古くから存在していました。情報処理推進機構(IPA)によると、SQLインジェクションによる被害は日本でも2008年3月頃を境に急増しています。これは、SQLインジェクション攻撃を誰でも簡単に行える裏ツールがインターネットで広まったことが最大の原因とされています。攻撃の目的は、従来から多かったクレジットカード情報などの「個人情報の入手」や「サーバへの侵入」に加えて、最近では悪意あるサイトへの誘導のための「データ改ざん」が増えつつあります。
【トラブル事例】
2008年9月30日にゴルフ場予約サービスなどを運営するゴルフダイジェスト・オンラインのサーバがSQLインジェクション攻撃を受け、データベースの中の会員情報の一部が改ざんされました。定期的に配信しているメールマガジンに、このデータベースの会員情報を挿入して配信する仕組みになっていたため、一部の会員に届いたメールマガジンに、不正なサイトに誘導するURLが含まれてしまいました。同社は10月2日にサービスを全面停止してデータベース内の不正文字列を削除するとともに、Webアプリケーションの脆弱性を修正して安全性の確保を確認したうえで、10月10日にサービスを再開しました。
SQLインジェクションは、予期しない変数や命令文に対処できないアプリケーションの脆弱性です。根本的な対策としては、アプリケーションに渡す変数をすべて文字列に変換すれば、SQLインジェクションを100%防ぐことができます。これをエスケープ処理と言いますが、現実問題としてすでに稼動しているWebアプリケーションに対して、このような対策を行うことは容易ではありません。そこで、アプリケーションの中で攻撃を受けやすいコードを検出して部分的に脆弱性を修正していきながら、ログ解析ツールなどを使ってSQLインジェクションと思われる攻撃を早期に検出することが現実的な対策になるでしょう。
変数のエスケープ処理 | データの形式に関係にかかわらず、すべての変数を文字列にエスケープすることで、SQLインジェクションは100%防ぐことができる。 |
アプリケーション診断ツールの活用 | アメリカMicrosoftは、攻撃を受けやすいASPコードを検出するツールや、Webサイトの脆弱性を診断するツールを提供している。 |
攻撃パターン検出ツールの活用 | 情報処理推進機構(IPA)では、SQLインジェクション攻撃を検出するツール「iLogScanner」を無償で提供している。 |
情報処理推進機構(IPA)では、SQLインジェクション攻撃急増への対応として、SQLインジェクション攻撃を検出するツール「iLogScanner」を無償で提供しています。アメリカMicrosoftでも、自社技術のMicrosoft ASPやASP.NET技術を採用しているサイトの診断用ツールを提供しています。自社サイトをSQLインジェクション攻撃から守るには、このようなツールを活用して地道な対策を継続することが重要です。
-----------------------------------------------------------------
◎初出:2009年4月6日
-----------------------------------------------------------------
| 固定リンク