皆さんはサイバー攻撃の被害に遭ったことがありますか?
近年、急増しているインターネット上の脅威は、特定の企業や個人に対してだけではなく、私たち普通の個人も被害を受ける可能性があるものです。
SQLインジェクションは、サイバー攻撃の中でも被害事例の多い代表的なものの一つです。
今回は、SQLインジェクションについてクロスサイトスクリプティング攻撃との違いや、事例、対策など解説します。
2021.01.07
サイバー攻撃とは?テレワークの増加で攻撃も急増中?徹底解説します
昨今、インターネットを活用したオンラインショッピングやクラウドサービスなどの拡大、スマートフォンやウェアラブルデバイスなどネットワークに接続...
WinserverのVPSはWAF導入可能!
共用サーバーはWAF導入済み!
\2週間無料・丁寧な電話サポート/
WinserverのVPSを無料で試す
Winserverの共用サーバーを無料で試す
目次
SQLインジェクションとは
SQLインジェクションとはどのような攻撃手法なのでしょうか。
まずは、SQLインジェクションの概要について見ていきましょう。
そして、こうした攻撃が増えてきた背景についても解説します。
SQLインジェクションの概要
最初にSQLインジェクションとはどのようなサイバー攻撃なのでしょうか。
SQLインジェクションの概要について見ておきましょう。
簡単に言うと「SQLインジェクションは、外部から不正なSQLを送信することで、データベースを不正に操作する」ものです。
詳しくは後ほど解説しますが、Webアプリケーションなどでは、データベースで情報を管理しているものが多くあります。
これらに対して、SQLインジェクションを行うことで、不正に情報を取得、書き換えなどを行われてしまう恐れがあります。
SQLインジェクションが増加する背景
サイバーセキュリティソリューションを提供するグローバル企業であるチェック・ポイント・ソフトウェア・テクノロジーズによると、2022年第二四半期の調査結果では、サイバー攻撃が前年同期比32%増の過去最悪の数字となっています。
(参照「Check Point Research: Weekly Cyber Attacks increased by 32% Year-Over-Year; 1 out of 40 organizations impacted by Ransomware」)
また、インターネットサービスプロバイダなど通信事業を行なっている株式会社インターネットイニシアティブ(IIJ)の「wizSafe Security Signal 2022年6月 観測レポート」によると、攻撃全体の39.03%がSQLインジェクションと最も多くなっています。
(参照「wizSafe Security Signal 2022年6月 観測レポート」)
このようにSQLインジェクションが増加する背景には、以下のようなものがあります。
- 攻撃によって得られる情報の価値が高い
- 手軽に情報を得ることができる
- 対策に対する認識が低いケースが多い
など
SQLインジェクションの攻撃方法とは
SQLインジェクションはどのような手口で行われるのでしょうか。
以下では、SQLインジェクションの仕組みと流れについて解説します。
SQLとは
SQLインジェクションについて掘り下げていく前に、少しSQLについて触れておきましょう。
SQLとは、現在主流になっているRDBMS(リレーショナルデータベース)でデータベースの操作や定義を行うための言語です。
RDBMSにはMySQLやOracleなどWebサービスなどでも一般的によく使われるデータベースが含まれます。
SQLはこれらを操作するための言語で、SQLを使うことでデータを追加、削除などを行うことができます。
2020.08.27
MySQLとは。特徴や強み、無償版と有償版の選び方を解説
MySQLは、Oracleなどと同じように世界中で幅広く利用されているデータベースです。「大量の情報を高速で扱える」、「耐障害性が高...
2020.08.13
Oracleとは。データベースの特徴や強みなど、人気の理由を解説
Oracle(=オラクル)といえば、一般的にはOracle社が開発・リリースしているOracle Databaseのことを指します。...
SQLインジェクションの仕組み
SQLについて理解できたところで、本題であるSQLインジェクションの仕組みについて見ていきましょう。
SQLインジェクションは、概ね以下のような流れで行われます。
①検索ボックスやコメントボックスなどに不正なSQLを入力する
②SQLが実行されてしまう
③サイト運用者が意図しないうちにデータベースに接続される
④不正に情報を取得するなど、データベースが操作されてしまう
このように、SQLインジェクションではWebサイトに普通に存在するコメント機能などから脆弱性を利用されてデータを盗まれるという怖さがあります。
SQLインジェクションの被害事例
先ほども触れたようにサイバー攻撃の中でも、SQLインジェクションの被害は非常に多くなっています。ここでは、いくつか具体的な被害事例を紹介します。
<ケース1:矢野経済研究所でのメールアドレス漏洩>
2022年6月に発表された事例で、市場調査会社の矢野経済研究所のサイトにSQLインジェクションが仕掛けられたもの。
この攻撃の結果、メールアドレスやパスワード10万件余りが流出することとなった。
<ケース2:名古屋大学でのメールアドレス漏洩>
先ほどと同じく2022年6月に発表された事例で、5月に名古屋大学の情報システムに関する質問を受け付けるシステムが攻撃を受け、メールアドレス2086件が漏洩したもの。
データベースの応答時間やステータスから間接的に情報を収集するブラインドSQLインジェクションという攻撃手法が使われたとされる。
<ケース3:日能研でのメールアドレス漏洩>
2022年に1月に発表された事例で、2021年12月に同社のWebサーバーが攻撃を受け、メールアドレス28万件が流出した事例。
このように、SQLインジェクションによる情報の漏洩は、一度発生すると大きな問題になります。
SQLインジェクションとクロスサイトスクリプティングの違い
サイバー攻撃には、さまざまなものがあります。
SQLインジェクションとよく混同されることのあるクロスサイトスクリプティングもその一つです。
では、両者の違いはどこにあるのでしょうか。
クロスサイトスクリプティングとは
まずクロスサイトスクリプティングとは、どのような攻撃なのでしょうか。
端的に言うと、「クロスサイトスクリプティング攻撃は、Webサイトに対する脆弱性を悪用したもの」です。この点については、SQLインジェクションとも共通しています。
攻撃の特徴としては、以下の3点が挙げられます。
- Webサイトの脆弱性を悪用した攻撃である
- ターゲットとなる利用者に悪質なサイトを訪問、あるいはファイルのダウンロード、実行などをさせる
- 不正に情報の取得などを行う
このように、クロスサイトスクリプティングは、SQLインジェクションのようにデータベースをターゲットとはしてないという特徴があります。
2022.08.25
クロスサイトスクリプティング(XSS)とは。事例と対策を解説
クロスサイトスクリプティング(XSS)攻撃は、Webサイトの脆弱性を悪用したサイバー攻撃です。昨今では、ECサイトを活用したオンライ...
SQLインジェクションとクロスサイトスクリプティングの違いとは
クロスサイトスクリプティングがどのようなものか理解できたところで、SQLインジェクションとの違いを見ていきましょう。
以下の表に、両者の違いを整理しました。
SQLインジェクション | クロスサイトディスクリプティング | |
---|---|---|
ターゲット | WebサイトやWebアプリケーションを通してデータベースを攻撃する | 脆弱性のあるWebサイトやWebアプリケーションを攻撃する |
攻撃目的 | データベースのデータ取得やデータの改ざんなど | WebサイトやWebアプリケーションのデータ取得や改ざんなど |
攻撃主体 | 悪意を持つ人物 | 悪意を持つ人物 |
プログラムの実行場所 | サーバー(SQLが働くのはデータベース) | ユーザーのWebブラウザ(クライアント側) |
攻撃に遭う前提条件 | SQLを使うデータベースがあること | 特になし |
攻撃を防ぐ対策 | ソースコードでの対策、文字種の制限など | ソースコードでの対策 WAFの設置 |
このように見ていくと、やはり大きな違いとしてはSQLインジェクションがデータベースをターゲットとしているのに対して、クロスサイトスクリプティングはWebサイトやWebアプリケーションをターゲットとしているという点です。
2020.12.17
WAFとは。ファイアーウォールとの違い、目的別の選び方を解説
WebサイトやWebサービスを運用しているみなさん、WAF(Web Application Firewall)は導入していますか?近...
SQLインジェクションによる攻撃を防ぐ方法
先ほども事例を紹介したように、サイバー攻撃はひとたび発生すると、重要な情報を盗み出されたり、破壊や書き換えをされたり、などといった被害につながる恐れがあります。
ビジネスや個人にとっても情報の重要性が増している中で、こうしたことは大きな問題です。
では、どのような方法で被害を防ぐことができるのでしょうか。
ここでは、SQLインジェクションに注目して見ていきましょう。
SQLインジェクションを防ぐための方法には、大きく以下の3つの方法があります。
- ソースコードでエスケープ処理を行う(特殊文字を普通の文字として認識させるなど)
- 検索ボックスやコメントボックスでの文字種の制限(特殊文字を使えなくするなど)
- データベースのログ等の監視
など
これ以外にも、ソフトウェアの修正パッチ等は最新のものを適用するなど、一般的なセキュリティ対策ももちろん有効なので忘れずに行うようにしましょう。
まとめ
WebサイトやWebアプリケーションなども含め、さまざまなシステムをターゲットとしたサイバー攻撃は近年急激に増えています。
この理由には、オンラインショッピングやSNSなどインターネット利用の拡大だけでなく、テレワークやリモートワークなど働き方、生活スタイルの変化なども大きく影響していると考えられます。
今回、解説したSQLインジェクションは、さまざまな情報を管理し格納しているデータベースに対して脆弱性を悪用してデータの取得や改ざん、消去などを行うものです。
現代社会で情報は、非常に重要な価値を持ちます。
ひとたび攻撃を受けて情報が漏洩してしまうと大変な問題となる可能性もあります。