SQLインジェクション攻撃に有効な対策3つをセキュリティ事故から学ぶ

この記事は約10分で読めます。

SQLインジェクションとはなにか

WEBサイトの情報漏洩や不正な改ざんを引き起こす「SQLインジェクション」というサーバー攻撃をご存じですか?

まず「SQL(Structured Query Language)」とは、データベースを操作するための「データベース言語」のことで、命令文のようなものです。そしてインジェクションというのは「注入」を意味する言葉です。

つまり「SQLインジェクション」とは、Webサイトに不正なデータベース言語を注入して、情報などを漏洩させる行為のことを表しています。

SQLインジェクションの仕組み

SQLインジェクションによる被害の仕組みはとても簡単です。

SQLというデータベース言語は、IDやパスワードによって個人情報を保護する登録サイト(ショッピングサイト)などで使用されています。

このようにデータベースとWEBサイトが連携しているサイトのことを「データベースドリブンWEBサイト」といいますが、こういったサイトが攻撃の対象になります。

サイト内において本来文字列しか入力しないはずのID・パスワードの入力部分にSQL文を含ませた文字列を入力すると、SQLインジェクションに対して脆弱性があるサイトはSQL文を命令文と誤認して実行してしまいます。

そうなってしまうと第三者によるデータベースの操作が可能になってしまい、不正に個人情報を盗まれたり、WEBサイトを改ざんされたりする恐れがあります。

SQLインジェクションで攻撃を仕掛ける理由

そもそもどうして攻撃者はSQLインジェクションを利用してWEBサイトを攻撃するのでしょうか?

しっかりとした対策をたてるためには、悪意を持った人間の行動心理を把握することが重要です。ここではSQLインジェクションを利用してWEBサイトを攻撃する理由をわかりやすく解説します。

愉快犯による自己スキルの誇示

こういった不正行為を働く人の中には、明確な目的意識を持たずに自分のスキルや能力を自己肯定するためだけに攻撃を仕掛ける人がいます。
自分の力で情報を盗み出した高揚感に浸り、サイトや運営側が困惑している様子を楽しむ愉快犯なのです。

ネット犯罪以外にも承認欲求によって犯罪を犯す人は再犯率が非常に高く、日常生活において自己肯定感の低い生活環境である場合が多いので、そういった環境を改善しなければこういった犯罪を完全に撲滅することはできないでしょう。

金銭の取得

WEBサイトからこういった方法で盗み出した個人情報は、あるルートで売買すればとても高値で取引されます。
その中でもクレジットカード情報や銀行口座情報といった直接金銭に繋がる情報はかなり高値で取引される傾向にあります。

2028年に米国シマンテック社が発表したデータによれば、盗み出した個人情報が不正に売り出された総額は年間で2億7,600万ドル(日本円で約250億円)にも上ることがわかっています。
取引される具体的な金額や内容をわかりやすく表にまとめます。

売買される項目 金額
クレジットカードのCVV2番号 0.5~12$;
クレジットカード番号 0.1~25$
銀行の口座情報 10~1,000$

言い方は悪いかもしれませんが、脆弱性のあるサイトを攻撃しただけで短時間の間に数百~数千万の利益を得られるネット犯罪は、悪意のある人間にとってはとても簡単で高リターンな手法なのです。

このようにSQLインジェクションが撲滅できない背景には、このような情報が高値で取引されているという要因があります。

マルウェアの配布

「マルウェア」とは、不正な動作を行う目的で作成されたソフトウェアやコードのことで、SQLインジェクションの被害をより拡大するための感染源として使用されています。

マルウェア一覧

  • ウィルス
  • ワーム
  • トロイの木馬
  • スパイウェア
  • キーロガー
  • バックドア
  • ボット

マルウェアには上記の7種類があり、それぞれの特性を利用して不正なソフトウェアやコードが拡散されてしまいます

