
今回は、サイバー攻撃の1種である「SQLインジェクション」について解説します。SQLインジェクションは特に中小企業のECコンテンツにとって脅威であり、登録ユーザーのカード情報などの、致命的な情報漏洩に繋がります。
SQLインジェクションとは?
SQLインジェクションとは、管理サーバのデーターベースを参照することでサービスを提供するWEBサイト(ショッピング系ECサイトなど)に対して、本来サイト側が想定している命令とは別のSQL文章を送信することで、不正に個人情報や機密情報を引き出すというサイバー攻撃です。
詳細は後述しますが、過去多くの企業がSQLインジェクションによる攻撃を受け、莫大な被害を被っています。
SQLインジェクションの原因とは?
根本的な原因は、WEBアプリケーションが不正アクセスの意図があると知らず、外部から送信されたSQL文章を誤解してしまうことにあります。
と言うのも、WEBアプリケーションの多くは、ユーザーが入力した情報をSQLと呼ばれる言語に変換することで動作しています。攻撃者はこの性質を利用して、「カード情報を開示しろ」とSQL形式で命令を送ります。
その結果、上記のような正規の命令だと認識する「誤解」が起きてしまい、情報が流出してしまうわけですね。
SQLインジェクションを受けるとどうなる?
SQLインジェクションによる攻撃を受けると、データーベースに記録されている情報が抜き出されてしまいます。被害は攻撃者が求めている情報によりますが、企業コンテンツが攻撃対象となった場合は、とくに以下の被害が懸念されます。
- 登録ユーザーのカード情報の漏洩(データベースに情報が残る決済方式の場合)
- 取引顧客の個人情報や契約内容
- WEBサイトの改ざんによる多種多様な被害
被害事例
SQLインジェクションはウイルスやトロイの木馬と異なり、攻撃対象にファイルやアプリケーションを仕込む準備が必要がありません。したがって、攻撃受ける側は突然攻撃を受ける立場になる点も驚異です。
SQLインジェクションによる被害はカード情報が中心。攻撃を受けた企業が被る被害は甚大です。
2005年 | クラブツーリズム情報漏洩事件 | 中国人留学生による犯行、カード情報を含む個人情報が漏洩。 |
2006年 | スカイソフト情報漏洩事件 | スカイソフト顧客のカード情報約5,000件が漏洩。スカイソフトオンライン書店は閉店。 |
2013年 | エクスコムグローバル情報漏洩事件 | カード情報など10万件以上が漏洩。 |
攻撃されないための対策
データーベース連動型サービスを提供する場合、SQLインジェクションの対策は重要なリスクヘッジです。ここでは、代表的な対策をご紹介します。
バインドメカニズムの導入
SQL文章のひな形を準備した上で、プレースホルダに入力情報に基づいたひな形を割り当てることで、SQL文章を生成する機能です。不正なSQL文章を直接反映するわけではないので、実行を阻止できます。
WAFの導入
WAFはwebアプリケーションレベルでの防御を行うため、SQLインジェクションに対して有効な防御策です。
その他の対策
ベースアカウントに対して付与する権限は、必要最小限に留めることや第三者専門機関への依頼も有効な対策です。
SQLインジェクションのテストを実施
SQLインジェクションは入力された命令に従って、WebアプリケーションがデータベースへSQLクエリを送信することで行われます。そのため、検索フォームやログインフォームなど、SQLクエリ送信が行われる場所に対してテストを行うことで、自社サービスの安全性をテストすることができます。
自社でテストを行うことが技術的に難しい場合、セキュリティを専門としている企業に対して、テストの実施を要請すると良いでしょう。また、利用を検討しているセキュリティ企業がある場合、SQLインジェクションに対する質問は、必ず行っておくべき事案です。
まとめ
SQLインジェクションによる攻撃を受けたサイトを復旧させるには、1億円以上のコストが必要と言われています。その上、風評被害による顧客離れなど影響を考慮すると、想像を絶するダメージを負う事となるでしょう。
被害を最小限に食い止めるためにも、適切なセキュリティ体制の構築は不可欠です。
参照SQLインジェクション/Wikipedia
参照SQLインジェクションへの対策/総務省