日本ソフトウェア科学会第 30 回大会 (2013 年度) 講演論文集「攻撃者目線」で学べるシステムセキュリティ実践的学習環境の提案
中島 滉介

伊藤 恵

新美 礼彦

本研究では, 脆弱性を含むシステムセキュリティ学習用のシステムを提案する. そのシステムに学習者自身が攻撃を加えることによって,「攻撃者目線」からシステムセキュリティを学べるような実践的学習環境の提案を目標とする.
システム開発において, セキュリティを意識した開発を行なうことはとても重要なことである. 近年, 情報システムに対する脅威は多様化しており, 開発者は開発対象のシステムを様々な脅威を防ぐように構築しなければならない. しかしそういったシステムを開発するには開発者自身にセキュリティに関して相応の知識や, それに伴う技術力が必要になってくる. システムセキュリティを攻撃者目線から学ぶことで, 攻撃の仕組みをより詳しく学ぶことができると考えられる. この研究により学習者のセキュリティに対する意識を高められたり, セキュアなコーディングができるようになることを目指す.

In this study, we propose a system for learning of system security, including the vulnerability. This study’s
goal is to propose learning tool that learner learns system security like “hacker” with learner’s attack to thissystem. In system development, it is important to consider security during development. Recently, threats
to the information system have been diversified. So developers have to develop system defending against
these threats. However, it is need the knowledge of security and high skill level to the developer to develop
system so. By learning system security form actually attacking a system, we think that learner can learn
principle of threats more. We aim at to learn system security, and to do secure programming for learner by
this study.

1 はじめに
1. 1 背景
コンピュータウイルス不正アクセスなどの脅威は年々減少傾向にある. しかし一方で, 手口が高度化し,システムセキュリティの知識が不足している技術者では対応が困難である.IPA（独立行政法人 情報処理推進機構）が発行した 2012 年度コンピュータウイルス・不正アクセス届出状況および相談受付状況 [1] によると,2004 年度から不正アクセスの届出は減少傾向にあることがわかる.(図 1) しかしその届出種別をみてみると,2011 年度多かった「アクセス形跡（未遂）」の項
Proposal of An Environment for Practical System Security Learning From the Viewpoint of “Hacker”
Kousuke Nakashima, Kei Ito, Ayahiko Niimi, 公立はこだて未来大学システム情報科学部, Dept. of Information and Computer Science, Future UniversityHakodate.

図1

不正アクセス届出件数の推移

目件数が大幅に減り, その代わりに「侵入」,「なりすまし」の項目件数が増えている.(図 2) これにより, 今までのセキュリティで防げていた脅威が防げなくなってきていることがわかる. 被害内容としては,「ウェに侵入され Web ページを改変されたり, なりすましによる金銭的な被害を受けることもある. システムの開発者はそのようなことが起こらないように, セキュリティ要件をしっかり盛り込み, セキュアなシステムを開発しなければならない. このツールを使用した学習者が, システム開発において, セキュアなシステムを構築できるようになることが本研究の目標である.

2 関連研究シ ス テ ム セ キュリ ティの 学 習 環 境 で あ る,Web-Goat,AppGoat の２つを関連研究として紹介する.

2. 1 WebGoat
WebGoat [2] は OWASP コミュニティが開発した
図2

不正アクセス届出の種類

Web アプリケーションのセキュリティを学ぶためのツールである.(図 3) このツールは実際に学習者が用ブサイトの改ざん」,「踏み台として悪用」,「オンラ意された脆弱性を含む環境に攻撃を仕掛け, その仕組インサービスの不正利用」が多い. システムセキュリ

みを学ぶといったツールになっている. 特徴としては

ティが不十分であると, そのシステムを利用している学習者が「攻撃者目線」でシステムセキュリティにつ人だけではなく, 全く関係のない人にまで被害が及んいて学べるということである. 自分が攻撃者となり,でしまう可能性がある. こういった被害を防ぐために仕組みを理解したうえで実際に攻撃してみることで,も, システム開発者はセキュアなシステムを開発する

ただ書籍や講義などで学ぶよりも, 攻撃の仕組みにつ必要がある.

いて理解が深まると考えられる. WebGoat では Web

システムセキュリティを学ぶ方法として, 様々な企アプリケーションに対する脅威について XSS や SQL業が開催しているセキュリティセミナーに参加する方インジェクションなど, 大きく分けて 19 種類に分か法が考えられる. この方法ではセミナーを開く企業はシステムセキュリティに対して詳しい場合が多く, より実践的なセキュリティ知識を学ぶことができる. しかし, 参加するのに参加費が必要であったり, 開催日時や場所の関係で学生では参加することが容易でない場合がある. 他にもインターネットや書籍から情報を集め学習する方法があると考えられる. この学習方法は多様な情報を手軽に集められる反面, 情報の取捨選択が難しい.

