• 検索結果がありません。

SQL Web Web SQL SQL SQL SQL SQL SQL SQL SQL SQL SQL SQL i

N/A
N/A
Protected

Academic year: 2021

シェア "SQL Web Web SQL SQL SQL SQL SQL SQL SQL SQL SQL SQL SQL i"

Copied!
41
0
0

読み込み中.... (全文を見る)

全文

(1)

平成

28

年度

学士学位論文

SQL

インジェクション攻撃に含まれる記

号の出現頻度とその関連性による攻撃検出

手法の提案

Proposal of attack detection method based on

appearance frequency of symbols included in SQL

injection attack and its relevance

1170311

合路 健人

指導教員

清水 明宏

2017

2

28

(2)

要 旨

SQL

インジェクション攻撃に含まれる記号の出現頻度とその関

連性による攻撃検出手法の提案

合路 健人

Web アプリケーションを標的とするサイバー攻撃は,Web アプリケーションを運営管理 する者だけでなく,その利用者にとっても大きな脅威となっている.中でも SQL インジェ クション攻撃の脆弱性を狙った攻撃が多く,以前から知られている脆弱性であるにもかかわ らず,対策が追いついていないことが指摘されている.SQL インジェクション攻撃には多 くの記号が含まれる傾向がある.そこで,既存手法として SQL インジェクション攻撃に含 まれる記号に着目した攻撃検出手法が提案されている.しかし,既存手法は,正常データの 検出においては高い検出率を示した一方,攻撃データの検出率は他の検出手法と比較して高 くない.SQL インジェクション攻撃による被害を防ぐために,正常データに対するパフォー マンスを下げずに攻撃検出率を向上させる必要がある.  SQL インジェクション攻撃には以下のような特徴があることが示されている.SQLイン ジェクション攻撃に挿入される SQL 文は攻撃者の目的に応じて異なる.また,SQL イン ジェクション攻撃を成立させ,目的の情報を得るには,データベースに関連する情報が必要 であり,ブラインド SQL インジェクションという手法が使われる.そこで本論文では,攻 撃者の目的とブラインド SQL インジェクション攻撃に含まれる記号の出現頻度の関連性を 利用した攻撃検出手法を提案する.提案手法は,攻撃者の目的と攻撃データに含まれる記 号の情報の関連性を利用することで正常データの検出率を下げずに,攻撃検出率を向上さ せる.また,攻撃データにブラインド SQL インジェクション攻撃のデータを用いることに よってデータベース関連する情報を収集するリクエストを遮断することが可能となり,実際

(3)

の SQL インジェクション攻撃においても有用な攻撃検出であると考えられる.

(4)

Abstract

Proposal of attack detection method based on appearance

frequency of symbols included in SQL injection attack and

its relevance

Cyber attacks targeting Web applications are a great threat to not only those who operate and manage Web applications but also their users. Among them, there are many attacks aimed at vulnerability of SQL injection attack, and it is pointed out that countermeasures have not kept up despite being a previously known vulnerability. SQL injection attack tends to include many symbols. Therefore, as an existing method, at-tack detection method focusing on symbols included in SQL injection atat-tack has been proposed. However, while the existing method shows a high detection rate in detection of normal data, the detection rate of attack data is not higher than other detection methods. In order to prevent damage caused by SQL injection attack, it is necessary to improve attack detection rate without lowering performance against normal data.

 It is shown that the SQL injection attack has the following features. SQL statements inserted into SQL injection attacks differ according to the purpose of the attacker. In addition, in order to establish an SQL injection attack and obtain target information, information related to the database is required, and a method called blind SQL injection is used. In this paper, we propose an attack detection method that exploits the relation-ship between the attacker’s purpose and the occurrence frequency of symbols included in blind SQL injection attack. The proposed method improves the attack detection rate

(5)

without lowering the detection rate of normal data by using the relationship between the purpose of the attacker and the information of the symbol included in the attack data. Moreover, by using blind SQL injection attack data for attack data, it is possible to block requests to collect database related information, which is considered to be a useful attack detection even in actual SQL injection attack.

(6)

目次

1章 序論 1 1.1 はじめに . . . 1 1.2 本論文の構成 . . . 3 第2SQL インジェクション攻撃 4 2.1 SQL . . . 4 2.2 SQL インジェクション攻撃 . . . 5 2.2.1 SQL インジェクションの動作例 . . . 5 2.2.2 SQL インジェクションによる影響 . . . 6 2.3 SQL インジェクション攻撃の対策. . . 6 2.3.1 Web アプリケーションでの対策(バインド機構の使用) . . . 7 2.3.2 Web アプリケーションでの対策(入力データのエスケープ処理) . . . 7 2.3.3 ゲートウェイ上での対策 (WAF) . . . 7 2.4 ブラインド SQL インジェクション . . . 8 第3章 既存手法 10 3.1 従来研究 . . . 10

3.2 SVM (Support Vector Machine) . . . 11

3.3 潜在曲線モデル . . . 11 3.4 特徴抽出アルゴリズム . . . 12 3.5 攻撃検出アルゴリズム . . . 13 3.6 SQL インジェクション攻撃の特徴抽出と攻撃検出 . . . 14 3.7 検出結果 . . . 15 3.8 松田らの方式の問題点 . . . 15

(7)

目次 第4章 提案手法 17 4.1 提案手法の概要 . . . 17 4.2 前提条件 . . . 18 4.3 ブラインドSQL インジェクション攻撃の特徴 . . . 18 4.4 実験. . . 21 4.4.1 既存手法による特徴抽出 . . . 22 4.4.2 検出結果 . . . 23 第5章 考察 25 5.1 攻撃検出 . . . 25 5.2 正常検出 . . . 26 5.3 課題. . . 26 第6章 結論 28 謝辞 30 参考文献 31

(8)

図目次

2.1 SQL インジェクションによるオンラインバンキングへの不正ログインの例 . 5 4.1 実験環境 . . . 20 4.2 ブラインド SQL インジェクション攻撃に含まれる記号の分布. . . 21 4.3 提案手法データの分布と推定結果 . . . 21 4.4 既存手法のデータの分布と推定結果 . . . 23 5.1 最適 WAF選択 . . . 27