このような方法で健全なWEBサイトにまで脆弱性を生み出し、そこからSQLインジェクションを使用して被害を拡大させていくのです。

SQLインジェクションの攻撃を受けた場合の影響

SQLインジェクションによる被害は甚大で、コンプライアンスがとても重視されている現代においては致命的である、情報漏洩や不正ログインといった事例によって莫大な損害賠償を請求されてしまう会社がとても多いのです。

情報漏えい

SQLインジェクションによる一番の被害ともいえるのが、情報漏洩です。盗み出される情報の種類は大きく分けて以下の2種類です。

  • 企業ごとに管理している機密情報や個人情報
  • 不正ログインに利用できるIDとパスワード

これらの情報が流出してしまうと会社は信頼を大きく損なってしまうので、中小企業や大企業であろうと関係なく会社の経営が傾いてしまうほどの被害を被ってしまいます。

しかも不正に盗み出されてしまった情報を取り返すことはほぼ不可能で、一度被害が拡大してしまうと取り返しのつかない損害が発生してしまうのです。

WEBサイトの改ざん

WEBサイトの改ざんも大きな問題となっていて、主にはオンラインゲームなどのようにオンライン上でアイテムの購入などによって金銭のやり取りが発生するシステムが標的にされます。

2008年から爆発的に拡大した被害ですが、過去の事例では公式のゲームサイトが不正に改ざんされたことによって、ブログなどにアカウントを盗むウィルスが貼り付けられてしまい、それに気付かず個人情報を入力してしまったユーザーのアカウントが乗っ取られたり、盗み出されて売買されてしまうという事件も起きています。

システムへの不正ログイン・乗っ取り

近年では急速にSNSサービスが普及したことで、不正ログインや乗っ取りといった被害がさらに拡大しています。

SQLインジェクションによる被害はとても甚大で、ネットリテラシーの低い人は格好の標的になってしまいます。
スマホのデータ管理などでもIDやパスワードを忘れて手続きができずに困っている人をよく見かけますが、こういったデータの管理がずさんな人を基盤として、SQLインジェクションによる被害は拡大してしまいます。

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

ここからは実際にあったSQLインジェクションによる被害の実例をご紹介していきます。SQLインジェクションによる被害はたくさん報告されていますが、その中でも代表的なものをご紹介します。

個人情報の流出

過去に起きた大きな被害として、「株式会社釣りビジョン」がSQLインジェクションによる攻撃を受けて、約6万4千件もの個人情報を流出させてしまいました。

この事件は2019年の1月25日に発覚したもので、攻撃を受けたのは2006年以降のプレゼント応募や番組人気投票などの入力フォームです。
被害の内訳を表にまとめます。

被害の項目 件数
メールアドレス 5万1,345件
メールアドレス、氏名 7,629件
メールアドレス、氏名、住所 4,682件
合計 6万3,656件

クレジットカード情報などが盗まれていないとはいえ、氏名や住所の情報まで盗まれてしまった人がこれだけいるということは、会社にとって計り知れないほど甚大な被害です。
メールアドレスだけだと思っていても、セキュリティがずさんなアカウントはそこから二次被害を生み出してしまうこともあるので、簡単に済ませられる問題ではありません。

中国サイトに約400件の脆弱性サイト情報登録

独立行政法人である「情報処理推進機構(IPA)」によると、中国のポータルサイトで脆弱性のあるサイトを掲載している「WooYun」に、SQLインジェクションに対して脆弱性のある約400ものサイトの情報が掲載されていたことがわかりました。

同サイトは現在閉鎖されていますが、SQLインジェクシに対して脆弱性のあるサイトがこれだけたくさん掲載されてしまったので、IPAは各サイトに対して注意喚起をしました。

イギリス通信会社のTalk Talkから契約者の個人情報が流出

英通信会社の「Talk Talk」から契約者の個人情報を盗み出したとして、ロンドン警視庁は北アイルランドに住む15歳の少年を逮捕しました。この事件では契約者の氏名、住所、クレジットカード情報、銀行口座情報などが流出し、とても大きな話題を呼びました。

