WAFによるSQLインジェクション攻撃の防御

 2019.10.24  株式会社ジェイピー・セキュア

Webサイトを対象にしたサイバー攻撃は多数存在します。その中でも危険度が高いと言われているのが「SQLインジェクション(SQL Injection)」です。SQLインジェクションとはどのような攻撃なのか?どのような被害が発生するのか?正しいセキュリティ対策を実施するには、まず仕組みや対策を理解することが大切です。

本稿では、SQLインジェクションの基礎を解説し、セキュリティ対策として有効な「WAF(Web Application Firewall)」をご紹介します。Webサイトを保護し、ユーザーに被害を与えず、会社の信頼を守るためにもSQLインジェクションについて正しい知識を身につけましょう。

SQLインジェクションとはどのような攻撃か?

Webサイトを狙ったサイバー攻撃はWebアプリケーションの脆弱性を狙ったものが多く、その中でもSQLインジェクションの危険度は高いと言われています。

Webアプリケーションとは、検索エンジンやインターネットバンキング、ブログなど、Webを介したユーザーからのリクエストに応じて、さまざまなサービスを提供するためのアプリケーションのことで、脆弱性はセキュリティ上の欠点を指します。Webアプリケーションの開発では、セキュリティ対策を意識し、安全なサイトを構築するための「セキュアコーディング」が鉄則となりますが、人間がプログラムを作る限り脆弱性をゼロにすることは困難であると考えられます。

Webアプリケーションの役割の1つが、ユーザーから受けたリクエスト(情報入力)を受けて結果をユーザーに応答するというものです。たとえばECサイトにおいて「Apple Watch」と検索するとその結果が瞬時に返ってくるのは、Webアプリケーションがユーザーのリクエストを処理し、データベースからの応答を表示しているからです。

では、SQLインジェクションはどのように攻撃が実行されるのか?

「SQL」はデータベースの定義や操作を行うためのデータベース言語です。そして「インジェクション」は「注入」を意味します。ECサイトや会員制WebサイトではSQLサーバーを使用してデータベースを構築し、会員情報等のデータを記録し、必要に応じていつでも使用できるようになっています。

SQLインジェクション攻撃は、Webアプリケーションのセキュリティ上の不備、つまり脆弱性を意図的に悪用し、アプリケーションが想定しないSQL文を実行させることでデータベースを不正に操作する攻撃のことです。ユーザーIDやパスワードを入力するフォームに不正にデータベースを操作するSQL文を入力ことで認証を回避されたり、会員情報等が窃取されるなど、深刻な被害を受ける恐れがあります。

 

SQLインジェクションによる被害

SQLインジェクション攻撃の被害として代表的なものが個人情報漏えいです。データベースを直接操作できることから、潜伏期間を必要とせず、攻撃が成功するとごく短期間で大量の個人情報が窃取される可能性があります。

個人情報漏えいの事例

フィッシング(釣り)専門番組を24時間365日配信するサービスを展開するT社では、2019年1月25日に同社Webサイト上にて、個人情報が流出した可能性があることを明らかにしています。

1月5日に同社がWebサーバーの保守管理を委託している会社から「異常を検知した」と連絡を受け、発覚しました。同社が調査したところ、通常ではありえない大量のアクセスを確認し、何者かが脆弱性診断ツールを悪用してSQLインジェクションを仕掛け、Webサーバー内に侵入した痕跡が発見されたそうです。

流出したのは2006年以降のプレゼント応募や番組人気投票など、Webサイト上で入力された情報です。合計6万3,656件の個人情報が流出したと発表しています。

個人情報が流出した場合、原因の追究、顧客への連絡、特設窓口の設置、関係官庁への報告、セキュリティ対策の強化、再発防止策の実行など、すべての対応が完了するまで多くの時間と労力、コストがかかります。そして、信用を失うという大きな影響を受けることが考えられます。

根本的対策

SQLインジェクションの根本的対策は、SQL文の組み立てにバインド機構を使用することです。バインド機構とは、あらかじめSQL文のひな型を用意しておき、変動個所(プレースホルダ)に実際の値(バインド値)を割り当ててSQL文を生成するデータベースの機能で、アプリケーションが意図しないSQL文が注入されることを阻止することができます。

バインド機構を利用できない場合は、SQL文にとって特別な意味を持つ記号文字のエスケープ処理を行います。(たとえば、「’」→「”」のように変換し、「’or’1’=’1」を「”or”1”=”1」として無効な文字列にします。)エスケープ処理の必要がある文字列はデータベースサーバーによって異なるため、利用するデータベースに応じて対策する必要があります。

WAFによる対策

WAFは、Webアプリケーションの脆弱性を悪用する攻撃からWebサイトを保護するためのセキュリティ製品です。もちろん、前述の根本的な対策が理想ですが、繰り返されるWebアプリケーションの改良の中で対策漏れが生じてしまうこともあるかもしれません。Webアプリケーションの安全性を維持するには高いセキュリティ意識と知識、技術が必要となります。

このような実情から根本的な対策を基本としつつ、別のアプローチでの対策が求められるようになり、Webアプリケーションの脆弱性有無とは独立したかたちで攻撃を防御できるWAFの活用が急速に進んでいます。

WAFは、Webサーバーにインストールしたり、ゲートウェイ型としてネットワークに設置することでユーザーからのリクエストを検査し、SQLインジェクション攻撃を検出・防御します。さらに、SQLインジェクション以外にもさまざまな攻撃に対応しています。以下のページでSQLインジェクション、ディレクトリトラバーサル、OSコマンドインジェクションによる攻撃とWAFによる防御の解説をしていますので、ぜひ参考にしてください。

WAFとは:攻撃デモ~WAFによる防御

いかがでしょうか?依然として危険性の高いSQLインジェクション。Webサイトのセキュリティ強化を検討されている場合は、WAFにご注目ください。

WAFとは ~ SiteGuardシリーズが選ばれる理由 ~

SITEGUARD
ジェイピー・セキュアソフトウェアライセンス価格表

RELATED POST関連記事


RECENT POST「技術動向」の最新記事


WAFによるSQLインジェクション攻撃の防御
SITEGUARD

RANKING人気資料ランキング

RECENT POST 最新記事

ブログ無料購読

RANKING人気記事ランキング

TOPIC トピック一覧