(9)

表目次

2.1 SQL 文の構成要素. . . 4 3.1 横軸 (x軸) に対応する 5 つの記号 . . . 14 3.2 実験結果(潜在曲線モデル) . . . 15 3.3 実験結果(ModSecurity) . . . 15 3.4 実験結果(SVM) . . . 16 4.1 攻撃対象の環境 . . . 19 4.2 攻撃者の環境 . . . 19 4.3 横軸 (x軸) に対応する 5 つの記号 . . . 20 4.4 出現記号と重み . . . 22 4.5 横軸(x軸)に対応する5つの記号の比較 . . . 22 4.6 出現記号と重み . . . 22 4.7 実験結果 . . . 24

(10)

1

序論

1.1

はじめに

近年,急速な ICT 技術の高度化・多様化に伴い,データベース駆動型の Web サービス を利用するユーザは増加の一途をたどっている.商用の Web サービスでは,データベース に個人情報が格納されているため, Web アプリケーションが持つ脆弱性に対する攻撃には 十分な対策が必要である[1].

 Web アプリケーションに対する攻撃について,OWASP (Open Web Application

Secu-rity Project) によって Web アプリケーションに関する脆弱性がランク付けされている.中

でも SQL インジェクションの脆弱性を狙った攻撃が多く,以前から知られている脆弱性で あるにもかかわらず,対処が追いついていないことが指摘されている[2].   SQL インジェクション攻撃とは,データベースを利用する Web アプリケーションの SQL の呼び出し方の不備を利用した攻撃であり,攻撃が成功するとWeb アプリケーション のデータベースに不正にアクセスすることができる.有効的な SQL インジェクション攻撃 の対策として,プリペアドステートメントとバインド機構を使用することで,ユーザの入力 を無害化したり,ユーザの入力から SQL 文を組み立てられないようにする方法がある[3]. しかしながら,これらの対策が十分でない場合,入力文字列が攻撃か否か判断して攻撃を遮 断する必要がある.そこで,Web アプリケーションに入力される文字列を確認して攻撃を 検出する Webアプリケーションファイアウォール (WAF)が運用されている.  WAF とは,主に L7 を対象としたファイアウォールであり,一般的な L4 までを対象と したファイアウォールと比較して HTTP リクエストの入力パラメータを分析することが可

(11)

1.1 はじめに

能である [4].WAF による攻撃検出方法は,ブラックリストやホワイトリストを利用した

リスティングによる形式や,正常な入力パターンを学習するパターン認識,最近では SVM

(Support Vector Machine) やベイジアンネットワークなどの機械学習を利用した WAF も 運用されている.機械学習を利用するメリットとして,未知の攻撃や未発見の脆弱性に対す る攻撃に対応出来る可能性,攻撃検出のために参照するデータの量の削減による処理効率の 向上などがある.しかしながら,機械学習を利用して攻撃検出を行う際,誤検出がしばしば 起こる.  SQL インジェクション攻撃には多くの特殊記号が含まれる傾向がある.そこで,松田ら によって SQL インジェクション攻撃に含まれる記号に着目した攻撃検出法が提案されてい る[1].この方式では,潜在曲線モデルの手法を応用することで記号に重みを付与し,その 情報を用いて SQL インジェクション攻撃の検出を行う.記号それぞれに対して攻撃の重み と正常の重みを付与し,それらの情報を抽象化 (数学モデル化) して攻撃を検出するため, 記号の扱い方が柔軟である.そのため,ModSecurity や SVM を用いた検出法と比較する と,攻撃を正常と誤検出する危険性がある一方,記号が多用されているデータをいつでも攻 撃と検出しないことから正常データを攻撃と誤検出する危険性は緩和されている.  松田らの方式は,正常データに対する検出は高いパフォーマンスを示した一方,攻撃デー タに対するパフォーマンスは ModSecurity や SVM を用いた手法より高くない [1].よっ て,正常データのパフォーマンスを下げずに,攻撃検出率を向上させることが課題である.  SQL インジェクション攻撃には様々な攻撃手法が存在し,攻撃者の目的に応じて挿入さ れる SQL 文が異なることが示されている[11].そこで,攻撃者の目的と SQL インジェク ション攻撃に含まれる記号の情報の関連性を利用することで攻撃の検出率が向上すること が考えられる.また,実際に SQL インジェクション攻撃を成立させ,目的の情報を得るた めには,データベースに関連する情報を必要とするため,ブラインド SQL インジェクショ ン攻撃が行われる.そのため,ブラインド SQL インジェクション攻撃に含まれる記号の情 報は,文献などから収集したデータベースに関連する情報を収集する過程を含まない SQL インジェクション攻撃の記号の情報と比べて実際の攻撃検出において有用であると考えられ

(12)

1.2 本論文の構成 る.  そこで本論文では,攻撃者の目的とブラインド SQL インジェクション攻撃に含まれる記 号の出現頻度の関連性を利用して記号に重みを付与し,その情報を用いて攻撃を検出する手 法を提案する.

1.2

本論文の構成

本論文は,全 6 章で構成される.本章では,研究の背景と木t系を述べた.第 2 章では, SQL インジェクション攻撃の概要と対策について述べる.第 3 章では,既存手法である松 田らによる非線形な潜在曲線モデルを応用した SQL インジェクション攻撃の特徴抽出の問 題点について明らかにする.その過程において,既存手法および従来の検出手法を紹介す る.第 4 章では,第 3 章で述べた問題点を解決した,攻撃者の目的とブラインド SQL イ ンジェクション攻撃に含まれる記号の出現頻度の関連性による攻撃検出手法を提案する.第 5 章では,実験結果から検出手法について考察を行い,提案手法の有用性を示す.第 6章で は,本研究の結論と今後の課題を示す.

(13)

2

SQL

インジェクション攻撃

本章では,SQL インジェクション攻撃の概要と対策について示す.

2.1

SQL