1. 2 目的
本研究の目的はセキュリティの知識が不十分なシス
テム開発者に対して, システム上の脅威を体験し, 学ぶことができるツールの提案と構築である. システムセキュリティにおいて, 攻撃を防げなかった場合, サーバ

図3

WebGoat

れており, 脅威について詳しく学ぶことができる.

意したらよいかを学習させることができると考える.

学習の流れとしては, 学習者はまずどの脅威について学ぶかを選択する. 選択すると課題のページが表示

2. 2 AppGoat

されるので, 実際に攻撃を加えていくという流れにな

AppGoat [3] は IPA が開発した脆弱性体験学習ツーる. 学習者が何をしたらよいかわからなくなった時のルである.(図 5) AppGoat は WebGoat と同じようにために, ヒントを表示させる機能もある. ヒントはい

学習者が用意された脆弱性を含む環境に攻撃を仕掛

くつかの粒度に分け,, 少しずつ提示していくという工けることで, その仕組みを学ぶといったツールになっ夫もされている. また学習者はヒントだけではなく,ている.AppGoat は「ウェブアプリケーション版」とこのツールの内部で動く Java のソースコードを見る「サーバ・デスクトップアプリケーション版」に分かこともできる.(図 4)れており, それぞれ学習できる内容が異なる.

図4

WebGoat のソースコード

学習ツールとして多くの機能がある WebGoat だ

図5

AppGoatが,WebGoat に足りない点として 2 つのことが挙げられる.

AppGoat は WebGoat と比べ,「ウェブアプリケー

1 つ目は「その攻撃によってどういった影響が出るション版」は大きく分けて 4 つ,「サーバ・デスクトッのかという説明がない」ということである.WebGoat

プアプリケーション版」は大きく分けて 7 つしかテーではこの攻撃を受けることでどういった影響があるのマ数がない. その分一つのテーマを複数回に分け, 詳かという説明がない. 攻撃を受けることで受ける被害しく学べるような作りになっている. さらに WebGoatについても正確に知っておくことで, その攻撃の危険よりも攻撃についての説明が詳しい. また WebGoat

性や実際に攻撃を受けたかどうかを判断できるようにはない点として,AppGoat では WebGoat と違い,になると考えられるため, どういった影響を及ぼすか攻撃によってどういった影響を及ぼすのかまで解説しまで, 学習させるべきであると考える.ている.(図 6)

2 つ目は「WebGoat のソースコードを見ることは

AppGoat の学習の流れとしては, まず学習内容のできるが, どこに脆弱性があるかまで言及されていな

概要説明, 攻撃の仕組みについて説明した後, 実際にい」ことである.WebGoat はソースコードを見れるよ

脆弱性を含んだ環境に攻撃を仕掛けるようになっていうにはなっているが, セキュリティに関して知識が不る. 攻撃を仕掛けた後はその攻撃による影響とその攻足している人から見ると, どこのコードに脆弱性があ撃の対策方法を説明している. これが大まかな流れとるかわかない. ここを改善することで, 具体的にどうなっている. これに加え,「サーバ・デスクトップアプ対策したらよいか, プログラミングする際にどこに注リケーション版」では修正例を確認したり, 実際に脆図6

攻撃による影響の解説

図7

対策方法の解説

図8

提案環境の概要図

弱性を修正することもできる.
このような学習ツールである AppGoat に不足している点は 2 つある.

1 つ目は「WebGoat に比べ学習できる内容が少ない」ことである. WebGoat が大きく分けて 19 テーマあるのに対し,AppGoat のウェブアプリケーション版は大きく分けて 4 テーマしかない. 多様な Web ア
プリケーションへの脅威へ対応するためには, 幅広い知識が必要であると考えられる. そうなるとテーマ数4 つは少ないと考えられる.
2 つ目は「ウェブアプリケーション版では具体的な対策方法が書かれていない」ことである.AppGoat

うなツールを提案する. 具体的には脆弱性がある部分

では WebGoat と違い, 脆弱性に対してどのように対のソースコードを提示し, その部分をどう変更すれば策すべきかを解説している. 例えば XSS の対策とし脆弱性がなくなるかまでを学習させる. これにより実て,AppGoat ではウェブページを出力する際に要素を践的に学び, 学んだことをどう生かすかまでを学習すエスケープ処理することで対策できるとしている.(図ることができる.

7) しかしそれは, その攻撃に対する対策であり, 具体

本研究の背景として, 情報システムに対する攻撃の的にソースをどのように変更すべきかまでは解説し手口が高度化してきていると述べた. 既存の防御方法ていない. 本研究では具体的にどのように修正すべきでは防ぎきれなくなってきており, システム開発者はかまでを学習者に解説する.

セキュリティに関して常に新しい情報を知っておくことで, それに対応する必要がある. 本研究で提案する3 提案

