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インジェクション

New call-to-action
JP-Secure Labs Report Vol.01

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

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

個人情報漏えいの事例

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

1月5日に同社がWebサーバーの保守管理を委託している会社から「異常を検知した」と連絡を受け、発覚しました。同社が調査したところ、通常ではありえない大量のアクセスを確認し、何者かが脆弱性診断ツールを悪用してSQLインジェクションを仕掛け、Webサーバー内に侵入した痕跡が発見されたとあります。流出したのは2006年以降のプレゼント応募や番組人気投票など、Webサイト上で入力された情報で、63,656名の個人情報が流出したと発表しています。

また、2021年4月5日にY社が運営する宅配クリーニングのサイトから、58,813名のカード情報が流出した可能性があることが分かりました。対象は、2020年11月16日までの間にカード情報を新規登録した顧客、登録済みのカード情報を変更した顧客、旧システムからの移行データとされており、2020年10月30日にクレジットカード会社からの情報流出の懸念から発覚しています。

調査の結果、SQLインジェクションの脆弱性が原因であることが判明しており、一部顧客のカード情報が不正利用された可能性も指摘されています。

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

(2021年5月12日:記事更新)

SQLインジェクションの対策

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

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

WAFによる対策

WAF(Web Application Firewall)は、Webアプリケーションの脆弱性を悪用する攻撃からWebサイトを保護するためのセキュリティ製品です。WAFを導入することで、SQLインジェクションを効率的に検出・防御することができます。

WAF

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

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

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

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

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

ジェイピー・セキュアは、イー・ガーディアングループの一員として、ゲートウェイ型とホスト型に対応した国産ソフトウェアWAF「SiteGuardシリーズ」を提供しています。販売開始から12年、業種・業態を問わず数多くの導入実績をもち、レンタルサーバー事業者での標準採用もあって、保護対象サイト数は100万を超えています。また、同じグループの一員であるグレスアベイルより、DDoS対策も可能な国産クラウド型WAF「GUARDIAX」が提供されています。国産製品・サービスの場合、管理インタフェースやマニュアルの日本語対応はもちろんのこと、開発から販売、テクニカルサポートまで、お客様の安心感と満足感につながる国内クローズの対応が可能です。

イー・ガーディアングループでは、サイバー攻撃に対するソリューションのひとつであるWAFについて、様々なウェブサイトの環境に適合できるソリューションを提供しています。

※株式会社ジェイピー・セキュア、株式会社グレスアベイルは、イーガーディアン株式会社のグループ企業です。

CTA

RECENT POST「WAF」の最新記事


WAF

WAFとは?改めて考えるWebサイトセキュリティ

WAF

WAFによるOSコマンドインジェクション攻撃の防御

WAF

WAFとセキュリティプラグインでWordPressの安全性を高めよう

WAF

DDoS攻撃はいかに防御すべきか!?WAF導入による対策の有効性

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