SQL とは,リレーショナルデータベース管理システム (RDMS) に対して,操作を行 うことができる言語である.RDBMS として有名なものとしては,Oracle Database や

Microsoft SQL Server,MySQL,PostgreSQL などがある.

 SQLは,データベースの定義,登録,変更,削除,検索といった操作が可能である.SQL

文を構成する要素は表2.1のように,キーワード,演算子,識別子,リテラルなどがある[3].

 SQL の実行例を以下に示す.以下の SQL 文は,users というテーブルから,列「user」

が 「admin」の「id」と「password」の検索を実行する.

SELECT id, password FROM users WHERE user = ’admin’ ;

表2.1 SQL 文の構成要素

キーワード(予約後) SELECT FROM WHERE AND

演算子など = >= ,

識別子 a b c table name age

(14)

2.2 SQL インジェクション攻撃

2.2

SQL

インジェクション攻撃

SQL インジェクション (CWE-89: Improper Neutralization of Special Elements used in an SQL Command ’SQL Injection’) とは,データベースを利用する Web アプリケー

ションの SQL の呼び出し方に不備がある場合に発生する脆弱性である[5].  SQL を Web アプリケーションから利用する場合,SQL 文のリテラル部分をパラメータ 化することが一般的である.パラメータ化された部分を実際の値に展開するとき,リテラル として文法的に正しく文を生成しないと,パラメータに与えられた値がリテラルの後ろに続 く文として解釈されてしまう.これが SQL インジェクションの原因である[3]. 図2.1 SQL インジェクションによるオンラインバンキングへの不正ログインの例

2.2.1

SQL

インジェクションの動作例

 文字列リテラルや日時リテラルは全体をシングルクォートで囲んで記述する.これを クォートするといい,クォートする対象の文字列の中にシングルクォートが現れる場合が問 題になる.文字としてのシングルクォートなのか,リテラルの終端としてのシングルクォー トなのかを区別しなければならないためである[3].  以下は,ユーザー名とパスワードを用いて認証を行う SQL 文の例である.この SQL 文 では,ユーザーが入力したユーザー名とパスワードが $username,$password にそれぞれ 与えら,認証が行われる.

(15)

2.3 SQL インジェクション攻撃の対策

SELECT * FROM users WHERE user=’$username’ AND password=’$password’

 上記の SQL 文の $username と $password それぞれに 1’ or ’1’ = ’1 を与えると以下の

ような SQL 文になる. このとき,常に真となる ’1’ = ’1’ との OR 条件となり,認証が成

功してしまう.

SELECT * FROM users WHERE user=’1’ OR ’1’ = ’1’ AND password=’1’ OR ’1’ = ’1’

 このように,SQL インジェクションは攻撃コードによって開発者が意図しない形にSQL 文が改変され,元の構文が改変されることによって起こる攻撃である.

2.2.2

SQL

インジェクションによる影響

SQL インジェクションの脆弱性がある場合,悪意あるリクエストにより,データベース の不正利用をまねく可能性がある.SQL インジェクションによって,受ける可能性がある 影響として,次のようなものがある. データベース内のデータの不正な閲覧や改ざん 認証の回避 データベースサーバを経由したプログラムの実行など  SQL インジェクションによる被害は国内だけでも多くの事例がある.SQL インジェク ションによってクレジットカード情報などが漏洩した場合,企業は調査や被害者対応の人件 費,システム再構築関連費,賠償用の費用,詫び状送付費,営業停止期間の機会損失など, 全体で 1億円を超えるケースも少ないくない.また,対応後も顧客の信用を失ってしまうと いった影響がある.よって,SQL インジェクションによる攻撃は事前に十分な対策をとる ことが必要となる.

2.3

SQL

インジェクション攻撃の対策

SQL インジェクションの対策には主に次のようなものがある[6].

(16)

2.3 SQL インジェクション攻撃の対策

2.3.1

Web

アプリケーションでの対策

(

バインド機構の使用

)

SQL インジェクションの根本的な対策としてバインド機構の利用が推奨されている[3]. バインド機構とは,変数部分にプレースホルダと呼ばれる「?」などの特殊文字を使用して SQL 文の雛形をあらかじめ用意しておき,後に,そこに実際の値を割り当てる方法である. 割り当てられる変数は完全な数値リテラルもしくは文字列リテラルとして扱われるため,変 数の中に SQL 文として特別な意味をもつ文字が含まれていたとしても,それらは自動的に エスケープ処理され,単なる文字として認識される.

2.3.2

Web

アプリケーションでの対策

(

入力データのエスケープ処理

)

バインド機構が利用できない場合は,SQL 文を構成する全ての変数や演算結果に対して エスケープ処理を行う.エスケープ処理の対象は,SQL 文にとって特別な意味を持つ記号 文字(「’」,「;」,「%」,「+」など)である.例えば,「’」を「”」に置き換えることで,単なる 文字列として扱うことができる.なお,SQL 文にとって特別な意味を持つ記号文字は,デー タベースエンジンによって異なるため,利用しているデータベースエンジンに応じて対策を する必要がある[3].

2.3.3

ゲートウェイ上での対策

(WAF)

WAF (Web Applicatioln Firewall) とは,Web アプリケーションに対する攻撃を検知・

排除することでセキュアな Web アプリケーション運用を実現する製品である.WAF は主 にレイヤ 7 を対象とした ファイアウォールであり,一般的なレイヤ 4 までを対象とした ファイアウォールと比較し,HTTP リクエストの入力パラメータを検証することが可能で ある[4].WAFの攻撃検出方法は,ブラックリストやホワイトリストによるリスティング形 式や、正常なパターンを学習させるパターン認識であり,最近では SVM (Support Vector Machine) やベイジアンネットワーク,潜在曲線モデルなどの機械学習の手法を取り入れた WAF も運用されるようになっている[1].

(17)

2.4 ブラインド SQL インジェクション

2.4

ブラインド

SQL

インジェクション