学習環境でも, 変化していく脅威に応じて学べる攻撃本研究ではシステムセキュリティの知識が不足しての種類も追加していけるような仕組みを考える. 攻撃いるシステム開発者に対して, セキュアなシステムをの種類を追加するには, その攻撃を学ぶための情報が開発できるようになるような, 実践的な学習環境の提必要になる. 本研究では「攻撃の概要」,「攻撃の仕組案を行う. 学習環境の概要図は図 8 の通りである. こみ」,「脆弱性を含むソースコード」,「攻撃の対策」,の学習環境において, 仕組みを学ぶだけでなく,「どの「攻撃による影響」について学べる学習環境を提案すように脆弱性をなくすか」までを学習者に学ばせるよる. そのため, 新しく攻撃を追加するにはその 5 つの情報さえあれば, 簡単に攻撃を追加することができる.

3. 1 研究スコープ
本研究で提案する学習環境は, システムセキュリ
ティに対しての知識が不十分なシステム開発者を対象としている. 具体的には情報システムを開発する際に, そのシステムにどういった脅威があるのかを知らない, または知っていてもどのように対策すればよいかわからないといった人を考えている. 対象者としては学生や, 経験の浅い SE などが想定される.

図 10

脆弱性修正前画面

また本研究では Web アプリケーションの脅威や脆弱性を学習の対象とする. 学習内容は Web アプリケー

入力フォームに「<script>alert(’XSS’);</script>」

ション上で考えられる脅威について, その仕組みを学と入力するとスクリプトが実行されてしまう. セキュび, 実際にどういった対策を取るべきかを含めて学習リティ知識が不足している学習者はこのソースコードできるようにする.

を見てもどこに脆弱性があるかがわからない, もしくはわかったとしてもどう修正したらよいかがわから

3. 2 既存ツールの分析ないと考えられる. 本研究では実際に学習者にこうし

本 研 究 で 提 案 す る 学 習 ツ ー ル と し て,Web-た脆弱性を含むソースコードを提示し, 実際にどう修Goat,AppGoat のような既存のツールがある. そこで正すべきかを解説する. 解説した後, 実際に修正した

上で挙げた 2 つの学習ツールを分析し, 足りない部分コードを提示することで, 攻撃に対する具体的な対策を考えてみる.

を学んでもらう. 例の場合だと図 10 のようになる.

2 つのツールは共に, 攻撃についての説明を読み,ヒントを頼りながら攻撃の仕組みを理解し, その上で, 脆弱性のある環境への攻撃を行っている. このプロセスを経ることで, システムセキュリティについて学ぶことができるとしている. この点についてはただ仕組みを学ぶだけよりも実践的であり, 効果的であると考えられるため本研究でも取り入れるべき点である.2 つのツールに足りない部分として,「どのように脆弱性をなくすか」という点が挙げられる.WebGoat
は WebGoat 自体のソースコードを見ることができるが, 実際にどの部分に脆弱性があるのかがわからな

図 11

脆弱性修正後画面

い.AppGoat はどうしたらその攻撃を阻止できるかを解説してはいるが, ソースコードレベルでの解説はしていない. 以下に各学習環境を比較した図を載せる.

4 まとめと今後の考察
本研究では Web アプリケーションに対する攻撃を

3. 3 脆弱性修正の流れ「攻撃者目線」から学べる実践的学習環境を提案した.

脆弱性修正の簡単な流れを示す. 単純な例として先また学習者は脆弱性の含んだ環境に攻撃するだけでほども挙げた XSS の脆弱性の修正を考えてみる. 図 9はなく, その脆弱性を含むソースコードを見て, 脆弱は脆弱性を含んだ PHP のソースコードである. この性を修正するところまでを学習範囲とすることで, よ図9

各学習環境の比較り実践的な学習環境の提案をした. 今後の課題としてはこの学習環境で具体的に何の脅威について学ぶかを決定することである. 多数ある脅威からどれを学習対象とするかを取捨選択する必要がある. また提案した学習環境を評価する方法について考える必要がある. 脆弱性を含んだ Web アプリケーションを用意し,学習環境で学習した人, していない人, 既存ツールで学習した人に分けてどれくらい脆弱性を除去できるかを比較し, 評価しようと考えている.

参 考 文 献[ 1 ] IPA(独立行政法人 情報処理推進機構),(2013),「コンピュータウイルス・不正アクセス届出状況および相談受付状況」,http://www.ipa.go.jp/security/txt/2013/documents/summary12all.pdf,2013 年 7 月 11 日アクセス[ 2 ] OWASP(Open Web Application Security Project),「Category:OWASP WebGoat Project」, https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project,2013 年 7 月 11 日アクセス[ 3 ] IPA(独立行政法人 情報処理推進機構),(2012),「脆弱性体験学習ツール AppGoat」,http://www.ipa.go.jp/
security/vuln/appgoat/index.html,2013 年 7 月 11日アクセス