近年、WebサイトやWebアプリケーションに対する「SQLインジェクション」の被害が増加傾向にあります。
今回はSQLインジェクションの理解を深めたいと考えている方に向けて、SQLインジェクションの基本的な知識や対策方法、SQLインジェクションの対策が可能なWAFについて紹介します。
SQLインジェクションの対策を実施できれば、情報漏洩や攻撃の侵入などの大規模な被害を抑えられる可能性が上がります。ぜひ最後までご覧ください。
この記事の目次
サイバー攻撃「SQLインジェクション」VSセキュリティ対策「WAF」
SQLインジェクションの被害に遭うと、顧客の個人情報や取引内容などの重要な情報が流出してしまいます。
SQLインジェクションの有効な対策方法として注目されているのが「WAF」です。
SQLインジェクションの基本的な知識と被害事例、WAFがSQLインジェクションの対策に有効な理由について解説します。
SQLインジェクションとは?
SQLインジェクションとは、脆弱性のあるWebアプリケーションに侵入してきて、データベース内の情報をSQLを利用して窃盗するサイバー攻撃です。
サイバー犯罪者は、不正なSQL文を利用して、攻撃を仕掛けてきます。Webアプリケーションに侵入してきた攻撃をブロックできるWAFと呼ばれるセキュリティソフトで対策できます。
SQLインジェクションによる被害事例
SQLインジェクションの被害事例を、2つ紹介します。
2006年1月に、某書籍販売サイトで2万件以上の顧客情報が流出した事実が判明しました。販売サイトの閉鎖や被害に対するお詫びのメールなどの対応が行われました。現在は十分な安全性が確認されたため、サイトの閉鎖は解除されています。
2013年5月には、通信機器のレンタル企業から、約15万件のクレジットカード情報が流出しました。SQLインジェクションの被害が発生した原因は、個人情報保護法等の安全管理措置義務に違反したためでした。同年9月には行政指導が実施され、再被害防止のためにセキュリティ体制の強化が求められています。
WAFが有効対策手段とされる理由
WAFはWebアプリケーション内の通信内容をリアルタイムで解析したり、悪質な通信を検出してブロックできたりするセキュリティソフトです。
Webアプリケーション内を狙うSQLインジェクションも悪質な攻撃として検知できるため、有効な手段とされます。
SQLインジェクションの仕組み
SQLインジェクションは、脆弱性があるWebアプリケーションを狙って、不正な内容が書かれているSQL文を利用して仕掛けるサイバー攻撃です。SQLとは、WebサイトやWebアプリケーションとユーザー間のデータのやり取りを、データベースに送信する際に利用されるプログラミング言語です。
Webアプリケーションに脆弱性が存在していると、SQL文のエラー処理が適切にできず、誤作動を引き起こすSQL文でも処理が実行されてしまいます。
その結果、攻撃者側がデータベースを操作できるようになり、データベース内の重要な情報が奪われてしまいます。
SQLインジェクションの恐怖
SQLインジェクションの被害に遭うと、大切な取引先や顧客からの信用がゼロになる可能性があります。
特に重要な機密情報が流出した際には莫大な賠償費に加えて、調査や被害者対応の人件費や営業を停止する間の利益の損失など、金銭的な損失も計り知れないです。
SQLインジェクションによる被害
SQLインジェクションによる被害は、以下の通りです。
- 情報漏洩:クレジットカード情報や個人を特定できる情報などが漏洩する
データの改ざん:サイト内にウイルスが貼られるといった改ざん被害により、ユーザーのアカウントが盗み出されて売買されてしまった事象もある
データの全消去:SQLはアスタリスクを使用してすべてのデータを操作できるため、データを全消去されてしまう可能性がある
上記のような被害が1つでも発生した場合、企業は問題解決のために多くの時間と労力、コストをかけなくてはなりません。
SQLインジェクションを防ぐ方法
SQLインジェクションを防ぐには、以下の方法が有効です。
- 定期的な脆弱性診断
- セキュリティに考慮したWebサイトの作成
- Webアプリケーションを常にアップデート
- WAFの導入
それぞれの対策方法を詳しく解説します。
定期的な脆弱性診断
定期的な脆弱性診断により、サイバー犯罪者の視点で疑似的な攻撃を実施して、Webアプリケーション内の脆弱性の有無を調べられるため、対策方法として有効です。
脆弱性診断のレポートでまとめられた結果は、SQLインジェクションに対してどのように対策すればよいのかを検討するのに役立ちます。
セキュリティに考慮したWebサイトの作成
セキュリティに考慮したWebサイトを作成して、SQLインジェクションの被害に遭わないように対策しましょう。
特に、エラーメッセージの表示に注意しながら、Webサイトを作成する必要があります。理由は、サイバー犯罪者へ攻撃のヒントを与えたり、攻撃された事実を表示するための情報源として利用されたりする場合があるからです。
メッセージ例は以下の通りです。
- データベースの種類が分かる情報
- エラーの原因について記載された情報
- エラーが発生したSQL文に関する情報
上記の情報が記載されたエラーメッセージは、ブラウザ上に表示させないようにしましょう。
Webアプリケーションを常にアップデート
Webアプリケーションを常に最新の状態にアップデートした場合、脆弱性の対策が可能になり、SQLインジェクションを仕掛けられるリスクが低下します。
Webアプリケーションの最新版が発表されたら、速やかに最新版へアップデートしましょう。
WAFの導入
SQLインジェクションの対策には、WAFの導入がもっとも効果的です。
WAFは、Webアプリケーションをサイバー攻撃から防御するために作成されたセキュリティソフトです。サイバー犯罪者が社内のネットワークにアクセスした場合でも、不審な挙動をしていないか常に監視しているため、SQLインジェクションの侵入を防ぎます。
WAFの効果【事前対策編】
WAFの導入により、SQLインジェクションを含むサイバー攻撃の事前対策が可能になります。
常にネットワークの通信を監視しているため、SQLインジェクションの侵入を事前に検出し、被害の発生を未然に防ぎます。
WAFの種類
WAFにはアプライアンス型・ホスト型・クラウド型など、さまざまな種類が存在します。
なかでもSQLインジェクションの対策におすすめなのは、クラウド型のWAFです。
おすすめな理由は、Webアプリケーションのセキュリティ対策が十分でない場合にも、クラウド型WAFを導入すればベンダー側でセキュリティ運用を行うため、SQLインジェクション攻撃に対応できるからです。
自社のWebサーバーのスペックが低い場合や、人材不足によりWebアプリケーションの更新対応・セキュリティパッチの適用が難しい場合には、クラウドWAFを導入しておくと安心です。
WAFの効果【事後対策編】
WAFの導入によって、SQLインジェクションを含むサイバー攻撃の事後対策も可能になります。
WAFを導入した場合、攻撃が検出された瞬間にその攻撃をブロックできるためサイバー攻撃の被害の最小化が可能です。
またWAFのなかには、侵入してきた攻撃の解析結果を提供してくれるものもあります。解析結果を利用して、新種の攻撃パターンを検出できたりセキュリティ対策の見直しがしやすくなったりします。
よくある質問
最後にWAFとSQLインジェクションに関する、よくある質問を紹介します。
- SQLインジェクションを防ぐ以外に、WAFの導入で得られるメリットを教えてください。
- WAF以外で可能なSQLインジェクションの対処方法を教えてください。
それぞれの質問に対して、1つずつ答えていきます。
Q1. SQLインジェクションを防ぐ以外に、WAFの導入で得られるメリットを教えてください。
WAFにはSQLインジェクションを対策できる以外に、Webアプリケーションの運営管理上で迅速な対応が難しい脆弱性をカバーできるメリットがあります。
また、DDoS攻撃等の従来のセキュリティソフトでは対策が困難だったサイバー攻撃による被害を防げるのも、WAFの魅力です。
Q2. WAF以外で可能なSQLインジェクションの対処方法を教えてください。
SQLインジェクションの対処方法には、エスケープ処理の実施が有効です。
エスケープ処理を実施した場合、SQLインジェクションの攻撃を無効化できます。無効化できる理由は、不正なSQL文の作成時に使用されるシングルクォーテーションやセミコロンなどの記号を、別の文字へ置き換えや削除ができるからです。
まとめ:SQLインジェクションにWAFはかなり有効!Webサイトのセキュリティ対策をしたい人は必見!
SQLインジェクションの攻撃に遭うと、深刻な被害が発生してしまいます。企業が保持している情報が流出したり改ざんされた場合、膨大な労力をかけて解決しなければなりません。
SQLインジェクションの対策には、脆弱性診断の実施や、Webアプリケーションを常に最新の状態へアップデートするなど、さまざまな方法が存在します。
事前にSQLインジェクションの侵入を検出できたり、被害の発生を未然に防げたりするため、WAFの導入はSQLインジェクションの対策として、もっとも効果的です。
Webサイトのセキュリティ対策を強化したい方は、WAFの導入を検討してみるとよいでしょう。