SQL インジェクション攻撃を成立させ,目的の情報を得るためには,テーブル名やカラ ム数などのデータベースに関連する情報が必要になる.そこで,データベースに関連する情 報を収集する手法として,ブラインド SQL インジェクションという手法が使われている. ブラインド SQL インジェクション攻撃とは,意図した情報が得られない場合に,複数回に わたって SQL インジェクション攻撃を仕掛け,その応答を分析し,少しずつデータベース に関連する情報を収集して情報を得る手法である.  ブラインド SQL インジェクションを機械的に実行するツールとして,sqlmap が存在す る.sqlmap とは、オープンソースの SQL インジェクションの脆弱性診断ツールである. sqlmap は主に,以下のようなSQL インジェクションの手法を用いる[13]. • Boolean-based blind WHERE 句,HAVING 句の真偽値を利用する手法.以下の SQL文 では文字列リテ ラル,数値リテラルに対応した条件式を評価している.

’ AND 4908=2320 AND ’TFah’=’TFah’

• Time-based blind

データベース側の応答時間差により情報を取得する手法.以下の SQL 文では,スリー

プなどの時間変化を評価している.

’ AND SLEEP(5) AND ’ybNW’ = ’ybNW’

• Error-based

データベース側からのエラー応答から情報を取得する手法.以下の SQL 文ではパラ

メータの最大値によるエラー発生を評価している.

SELECT CAST(x’FFFFFFFFFFFFFFFF’ AS UNSIGNED)+1;

• UNION query-based

別々のテーブルの検索結果を結合するクエリを使用する手法.以下の SQL 文では

(18)

2.4 ブラインド SQL インジェクション

’) UNION ALL SELECT NULL,NULL,NULL#’

• Stacked queries

1 回のトランザクションで複数のクエリを実行させる手法.以下の SQL 文では構文を

評価している.

(19)

3

既存手法

本章では,既存手法である松田らによる 非線形な潜在曲線モデルを応用した SQL イン ジェクション攻撃の特徴抽出を紹介する.また,松田らの方式を紹介する過程として SQL インジェクション攻撃を検出する従来研究,SVM,潜在曲線モデルについて述べる.

3.1

従来研究

SQL インジェクション攻撃の基本的な対策は入力の制限やバインド機構を利用すること である.しかし,これらの対策が十分でない場合,入力文字列からそれが攻撃か正常か判断 する必要がある.このような攻撃検出では,過去の攻撃パターンを利用することが一般的 である.最も単純な方法として,過去に行われた攻撃データからブラックリストを作成した り,パターンマッチングを行ったりする方法がある.この方法は Apacheのモジュールであ る ModSecurity にも正規表現などを用いて応用されている.  しかしながら,これらの手法では未知の攻撃に対応することが難しく,攻撃検出の際に参 照するデータ量も多いため,処理効率にも問題がある.そこで,これらの問題を解決する方 法として,SVM やベイジアンネットワークなどの機械学習を利用した攻撃検出の手法が提 案されている.しかし,機械学習を用いて攻撃を検出する際,攻撃を正常と判断したり,正 常を攻撃と判断したりする誤検出の問題がしばしば起こる.  ほとんどの SQL インジェクション攻撃は記号を含むため,それらの情報を用いて攻撃検 出を行うことは比較的容易である.しかし,正常データに顔文字などの記号が含まれていた 場合に,正常を攻撃と判断する誤検出を少なくすることが重要になる.

(20)

3.2 SVM (Support Vector Machine)  攻撃検出は,攻撃か正常かわからないデータにラベルをつける作業であり,そのラベルは 観測されるデータである入力文字列によって与えられるものである.したがって,攻撃検 出には,攻撃や正常のラベルを潜在変数とするモデルが自然に当てはまる[1].そこで,既 存研究として,松田らによって,潜在曲線モデルと呼ばれる数理モデルを用いて SQL イン ジェクション攻撃を検出する方法が提案されている[1].

3.2

SVM (Support Vector Machine)

SVM は統計的学習理論に基づく 2 クラスのパターン認識手法であり,ニューラルネット ワークなどの従来方と比較して汎用能力が高い点と最適解が求まる点に特徴があり,学習に 用いていないデータに対しても高い識別率を示す.  SVM での最適化の目的は,マージン (margin) を最大化することであり,マージンは, 超平面 (決定境界) と,この超平面に最も近いトレーニングサンプルとの間の距離として定 義される.超平面に最も近いトレーニングサンプルはサポートベクトル (support vector) と呼ばれる[12].  SVM は学習の最適解として求められた分離超平面による線形識別を 行っているが,学習用データを線形分離することが不適切な場合,学習用データを元のパ ターン空間からより高次元のパターン空間に非線形写像を行い,高次元空間で分離超平面を 構築し線形識別を行うことができる[9].しかし,次元を高めると、再計算時の計算量が問 題となる.

3.3

潜在曲線モデル

潜在曲線モデルとは,同じ対象に複数回の測定を行って得られるデータを分析するモデル の 1 つである.潜在曲線モデルでは,子供の成長 (身長の伸びや体重の増加) の時系列変化 といった,経時的に反復測定した縦断データの解析に用いることができる.この縦断データ に含まれる変数の変化の様相を分析に特化したモデルである。潜在曲線モデルに現れる潜在 変数は,切片や傾きといった,直線や曲線を記述する量である.また,多変量の潜在曲線モ

(21)

3.4 特徴抽出アルゴリズム デルもあり,従来の潜在変数に潜在曲線モデルを適合させることもできる[8].

3.4

特徴抽出アルゴリズム

ここでは,潜在曲線モデルを応用した SQL インジェクション攻撃の特徴抽出法の手順に ついて述べる. 手順 1   攻撃データをIA個,正常データをIN 個準備する. 手順 2   攻撃,正常それぞれのデータの集合に含まれるすべての記号(攻撃データ集合について はJA個,正常データ集合についてはJN 個とする)を出現頻度の大きい順に並べ替え, その記号を順にs1, s2, ..., sj とする. 手順 3   文字列の攻撃データ,正常データを潜在曲線モデルに適用するため,以下の手順で数値 化する.攻撃データと正常データを 3 次元ユークリッド空間R3 上の点(x, y, t)として 表現する.  第 1 座標X は,攻撃データ集合に出現する記号に対応させるように定義する.具 体的には,攻撃データ集合の記号出現頻度から上位x 個のデータに着目し,それらを s1, s2, ..., sxとする.このx個の記号の列を第1 座標X として 1 = s1,2 = s2,...x = sx と定義する.これにより,記号sj(j = 1, 2, ..., x)を,R3のX 軸の(j, 0, 0)という座標 に対応させることが可能になる.  第 2 座標yの値を,第 1 座標jに対応する記号sj から yj(li) = zi(sj) |li| を計算した値として定義する.ここで,liは文字列のデータ,|li|は文字列li に含まれ