データベースの設定ミスを突いたSQLインジェクションによって発生した今回の事件に対して、「Talk Talk」は流出したクレジットカード情報の一部が伏せられていたことや、銀行口座の情報は盗まれたがそれ以上の情報は流出していないことから不正な出金による被害はあり得ないと発表しています

SQLインジェクションによる攻撃を仕掛けるのは大人だけではありません。まだ精神的に未成熟な15歳という若者がこういった攻撃を仕掛けることもあるのです。

SQLインジェクション対処法

SQLインジェクションによる被害の凄惨さをお伝えしましたが、この記事をご覧になっている皆様の会社もこういった被害にあう可能性を十分に秘めているということを覚えておいてください。このような被害にあわないためにも、どのような対策を練ればいいかをしっかりと把握しておきましょう。

エスケープ処理の定義

SQLインジェクションによる攻撃に対して、最も基本的といわれているのが「エスケープ処理」です。

エスケープ処理の定義とは「プログラム言語において特別な意味を持つ文字・記号が入力されたときに、別の文字列に書き換える処理」のことをいいますが、前提としてまずエスケープ処理をする前に、複数のSQL文が入力できないようにする「PDO」という対策をする必要があります。

SQLインジェクションの場合は、PDOのプレスホルダーを使ってSQL文を組み立てることで、シングルクォーテーションやカンマといった意味をもつ記号をエスケープしてくれます。

WAFの導入

WAF(Web Application Firewall)」とは、WEBサイトをアプリケーションレベルで防御できる高性能なファイアウォールのことです。

一般的なファイアウォールでもWEBサイトを守ることはできますが、あくまでも外部からの侵入を防ぐことだけで、侵入された後の不正な操作を防ぐことはできません
ですがWAFであれば悪意を持った攻撃者がウェブサイトにアクセスした後に不正な操作をしていないかアプリケーションレベルで監視できるので、SQLインジェクションに対してとても有効な対策法です。

WAFは3種類あり、それぞれに特徴があるのでわかりやすく表にまとめて比較します。

WAFタイプ メリット デメリット
ホスト型WAF
(ソフトウェア型WAF)
ネットワーク機器を増やさずに利用できるハードウェアを追加しないため安価に導入できる WEBサーバーごとに直接ソフトウェアをインストールするので台数が多いとコストがかさむ
ゲートウェイ型WAF
(ネットワーク型WAF)
専用ハードウェア製品として設置するものとサーバーにインストールして利用するものを選べる複数のサーバーを保護できるのでコスパがいい 独立して設置するのでネットワーク機器の台数が増える
サービス型WAF 初期費用が安い管理者の負担が少なくなる 月々のコストが割高になる

それぞれに一長一短ありますが、自分の会社に最適なWAFを選んで導入することでリスクを回避することができます。

脆弱性診断サービスを利用

WEBサイトを構築するうえでとても重要なのが、「脆弱性診断サービス」です。

これは自分が攻撃者であることを仮定して、自分が構築した運営サイトに対してわざと攻撃を仕掛けることで脆弱性がないかを診断することができます。WEBサイトでの被害はSQLインジェクションによるものだけではないので、攻撃される恐れのある手法をすべて実践して、どんな部分に脆弱性があってどんな対策が必要なのかをあぶりだします

上記がSQLインジェクションの実態や被害例と対策方法になります。
ネット犯罪はどんどんと進化していて、時代に合わせて増えていくサービスに対応して対策をしなければいけません。

こういった犯罪に対するサーバーの管理にはコストもかかりますが、それでも個人情報が流出して莫大な損害賠償を請求されるよりは全然いいですよね。
もしも自分で作業することが難しいのであれば、専門家に任せて設定してもらうことをお勧めします。

セキュリティ対策をする情報漏えい
タイトルとURLをコピーしました