ネットワークを通してシステムを不正に操作するサイバー攻撃は、高度化・多様化しており、攻撃手法もさまざまあります。その中でも、Webアプリケーションの脆弱性を利用する攻撃が「SQLインジェクション」です。
SQLインジェクション攻撃ではあらゆる被害が想定され、特に企業の場合はより大きなダメージを受ける可能性があるため、あらかじめ被害や対策方法について把握しておく必要があります。
そこで今回は、SQLインジェクションの概要や想定される被害、さらに適切な対策方法を詳しく解説します。企業経営者の方や情報セキュリティ担当者の方は、ぜひ参考にしてください。
SQLインジェクションとは、Webアプリケーションの脆弱性を悪用し、データベースを不正に操作するサイバー攻撃です。そもそもSQLとは、「Structured Query Language」の頭文字をとった略称であり、いわゆるデータベースサーバを操作する命令文のような役割を果たします。データベースと連携して動作するWebアプリケーションは、SQL文を用いて、ユーザーからの入力情報をもとに処理することがほとんどです。
SQLインジェクションでは、Webアプリケーションに対して不当なSQL文を作成・注入(インジェクション)されることで被害を及ぼします。主な攻撃対象は、データベースを用いて会員情報の管理を行うECサイト・会員制のWebサイトなどが挙げられます。悪意ある第三者からサイトの脆弱性を発見された場合は、攻撃対象となる可能性がより高まるでしょう。
SQLインジェクションによる被害には、さまざまなものがあります。どのような脅威があるかをあらかじめ把握しておくことで、被害を最大限予防できるでしょう。
ここからは、SQLインジェクションによる被害事例や、各被害における攻撃手口を詳しく解説します。SQLインジェクションによる被害に備えるためにも、知識を習得しておきましょう。
個人情報・機密情報の漏洩や流出は、SQLインジェクションによる代表的な被害です。
一例として、脆弱性のあるECサイトに攻撃者がユーザーIDなどの入力フォームを経由して「データベース上の会員情報を表示させる」という攻撃文字列を入力・送信した場合、他ユーザーのIDやパスワード、さらにクレジットカード情報まで表示されてしまう可能性があります。
このような個人情報・機密情報漏洩が生じたり、盗まれたユーザー情報が悪用されたりすると、企業は大きな損害を被ってしまうでしょう。
SQLインジェクションによる被害では、Webサイトの改ざんも挙げられています。
Webサイトを閲覧したユーザーがウイルス・マルウェアに感染するよう改ざんしたり、ECサイトでは商品の販売価格を改ざんしたりするなど、被害の手口はさまざまです。
価格の改ざんといった地味な攻撃の場合、発見が遅れたり顧客からの信用低下につながったりする可能性もあるでしょう。
SQLインジェクションでは、データベース上のデータを盗むだけでなく、改ざんや全消去も被害として挙げられています。
データの改ざん・消去を指示するSQL文を送信され、バックアップを適切に行えなかった場合は、Webサイトの管理者であっても復旧ができないケースもあります。そうなると、顧客からの信用やブランド価値が低下している中で、事業継続が困難となる可能性もあるでしょう。
ECサイトによくあるSQLインジェクション被害が、アカウントの不正利用です。
前述の通り、攻撃者がサイト上の入力欄を経由して不正なSQL文を入力・送信した場合、他ユーザーのIDやパスワードなどが表示されます。この情報を悪用して他ユーザーのアカウントにログインし、紐づけられているクレジットカード情報を使って高額な商品を購入するといったさらなる被害は、たびたび報告されています。
SQLインジェクションでは、不正なSQL文を入力・送信することによって悪質なデータを登録されるという被害も報告されています。
データにはウイルスが組み込まれた悪質なサイトURLだけでなく、マルウェアそのものも登録できます。そのため、マルウェア拡散の踏み台として利用されるという危険性があります。
管理者用のアカウント情報が盗まれると、Webサイトそのものをウイルス・マルウェアに感染するよう書き換えられ、修復不可能な状態にさせられるケースもあるため注意が必要です。改ざんされたWebページの画面を閲覧したユーザーのデバイスがマルウェアに感染するという被害は、最も避けておきたい事案と言えるでしょう。
サイバー攻撃が高度化・多様化する近年、多くの企業がSQLインジェクションによる被害を受けています。中でも特に、データベースに個人情報や機密情報を保存するWebサイトや、顧客のクレジットカード情報が保存されているECサイトは攻撃対象となりやすいだけでなく、万が一被害が生じた際の責任はサイト運営者に問われるため、サイト制作時や日頃からの情報セキュリティ対策が重要です。
最後に、SQLインジェクション対策の方法を5つ紹介します。
SQLインジェクションへの対策として最も有効な方法が、安全なWebサイトの制作です。
安全なWebサイトの制作は、攻撃者から脆弱性がないと判断され、結果として攻撃されにくくなるため、SQLインジェクション攻撃を防ぐ根本的な対策と言えるでしょう。対策としては、悪意あるユーザーからWebアプリケーションに想定外の情報を入力されても、そのまま処理せずエラー処理として実行できるかどうかがポイントです。
具体的な手段には、下記が挙げられます。
プレースホルダの利用 |
不正なSQL文を注入されても攻撃を無効化できる |
エスケープ処理 |
不正なSQL文の実行を防ぐ |
入力値の制限 |
不正なSQL文で使われる特殊文字を受け付けないようにする |
あらゆる対策を講じて、多方面からの攻撃をしっかり防ぎましょう。
多くのWebサイトで使われるCMSやプラグイン(拡張機能)などは、定期的にバージョンのアップデートが行われています。アップデートをするかどうかは管理者が自由に選択できますが、古いバージョンのまま使い続けるのはセキュリティリスクの観点でおすすめしません。実際に、過去には世界で最も使用されているCMSにおいて、脆弱性のあるプラグインも報告されています。
Webアプリケーションなどの動作環境を最新バージョンに保つという点は、SQLインジェクションだけでなく、あらゆるサイバー攻撃による被害を防ぐための基本のセキュリティ対策と言えるでしょう。
SQLインジェクションによる攻撃や被害を防ぐためには、定期的に脆弱性診断を行うことも欠かせません。
脆弱性診断とは、その名の通りWebサイトやWebアプリケーションに脆弱性が存在しないかどうかを、攻撃者の視点で調査するというサービスです。SQLインジェクションだけでなく、あらゆるサイバー攻撃の標的となる脆弱性の有無を診断してもらえます。
脆弱性診断には、自分で診断できるツール診断と、専門エンジニアによる手動診断の2種類があります。個人情報やクレジットカード情報を扱うWebサイトを制作する際は、手動診断を受けることがおすすめです。
SQLインジェクションの対策において最も手軽な方法が、WAFの導入です。WAFとは、「Web Application Firewall」の頭文字をとった略称であり、Webサイトのアプリケーションに特化したファイアウォールを指します。
WAFの導入によって、従来のファイアウォールでは防ぎきれないSQLインジェクション攻撃を検知・防御することが可能です。
近年では、クラウド型WAFやその他のセキュリティ対策が可能なサービスもあり、クラウド型WAFの場合は初期コスト・運用コストがかからない点が魅力となっています。他の対策と併せて講じるとよいでしょう。
SQLインジェクションは、Webアプリケーションに対して不当なSQL文を作成・注入するという、Webアプリケーションの脆弱性を利用したサイバー攻撃です。顧客情報・機密情報の漏洩からデータの改ざん・消去、マルウェア感染の踏み台を目的に行われるものであり、被害を受けた企業はブランド価値や顧客からの信用などにおいて大きな打撃を受ける可能性があります。
SQLインジェクションを防ぐためには、さまざまな対策が必要です。日頃から十分に対策するためには、セキュリティソフトの活用も欠かせません。
「EXOセキュリティ」は、低コストで企業セキュリティを実現できる法人向けエンドポイントセキュリティです。直感的でわかりやすいUIとなっているため、ITやセキュリティに不慣れな方でも簡単に操作できます。無料でお試しもできるため、セキュリティ対策を行いたい企業経営者・情報セキュリティ担当者の方はぜひお気軽にお問い合わせください。