(22)

3.5 攻撃検出アルゴリズム る記号の総数,zi(sx)は文字列li に含まれる記号sxの個数を表す.ここまでの定義に より,文字列lに記号sj1,sj2 が含まれる場合,座標の組(j1, yj1(l))(j2, yj2(l))が定 まる.  第 3 座標tの値は,データが攻撃の場合はt = 1,正常の場合はt = 0とする. 手順 4   手順 3 で作成したデータ集合を用いて,以下の潜在曲線モデルのパラメータを最尤法 で推定する. y = a0 + a1x + a2x2+ε1 a0 = b00+ b10t +ε2 a1 = b01+ b11t +ε3 a2 = b02+ b12t +ε4 ここで,εi(i = 1, 2, 3, 4)は平均 0,分散 σ2 の正規分布に従う誤差項である.提案モ デルに 2 次関数を用いるのは,SQL インジェクション攻撃に含まれる出現頻度の高い 記号の分布を表現するモデルとして最も単純なモデルがy = a0+ a1x + a2x2だからで ある. 手順 5   モデルy = a0+ a1x + a2x2 のy 座標の値を SQLインジェクション攻撃の特徴を記号 の重みという形で抽出する.

3.5

攻撃検出アルゴリズム

ここでは,入力文字列が攻撃であるか正常であるかを判定する際の手順について述べる. 手順 1   入力文字列に含まれる文字sjk(k = 1, 2, ..., K) を求め,座標の組 TN = (jk, yjk, 0) K k=1TA= (jk, yjk, 0) K k=1 を作成する.なお,入力文字列に記号sj が含まれない場合,そのときのyj の値は欠損

(23)

3.6 SQL インジェクション攻撃の特徴抽出と攻撃検出 値として扱う. 手順 2   作成した座標の組のうち,どちらの方が特徴抽出アルゴリズムで求めた潜在曲線 モデルの超平面にあてはまりが良いか調べる.具体的には残差を利用し,座標の組 TA = (jk, yjk, 0) K k=1 の残差e(TA)がTN = (jk, yjk, 0) K k=1の残差e(TN)より小さいと きは入力された文字列を攻撃と判定し,それ以外のときは正常と判定する.

3.6

SQL

インジェクション攻撃の特徴抽出と攻撃検出

ここでは,松田らが特徴抽出アルゴリズムに従い,SQL インジェクション攻撃の特徴抽 出を行った結果について述べる.  松田らが使用した攻撃データ,正常データは以下のとおりである.攻撃データは文献 [10]から収集し,そこから攻撃データを再構成する攻撃データ生成機を作成して 2,779 個 (JA = 2779)準備した.正常データは,ブラウザに入力される個人情報に関連する仮想的な データを用意し,顔文字や Wiki の文法など,記号を多く含む文字列を444 個 (JA = 444) 準備した.  表3.1は松田らが収集した2,779個の攻撃データ集合に含まれる記号のうち,出現頻度の 高い 5 つの記号である.出現頻度松田らは,表3.1にある 5 つの記号を用いて SQL イン ジェクション攻撃の特徴抽出を行っている. 表3.1 横軸(x軸) に対応する 5つの記号 記号 Space ’ ; ) ( x座標 1 2 3 4 5

(24)

3.7 検出結果

3.7

検出結果

表3.2は,松田らによる方式の検出実験の結果である.なお,松田らは他の方式と比較し て有用性を確認しており,表3.3,表3.4はその検出実験の結果である[1].表3.3はApache のモジュールである ModSecurity に対して同様のテストデータを適用し,検出実験を行っ た結果である.表3.4は,機械学習のアルゴリズムである SVM を用いた攻撃検出手法に対 して,検出実験を行った結果である.表3.3,3.4から,ModSecurity と SVM はすべての 評価用の攻撃データを正しく検出し,松田らの手法はすべての評価用の正常データを正しく 検出していることがわかる.松田らの手法では攻撃検出の精度は ModSecurity よりやや劣 るものの,正常検出においては高いパフォーマンスを示した. 表3.2 実験結果(潜在曲線モデル) 攻撃 正常 学習用データ 2,799個 444個 テスト用データ 200個 50個 検出率 96% 100% 表3.3 実験結果(ModSecurity) 攻撃 正常 テスト用データ 200個 50個 検出率 100% 38%

3.8

松田らの方式の問題点

検出実験の結果,松田らの手法では正常データに対する検出においては高いパフォーマン スを示したが,攻撃データに対するパフォーマンスは ModSecurity や SVM を用いた手法 より高くないという結果となった.

(25)

3.8 松田らの方式の問題点 表3.4 実験結果(SVM) 攻撃 正常 学習用データ 2,799個 444個 テスト用データ 200個 50個 検出率 100% 0%  2 章で SQL インジェクション攻撃の影響について述べたとおり,SQL インジェクショ ン攻撃が成立した場合,Web アプリケーションを運用する組織は甚大な被害を被る.その ため,攻撃データを正しく攻撃と判定し,攻撃の成立を防ぐことが重要であると考えられ る.そこで,正常データに対するパフォーマンスを下げずに,攻撃検出率を向上させる必要 がある.

(26)

4

提案手法

前章では,松田らの手法の問題点として,正常データの検出においては高いパフォーマン スを示すが,攻撃データに対するパフォーマンスは ModSecurity や SVM を用いた手法よ り高くないことを述べた.本章では,この問題点を解決するため,攻撃者の目的とブライン ド SQL インジェクション攻撃に含まれる記号の出現頻度の関連性による攻撃検出手法を提 案する.提案手法は,攻撃者の目的を設定することで,攻撃データと正常データの両方にお いて高い検出率を示す.また,ブラインド SQL インジェクション攻撃に含まれる記号の情 報を用いて攻撃検出を行うため,実際に行われる攻撃検出においても高いパフォーマンスを 発揮すると考えられる.

4.1

提案手法の概要

提案手法は,攻撃者の目的と ブラインド SQL インジェクション攻撃に含まれる記号の 出現頻度の関連性による攻撃検出を行う.具体的には,攻撃者の目的を設定し,ブラインド SQL インジェクション攻撃により目的を達成するまでに送信されたリクエストに含まれる 記号の情報を利用して攻撃検出を行う.  SQL インジェクション攻撃には様々な攻撃手法が存在し,攻撃者の目的に応じて挿入さ れる SQL 文が異なることが示されている.そこで,攻撃者の目的と SQL インジェクショ ン攻撃に含まれる記号の情報の関連性を利用することで攻撃の検出率が向上することが考え られる.  また,実際に SQL インジェクション攻撃を成立させ,目的の情報を得るためには,デー

(27)

4.2 前提条件 タベースに関連する情報を必要とするため,ブラインド SQL インジェクション攻撃が行わ れる.そのため,ブラインド SQL インジェクション攻撃に含まれる記号の情報は,文献な どから収集したデータベースに関連する情報を収集する過程を含まない SQL インジェク ション攻撃の記号の情報と比べて,データベースに関連する情報を収集するリクエストの遮 断に役立つため,実際の攻撃検出において有用であると考えられる.  よって,提案手法は,攻撃者の目的とブラインド SQL インジェクション攻撃に含まれる 記号の出現頻度の関連性を利用することにより,攻撃検出において高いパフォーマンスを 示し,実際の SQL インジェクション攻撃に対しても高いパフォーマンスを示す検出手法と なっている.

4.2

前提条件

本研究における前提条件について述べる.SQL インジェクション攻撃を行う攻撃者の目 的は複数存在するため,本研究では図4.2に示す状況を想定し,データの収集を行う.攻撃 対象は SQL インジェクション攻撃の脆弱性が存在し,検索の機能を持つ Web アプリケー ションとする.攻撃者の目的は,攻撃対象が保持するすべてのデータベースのダンプとする. 上記の状況を表4.1,4.2で示す環境のもとで再現し,データの収集を行った.具体的には,

PHP/MySQL製の脆弱な Web アプリケーションである DVWA (Damn Vulnerable Web Application) を VirtualBox 上の Linux にインストールし,DVWA に対して sqlmap で 以下のコマンドを実行してすべてのデータベースをダンプした.

$ ./sqlmap.py -o -u ”http://192.168.33.10/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”「Cookieの値」; security=impossible” –dump-all

4.3

ブラインド

SQL

インジェクション攻撃の特徴

ここでは,3章で述べた特徴抽出アルゴリズムを用いて,攻撃者の目的を「攻撃者が保持

(28)

4.3 ブラインドSQL インジェクション攻撃の特徴

表4.1 攻撃対象の環境

仮想化ソフトウェア VirtualBox 5.0.24

OS CentOS 6.7 (64bit)

脆弱 Web アプリケーション DVWA (Damn Vulnerable Web Application)

DBMS mysql Ver 14.14 Distrib 5.5.51, for Linux (x86 64)

表4.2 攻撃者の環境 OS OS X El Capitan 10.11.5 攻撃ツール sqlmap 1.0.11.5 ション攻撃の特徴抽出を行う. 手順 1   本研究で使用するデータは以下の通りである.攻撃データには,オープンソースのSQL インジェクションの脆弱性診断ツールである sqlmap で脆弱性の存在する Web アプリ ケーションからデータベースをダンプした際に送信された 1,924 個 (IA = 1924) のリ クエストを準備した.正常データには,検索の機能を持つ Web アプリケーションに送 信されると考えられる 268 個 (IN = 268)のリクエストを準備した. 手順 2   1,924 個の攻撃データ集合に含まれている記号の分布は図4.3 のようになった.また, 攻撃データに含まれている記号のうち,出現頻度の高い 5 つの記号 (x = 5) を選ぶと 表4.3のようになる. 手順 3   本研究では,1924 個の攻撃データと 268 個の正常データからそれぞれのデータ集合を 作成した.図4.3の点が構成したデータ集合を表している. 手順 4   手順 3 で作成したデータ集合を用いて,潜在曲線モデルのパラメータを最尤法で推定

(29)

4.3 ブラインドSQL インジェクション攻撃の特徴 図4.1 実験環境 し,特徴抽出を行った.図4.3は,モデル y = a0+ a1x + a2x2 の推定結果である.図 4.3の曲線が推定結果のモデル (2 次関数) を表している.なお,これらの図の横軸 (x 軸) は表4.3に示した記号に対応する. 手順 5   潜在曲線モデルから記号の重みを算出する.表4.4はモデル y = a0+ a1x + a2x2 から 得られる記号の重みの算出結果である. 表4.3 横軸(x軸) に対応する 5つの記号 記号 Space ( ) , ’ x座標 1 2 3 4 5

(30)

4.4 実験 0 0.1 0.2 0.3 0.4 0.5 SP ( ) , _ = . * > - ` ! " # $ & + / : ; < ? @ [ ¥ ] ^ { | } ~ DEL 図4.2 ブラインドSQL インジェクション攻撃に含まれる記号の分布 図4.3 提案手法データの分布と推定結果

4.4

実験

ここでは,提案手法の有用性を検証するために,上記の前提条件で述べた方法と同様の方 法で新たに収集した評価用の攻撃データおよび正常データを用いて SQL インジェクション

(31)

4.4 実験 表4.4 出現記号と重み 記号 Space ( ) , ’ 攻撃 0.26465932 0.25184209 0.21951243 0.16767034 0.09631582 正常 0.87445428 0.25591129 -0.08131584 -0.13722714 0.08817741 攻撃の検出実験を行う.また,提案手法の有用性について検証する過程で,既存手法にも提 案手法に同様のデータを適用して特徴抽出を行い,検証実験を行う.評価用データには,攻 撃データと正常データそれぞれ 100 個収集した.なお,これらのデータは特徴抽出の際に 使用していないことに注意する.

4.4.1

既存手法による特徴抽出

提案手法の有用性を確認するため,上記実験と同様のデータを既存手法に適用し,検出実 験を行った.表4.5に提案手法と既存手法の x 軸の比較を示す.図4.4.1は,既存手法によ る推定結果を示す.なお,表4.6は既存手法の潜在曲線モデルから得られる記号の重みの算 出結果である. 表4.5 横軸(x軸)に対応する5つの記号の比較 x座標 1 2 3 4 5 提案手法 Space ( ) , ’ 既存手法 Space ’ ; ) ( 表4.6 出現記号と重み 記号 Space ’ ; ) ( 攻撃 0.24825736 0.11328418 0.07426349 0.13119529 0.28407959 正常 0.87467431 0.25590768 -0.08154009 -0.13766901 0.08752092

(32)

4.4 実験 図4.4 既存手法のデータの分布と推定結果

4.4.2

検出結果

 提案手法により得られたモデルは y = (b00+ b10t) + (b01+ b11t)x + (b02 + b12t)x2 b00 = 1.77431317 b10 =−1.51634905 b01 =−1.04051684 b11 = 1.05696826 b02 = 0.14065795 b12 =−0.5041417

(33)

4.4 実験 である.また,既存手法により得られたモデルは y = (b00+ b10t) + (b01+ b11t)x + (b02 + b12t)x2 b00 = 1.7747598 b10 =−1.1667298 b01 =−1.04074492 b11 = 0.56857254 b02 = 0.14065943 b12 =−0.02825969 である.このモデルは,t = 1のときは攻撃の特徴を,t = 0のときは正常の特徴を表して いる.  表4.7は,検出実験を行った結果をまとめたものである.表4.7より,攻撃者の目的に応 じて記号の重みを変更することで,正常データの検出率を下げずに,攻撃検出率が向上した ことがわかる.また,評価用の攻撃データは sqlmap で送信されたデータベースに関連する 情報を収集する過程を含むリクエストであり,その攻撃データを正しく攻撃と判定した事か ら,実際の SQL インジェクション攻撃に対しても有効であると考えられる. 表4.7 実験結果 攻撃 正常 提案手法 100% 100% 既存手法 94% 100%

(34)

5

考察

本章では,前章の実験結果から,攻撃検出と正常検出についてそれぞれ考察を行い,提案 手法の有用性を示す.また,提案手法における問題点と今後の課題について述べる.

5.1

攻撃検出

既存手法は用意した 94 個の攻撃データを攻撃と正しく検出し,残りの 6 個のデータを正 常と誤検出した.提案手法は用意した 100 個すべての評価用の攻撃データを攻撃と正しく 検出した.  攻撃者の目的を設定することで,攻撃目的に応じて挿入される SQL 文が異なるため,攻 撃者が目的を達成するまでに送信されるリクエストに含まれる記号の出現頻度に偏りが存在 し,その偏りを利用することで検出率が向上したと考えられる.また,ブラインドSQl イン ジェクション攻撃には,文献などから収集した SQL インジェクション攻撃と比べて,デー タベースに関連する情報を収集する過程が含まれるため, 2 章で述べた,Boolean-based

blind ,Time-based blind,Error-based,UNION query-based,Stacked queries といっ

た SQL インジェクション攻撃の手法に含まれる SQL 句が多く含まれる.そのため,攻撃

に用いられる SQL 句に必要となる記号の出現頻度も高くなるので,ブラインド SQL イン

ジェクション攻撃に含まれる記号の出現頻度を利用することで sqlmap が送信する実際の

SQL インジェクション攻撃を想定したリクエストを正しく検出することが可能であったと

(35)

5.2 正常検出

5.2

正常検出

既存手法,提案手法とも用意した 100 個すべての評価用の攻撃データを正しく検出した. 前章で示した図4.3,4.4.1,表4.4,4.6より,得られた数理モデルとそこから抽出した重み がほとんど変わらないことがわかる.よって,正常データに対する検出のパフォーマンスが 下がることはなかった.  本研究では,攻撃対象を検索の機能を持つ Web アプリケーションとしたため,正常デー タにはブラウザに入力されると考えられるキーワードを用意した.ブラウザに入力される キーワードには,キーワード同士を区切る記号として Space が入力されることが多い一方 で,Space 以外の記号が入力されることが少ないという特徴があった.よって,Space以外 の記号の影響をあまり受けなかったため,提案手法と既存手法の推定した数理モデルがあま り影響がなく,正常データに対する検出のパフォーマンスは下がらなかったと考えられる.

5.3

課題

攻撃者の目的とブラインド SQL インジェクション攻撃に含まれる記号の情報の関連性を 利用することにより,正常データの検出率を下げずに,攻撃検出率が向上した.しかし,攻 撃に含まれる記号の情報は Web アプリケーションの機能や規模によって異なることが考え られる.そのため,Web アプリケーションを機能や規模といったカテゴリで分類し,それ ぞれのカテゴリに対する攻撃の特徴を抽出した結果を動的に選択して記号の重みを変更する ことで検知範囲を拡充する必要がある.具体的には,既存研究として,複数 WAFの動的選 択により検知範囲を拡充する手法が存在する[4]ため,この手法に適用して図5.3のように 検知範囲を拡充する方法がある.よって,攻撃者の目的とブラインド SQL インジェクショ ン攻撃に含まれる記号の情報の関連性を利用した攻撃検出手法を適用した WAF を複数台 用意し,複数の WAF の動的選択により,検知率と処理効率を下げることなく検知範囲を拡 充することが今後の課題である.

(36)

5.3 課題

WAF 選択装置 複数 WAF

インターネット サーバ

(37)

6

結論

SQL インジェクション攻撃には多くの記号が含まれる傾向がある.そこで,松田らによっ て, SQLインジェクション攻撃に含まれる記号に着目した攻撃検出手法が提案されている. しかし,松田らの方式は,正常データに対する検出率は高いパフォーマンスを示した一方, 攻撃データに対するパフォーマンスは ModSecurityや SVM を用いた検出方法と比較して 高くない.そのため,正常データに対するパフォーマンスを下げずに攻撃検出率を向上させ る必要がある.  SQL インジェクション攻撃には様々な手法が存在し,攻撃者の目的に応じて挿入される SQL 文が異なることが示されている[11].また,実際に SQLインジェクション攻撃を成立 させ,目的の情報を得るには,データベースに関連する情報を必要とするため,ブラインド SQL インジェクション攻撃が行われる.そこで,本論文では,攻撃者の目的と ブラインド SQL インジェクション攻撃に含まれる記号の出現頻度の関連性を利用した攻撃検出手法を 提案した.提案手法は,正常データに対するパフォーマンスを下げずに攻撃データに対する パフォーマンスを向上させた.また,ブラインド SQL インジェクション攻撃に含まれる記 号の情報を利用したことで,文献などから収集した SQL インジェクション攻撃を用いた既 存手法と比べ,実際の攻撃検出においても有用であると考えらえる.  今後の課題として,攻撃者の目的には様々な種類があり,ブラインド SQL インジェク ション攻撃に含まれる記号の情報は Web アプリケーションの規模や機能によって異なるこ とが考えられる.そのため,様々な攻撃者の目的を想定し,Web アプリケーションを機能 や規模ごとに分類して特徴をそれらの分類ごとに複数抽出する必要がある.また,抽出した 特徴から得られる記号の重みを動的に選択することで検知範囲を拡充することが可能である

(38)
(39)

謝辞

本研究の遂行と論文作成にあたり,ご指導,ご助言をいただきました高知工科大学情報学 群 清水明宏教授に心より感謝し厚く御礼申し上げます.本研究の副査を担当していただい た高知工科大学情報学群 横山和俊教授,吉田真一准教授に深く御礼申し上げます.  最後に,有益な議論を交わしていただいた高知工科大学 清水研究室の関係者各位に深く 感謝いたします.

(40)

参考文献

[1] 園田 道夫,松田 健 : 攻撃特徴記号に基づく WAF開発,情報処理学会論文誌 Vol.56 No.9,pp.1826-1833 (2015). [2] シマンテックが Web攻撃の傾向を解説,最多の攻撃はSQLインジェクション: http: //www.atmarkit.co.jp/ait/articles/1409/29/news104.html,(参照2017.2.1). [3] IPA,安全な SQL の呼び出し方 : https://www.ipa.go.jp/files/000017320. pdf(参照 2017.2.1). [4] 寺本 泰大,岸 寿春,永渕 幸雄,小山 高明,北爪 秀雄 : WAF の動的選択によるコス ト上昇を抑えた検知範囲拡充手法の検討,情報処理学会全国大会講演論文集,Vol.77 Issue 3,pp.3435-3436 (2015).

[5] MITRE,Common Weakness Enumeration,https://cwe.mitre.org/data/ definitions/89.html (参照 2017.2.6) [6] 上野 宣 : 脆弱性診断スタートガイド,株式会社 翔泳社,pp.50-54(2016.8.1) [7] 国内 Web サイトで SQL インジェクションの脆弱性 : http://www.excite.co.jp/ News/column_g/20160316/Cobs_413091.html,(参照 2017.2.8). [8] 狩野 裕,潜在曲線モデル : http://www.sigmath.es.osaka-u.ac.jp/~kano/old/ research/application/gasshuku02/LCA.pdf(参照 2017.2.9). [9] 伊波靖, 高良富夫 : SVM を用いた WAF への異常検知機能の実装と評価,情報処理学 会第 74 回全国大会講演論文集,pp.561-562(2012).

[10] Testing for SQL Injection (OTG-INPVAL-005) : https://www.owasp.org/ index.php/Testing_for_SQL_Injection_(OTG-INPVAL-006),(参照 2017.2.10)

[11] 佐野 綾子,松田 健,園田 道夫,趙 晋輝 : SQL インジェクション攻撃に含まれる文字

の出現頻度とその関連性の解析による攻撃検出手法の提案,情報処理学会第 76 回全国

(41)

参考文献

[12] Sebastian Raschka : Python 機械学習プログラミング,株式会社 インプレス, pp.66-67(2016.7.1).

[13] SlideShare,フリーでできるセキュリティ Web編: https://www.slideshare.net/ abend_cve_9999_0001/websqlm,(参照 2017.2.10)

表 2.1 SQL 文の構成要素 例
表 4.1 攻撃対象の環境
図 5.1 最適 WAF 選択

参照

Outline

関連したドキュメント

Thus, in Section 5, we show in Theorem 5.1 that, in case of even dimension d &gt; 2 of a quadric the bundle of endomorphisms of each indecomposable component of the Swan bundle

ELMAHI, An existence theorem for a strongly nonlinear elliptic prob- lems in Orlicz spaces, Nonlinear Anal.. ELMAHI, A strongly nonlinear elliptic equation having natural growth

The Calabi metric goes back to Calabi [10] and it was later studied by the first author in [11] where its Levi-Civita covariant derivative is computed, it is proved that it is

In order to prove Theorem 1.10 it is sufficient to construct a noise, extending the white noise, such that for every λ ∈ R \ { 0 } the extension obtained by the drift λ is

We have formulated and discussed our main results for scalar equations where the solutions remain of a single sign. This restriction has enabled us to achieve sharp results on

In order to get a family of n-dimensional invariant tori by an infinitely dimensional version of KAM theorem developed by Kuksin [4] and Pöschel [9], it is necessary to assume that

Since the data measurement work in the Lamb wave-based damage detection is not time consuming, it is reasonable that the density function should be estimated by using robust

Since we are interested in bounds that incorporate only the phase individual properties and their volume fractions, there are mainly four different approaches: the variational method