SlideShare a Scribd company logo
1 of 177
Download to read offline
CODE BLUE 2016
Presented by Isao Takaesu
機械学習でWebアプリケーション
の脆弱性を見つける方法
About the speaker
• 職業 : Webセキュリティエンジニア
• 所属 : 三井物産セキュアディレクション
• 趣味 : 脆弱性スキャナ作り、機械学習
• ブログ: http://www.mbsd.jp/blog/
• Black Hat Asia 2016 Arsenal
• AISECjpを主催
高江洲 勲
MBSD
タカエス イサオ
CODE BLUE 2016
Agenda
1. 研究の背景
2. 研究の目的
3. SAIVSの概要
4. 実現手法
5. 検証結果
6. デモンストレーション
7. 将来の展望
MBSD CODE BLUE 2016
研究の背景
MBSD CODE BLUE 2016
セキュリティ技術者の圧倒的な不足
研究の背景
MBSD CODE BLUE 2016
その数、約24万人 (IPA調べ)
研究の背景
MBSD CODE BLUE 2016
人間のみでは限界では?
研究の目的
MBSD CODE BLUE 2016
情報セキュリティの完全自動化
研究の目的
MBSD CODE BLUE 2016
先ずは、
Webアプリケーション診断
Webアプリケーション診断とは?
MBSD CODE BLUE 2016
Webアプリの脆弱性を検出
Webアプリケーション診断とは?
MBSD
診断員
Web Server
Web Apps
診断ベンダ 顧客
疑似攻撃
レスポンスの分析
CODE BLUE 2016
 Webアプリをクローリングしながら疑似攻撃
 レスポンスを分析して脆弱性を判定
Webアプリケーション診断とは?
MBSD
診断員
Web Server
Web Apps
診断ベンダ 顧客
疑似攻撃
SQLi?
XSS?
レスポンスの分析
CODE BLUE 2016
 Webアプリをクローリングしながら疑似攻撃
 レスポンスを分析して脆弱性を判定
Webアプリケーション診断の課題
MBSD CODE BLUE 2016
診断員の職人技に大きく依存
最終目標
全自動Webアプリ診断の実現
MBSD
人工知能
Web Server
Web Apps
診断ベンダ 顧客
疑似攻撃
レスポンスの分析
CODE BLUE 2016
SQLi?
XSS?
診断AI「SAIVS」
MBSD CODE BLUE 2016
自律的にWebアプリ診断を行うAI
SAIVS
Spider Artificial Intelligence Vulnerability Scanner
SAIVSの能力
MBSD
 Webアプリのクローリング
 脆弱性の検出
CODE BLUE 2016
SAIVSの能力
MBSD
 Webアプリのクローリング
 脆弱性の検出
CODE BLUE 2016
クローリングの重要性
MBSD CODE BLUE 2016
Top Login
Register Confirm
Contact Us
My Page
Complete
Send
message
脆弱性
クローリングの重要性
MBSD CODE BLUE 2016
Top Login
Register Confirm
Contact Us
My Page
Complete
正しくログインすることが必要
Send
message
クローリングの重要性
MBSD CODE BLUE 2016
Top Login
Register Confirm
Contact Us
My Page
Complete
正しく会員登録することが必要
Send
message
クローリングの重要性
MBSD CODE BLUE 2016
Top Login
Register Confirm
Contact Us
My Page
Complete
網羅的に正しくページ遷移することが重要
Send
message
MBSD
Webアプリのクローリングって難しい
なぜ?
CODE BLUE 2016
このページは何?
MBSD
人間:キーワードを基に容易にページ種別を認識
機械:困難(ログイン?会員登録?)
CODE BLUE 2016
何が起きたのか?
MBSD
人間:メッセ―ジ内容から遷移失敗を認識
機械:メッセージの解釈は困難
CODE BLUE 2016
フォームに入力する文字は?
MBSD
遷移
人間:入力フォームに正しい文字列を入力
機械:フォームの意味解釈は困難
???
???
???
???
???
CODE BLUE 2016
MBSD
クローリングには複雑な思考が必要
CODE BLUE 2016
クローリングの3要件
MBSD
 ページ種別の認識
 遷移成否の認識
 最適文字の入力
CODE BLUE 2016
MBSD CODE BLUE 2016
どのように実現するか?
本研究のアプローチ
MBSD CODE BLUE 2016
人間の脳をリバースエンジニアリング
本研究のアプローチ
MBSD CODE BLUE 2016
各思考パターンを
機械学習アルゴリズムで実現
クローリングの3要件
MBSD
 ページ種別の認識
 遷移成否の認識
 最適文字の入力
CODE BLUE 2016
人間によるページ種別認識
MBSD CODE BLUE 2016
人間によるページ種別認識
MBSD CODE BLUE 2016
ページ種別を特徴付けるキーワードで認識
機械によるページ種別認識
MBSD CODE BLUE 2016
ナイーブベイズを使う
ナイーブベイズ?
テキスト分類に使用される機械学習アルゴリズム
カテゴリテーブルと確率理論を使用
MBSD
利用例)
 スパムメールフィルタ
 ブログ記事のカテゴリ自動分類
 WAFの攻撃検知率向上
CODE BLUE 2016
MBSD
SPAM:0.672 ← こっちを選択
HAM :0.03
期間 SPAM:10%
HAM :30%
カテゴリ
限定
ココ
クリック
http://
wana.jp
SPAM:40%
HAM :10%
SPAM:30%
HAM :40%
SPAM:70%
HAM :50%
SPAM:80%
HAM :5%
メール本文からキーワードを抽出
SPAM・HAMの確率を求め、確率が高いカテゴリを選択
スパムメールフィルタへの利用例
CODE BLUE 2016
MBSD CODE BLUE 2016
ナイーブベイズによるページ種別認識
ナイーブベイズによるページ種別認識
MBSD
<h1>Sign in</h1>
<form action="/cyclone/sessions" method="post">
<label for="email">Email</label>
<input id="email" name="email" type="text" />
<label for="password">Password</label>
<input id="password" name="password" type="password" />
</form>
ページを特徴付けるキーワードを抽出
ストップワードは除外
CODE BLUE 2016
ページ種別認識のカテゴリテーブル
MBSD
カテゴリ キーワード
ログイン Email, User ID, Password, Sign in …
会員登録 Email, Password, Confirm, Sign up …
検索 Word, Text, String, Sort, Search …
商品購入 Credit, Account, Expire, Purchase …
パスワード変更 Password, Old Password, Change …
CODE BLUE 2016
抽出したキーワードが多く含まれるカテゴリを選択
keywords : Sign in, Email, Password
ページ種別認識のカテゴリテーブル
MBSD
カテゴリ キーワード
ログイン Email, User ID, Password, Sign in …
会員登録 Email, Password, Confirm, Sign up …
検索 Word, Text, String, Sort, Search …
商品購入 Credit, Account, Expire, Purchase …
パスワード変更 Password, Old Password, Change …
CODE BLUE 2016
「ログイン」に多く含まれる
⇒カテゴリ「ログイン」の確率が最も高い
MBSD CODE BLUE 2016
ナイーブベイズによるページ種別認識
「ログイン」と認識
クローリングの3要件
MBSD
 ページ種別の認識 (✔)
 遷移成否の認識
 最適文字の入力
CODE BLUE 2016
MBSD CODE BLUE 2016
人間によるページ遷移成否の認識
MBSD CODE BLUE 2016
人間によるページ遷移成否の認識
遷移失敗を特徴付けるキーワードで判断
MBSD CODE BLUE 2016
ナイーブベイズを使う
機械による遷移成否認識
MBSD CODE BLUE 2016
機械による遷移成否認識
MBSD
<h2>2 errors prohibited this user from being saved </h2>
<p>There were problems with these fields:</p>
<ul>
<li> Password doesn't match confirmation </li>
<li> Email is invalid </li>
["Password doesn't match confirmation","Email is invalid
"]
</ul>
CODE BLUE 2016
遷移成否を特徴付けるキーワードを抽出
ストップワードは除外
機械による遷移成否認識
遷移成否認識のカテゴリテーブル
MBSD
カテゴリ キーワード
遷移成功
good, valid, success, normal, fine, clean, nice,
can, match, confirmation, ok, finish, thank …
遷移失敗
bad, invalid, failure, error, problem, unmatch,
doesn’t match, can’t, too, wrong, ng, blank …
CODE BLUE 2016
抽出したキーワードが多く含まれるカテゴリを選択
keywords : errors, problem, doesn’t match, invalid
遷移成否認識のカテゴリテーブル
MBSD
カテゴリ キーワード
遷移成功
good, valid, success, normal, fine, clean, nice,
can, match, confirmation, ok, finish, thank …
遷移失敗
bad, invalid, failure, error, problem, wrong,
doesn’t match, can’t, too, ng, blank …
CODE BLUE 2016
「遷移失敗」に多く含まれる
⇒カテゴリ「遷移失敗」の確率が最も高い
MBSD CODE BLUE 2016
機械による遷移成否認識
「遷移失敗」と認識
クローリングの3要件
MBSD
 ページ種別の認識 (✔)
 遷移成否の認識 (✔)
 最適文字の入力
CODE BLUE 2016
MBSD
人間による最適文字の入力
CODE BLUE 2016
フォームの意味を解釈し、正しい文字を入力
遷移
Isao Takaesu
isao123@mbsd.jp
mbsd1234
mbsd1234
機械による最適文字の入力
MBSD CODE BLUE 2016
多層パーセプトロン(MLP)、Q学習を使う
多層パーセプトロン(MLP)?
画像認識などに使用される機械学習アルゴリズム
生物の神経回路構造と機能を模したモデル
MBSD
利用例)
 画像認識
 手書き数字認識
CODE BLUE 2016
・
・
・
・
・
・
・
・
・
Data Label
0
1
2
学習データ
手書き数字認識への利用例
CODE BLUE 2016MBSD
・
・
・
・
・
・
・
・
・
X₁
X₂
X784
X0
Y₁
Y₂
Y300
Y0
Z₁
Z₂
Z10
MLP
学習
入力データに応じた”答え”を出力することが可能
学習済みMLP
014679 425970401967
手書き数字認識への利用例
CODE BLUE 2016MBSD
Q学習?
エージェントの最良行動を学習する機械学習アルゴリズム
行動の良し悪しをQ値で評価
MBSD
利用例)
 ロボットの歩行動作習得
 ビデオゲームのプレイ
 経路探索
CODE BLUE 2016
ロボット歩行動作習得への利用例
MBSD CODE BLUE 2016
エージェント
環境
a1 前進
a2 左折
a3 右折
a4 後退
行動
状態 s
・・・
次の状態 s’
方策 ( a | s ) 遷移確率 ( s’ | s, a )
目の前に穴が…
報酬 r = R( s, a, s’ )
タスク:障害物を避けてゴールすること
報酬の合計が最大となる方策を学習
Q( s, a )値の更新
最適な文字入力を実現するモデル
MBSD
遷移試行を繰り返しながら最適な入力文字列を学習
CODE BLUE 2016
・
・
・
・
・
・
遷移元ページ
MLP
入力値
Q学習
遷移先ページ
p1=abc, xyz・・・
p1=123, 12a・・・
p1=abc@xxx・・・
状態観測
評価
重み更新
最適な文字入力を実現するモデル
MBSD
遷移試行を繰り返しながら最適な入力文字列を学習
CODE BLUE 2016
・
・
・
・
・
・
遷移元ページ
MLP
入力値
Q学習
遷移先ページ
p1=abc, xyz・・・
p1=123, 12a・・・
p1=abc@xxx・・・
状態観測
評価
重み更新
入力値のパターン
MBSD
パターン 入力値
英字のみ abc, abcdef, aBc, aBcdEf, ABCDEF …
数字のみ 123, 12345, 4111111111111111 …
英字・数字 abc123, 123abc, aBc123, 1a2b3c …
英字・記号 abc!, abc!#$, abcdef!, abcdef!#$ …
数字・記号 123!, 123!#$, 12345!, !#$12345 …
英字・数字・記号 abc123!, 123abc!, abc!123, !#$%&a1 …
メアド風 abc@hoge.com, abc123@hoge.com …
CODE BLUE 2016
入力値の組み合わせをパラメータに設定
対象:INPUT TYPE = text, password
学習の流れ
MBSD
遷移元/遷移先ページをMLPに入力
CODE BLUE 2016
・
・
・
・
・
・
遷移元ページ
MLP
入力値
Q学習
遷移先ページ
p1=abc, xyz・・・
p1=123, 12a・・・
p1=abc@xxx・・・
状態観測
評価
重み更新
学習の流れ
MBSD
(入力に対する)何れかの入力値パターンを選択
CODE BLUE 2016
・
・
・
・
・
・
遷移元ページ
MLP
入力値
Q学習
遷移先ページ
p1=abc, xyz・・・
p1=123, 12a・・・
p1=abc@xxx・・・
状態観測
評価
重み更新
学習の流れ
MBSD
MLPが選択した入力値パターンで遷移を試行
CODE BLUE 2016
・
・
・
・
・
・
遷移元ページ
MLP
入力値
Q学習
遷移先ページ
p1=abc, xyz・・・
p1=123, 12a・・・
p1=abc@xxx・・・
状態観測
評価
重み更新
学習の流れ
MBSD
遷移試行の結果を観測
CODE BLUE 2016
・
・
・
・
・
・
遷移元ページ
MLP
入力値
Q学習
遷移先ページ
p1=abc, xyz・・・
p1=123, 12a・・・
p1=abc@xxx・・・
状態観測
評価
重み更新
学習の流れ
MBSD
遷移結果に応じた報酬の付与(Q値の更新)
CODE BLUE 2016
・
・
・
・
・
・
遷移元ページ
MLP
入力値
Q学習
遷移先ページ
p1=abc, xyz・・・
p1=123, 12a・・・
p1=abc@xxx・・・
状態観測
評価
重み更新
学習の流れ
MBSD
MLPの重みを更新(バックプロパゲーション)
CODE BLUE 2016
・
・
・
・
・
・
遷移元ページ
MLP
入力値
Q学習
遷移先ページ
p1=abc, xyz・・・
p1=123, 12a・・・
p1=abc@xxx・・・
状態観測
評価
重み更新
学習の流れ
MBSD
300回程度の試行で学習可能
CODE BLUE 2016
・
・
・
・
・
・
遷移元ページ
MLP
入力値
Q学習
遷移先ページ
p1=abc, xyz・・・
p1=123, 12a・・・
p1=abc@xxx・・・
状態観測
評価
重み更新
問題
MBSD CODE BLUE 2016
300回の試行 ⇒ 効率が悪い
MBSD CODE BLUE 2016
本番前に訓練を行う
解決方法
遷移の訓練に使用したWebアプリ(一例)
MBSD
OWASP Broken Web Apps
CODE BLUE 2016
SAIVSの訓練
MBSD CODE BLUE 2016
BodgeIt peruggia WackoPicko Yazd
SAIVS
遷移試行&学習
⇒ 各300回
各入力フォームに対する最適文字列の獲得
・・・
Web Apps
訓練で獲得した最適文字列(一例)
MBSD
入力フォーム 最適文字列
ID abc, abcdef, aBc, aBcdEf, ABCDEF …
Password abc123!, 123abc!, abc!123, !#$%&a1 …
FirstName abc, abcdef, aBc, aBcdEf, ABCDEF …
LastName abc, abcdef, aBc, aBcdEf, ABCDEF …
Email address abc@hoge.com, abc123@hoge.com …
Username abc, abcdef, aBc, aBcdEf, ABCDEF …
Signature abc, abcdef, aBc, aBcdEf, ABCDEF …
CODE BLUE 2016
問題:添え字の不一致
MBSD CODE BLUE 2016
訓練時 診断時
不一致!!
MBSD CODE BLUE 2016
添え字の類似度を求める
解決方法
類似度の算出
MBSD CODE BLUE 2016
word2vecを使う
word2vec?
単語同士の類似度を求める自然言語処理の手法
単語をベクトルで表現
MBSD CODE BLUE 2016
利用例)
 単語の類似度
Input : e-mail
 単語の加算・減算
word cos distance
email 0.956302
mail 0.927386
reply 0.920610
formula answer
Iraq - Violence Jordan
Human - Animal Ethics
Japan – Tokyo + France Paris
類似度計算への利用例
MBSD CODE BLUE 2016
注目単語周辺の単語を基に類似度を計算
学習データ)
interpretation further. However, if anyone wishes to discuss this, I‘m certainly willing
(either offline - e-mail - or Stephen In article bevans@carina.unm.edu (Mathemagician)
writes: Just what do gay people do that straight・・・
carries archives of old alt.atheism.moderated articles and assorted other files. For more
information, send mail to archive-server@mantis.co.uk saying help send atheism/index
and it will mail back a reply. mathew An・・・
send mail to archive-server@mantis.co.uk saying help send atheism/index and it will
mail back a reply. mathew An Introduction to Atheism by Mathew. This article attempts
to provide a general introduction・・・
「e-mail」「mail」「reply」の類似度は高い
word2vecの学習データ
MBSD CODE BLUE 2016
The 20 Newsgroups data set.
約2万のニュースグループドキュメント集
ニュースグループ例)
 コンピュータ(Graphics, MS-Windows, Hardware)
 サイエンス(Cryptography, Electronics, Space)
 趣味(Motorcycles, Baseball, Hockey)
SAIVSの訓練
MBSD CODE BLUE 2016
Windows Crypt Hardware Space
SAIVS
The 20 Newsgroups data set
類似度の学習
単語同士の類似度の習得
・・・
word2vec
MBSD
候補 類似度
email 0.956302
mail 0.927386
E-mail 0.900249
address 0.893337
reply 0.865438
contact 0.846801
message 0.792930
chat 0.754903
newsgroup 0.747636
CODE BLUE 2016
候補 類似度
names 0.962508
username 0.939661
nickname 0.933694
naming 0.898254
surname 0.863966
initials 0.861093
firstname 0.849641
lastname 0.847604
title 0.782467
候補 類似度
homepage 0.794415
blog 0.752945
site 0.708534
webpage 0.701838
portal 0.701374
forum 0.692067
com 0.641086
archive 0.537914
org 0.531096
訓練で獲得した類似単語
上位10個の候補単語を抽出
Target :websiteTarget :nameTarget : e-mail
MBSD
候補 類似度
email 0.956302
mail 0.927386
E-mail 0.900249
address 0.893337
reply 0.865438
contact 0.846801
message 0.792930
chat 0.754903
newsgroup 0.747636
CODE BLUE 2016
候補 類似度
names 0.962508
username 0.939661
nickname 0.933694
naming 0.898254
surname 0.863966
initials 0.861093
firstname 0.849641
lastname 0.847604
title 0.782467
候補 類似度
homepage 0.794415
blog 0.752945
site 0.708534
webpage 0.701838
portal 0.701374
forum 0.692067
com 0.641086
archive 0.537914
org 0.531096
訓練で獲得した類似単語
訓練時の添え字と一致する候補単語を選択
Target :websiteTarget :nameTarget : e-mail
MBSD
候補 類似度
email 0.956302
mail 0.927386
E-mail 0.900249
address 0.893337
reply 0.865438
contact 0.846801
message 0.792930
chat 0.754903
newsgroup 0.747636
CODE BLUE 2016
候補 類似度
names 0.962508
username 0.939661
nickname 0.933694
naming 0.898254
surname 0.863966
initials 0.861093
firstname 0.849641
lastname 0.847604
title 0.782467
候補 類似度
homepage 0.794415
blog 0.752945
site 0.708534
webpage 0.701838
portal 0.701374
forum 0.692067
com 0.641086
archive 0.537914
org 0.531096
訓練で獲得した類似単語
⇒ abc@hoge.com ⇒ aBcdEf ⇒ http://hoge.com
Target :websiteTarget :nameTarget : e-mail
クローリングの3要件
MBSD
 ページ種別の認識 (✔)
 遷移成否の認識 (✔)
 最適文字の入力 (✔)
CODE BLUE 2016
クローリングのデモ
MBSD
Target:OWASP Broken Web Apps Cyclone
CODE BLUE 2016
クローリングのデモ
MBSD CODE BLUE 2016
Top Login
Register Confirm
User Search
Complete
1.Registerでアカウント作成
2.ログイン
3.ユーザ検索
脆弱性
クローリングのデモ
MBSD CODE BLUE 2016
Top Login
Register Confirm
User Search
Complete
1.Registerでアカウント作成
2.ログイン
3.ユーザ検索
クローリングのデモ
MBSD CODE BLUE 2016
Top Login
Register Confirm
User Search
Complete
1.Registerでアカウント作成
2.ログイン
3.ユーザ検索
クローリングのデモ
MBSD CODE BLUE 2016
Top Login
Register Confirm
User Search
Complete
1.Registerでアカウント作成
2.ログイン
3.ユーザ検索
クローリングのデモ
MBSD CODE BLUE 2016
Top Login
Register Confirm
User Search
Complete
1.Registerでアカウント作成
2.ログイン
3.ユーザ検索
MBSD CODE BLUE 2016
https://www.youtube.com/watch?v=aXw3vgXbl1U
クローリングのデモ動画
SAIVSの能力
MBSD
 Webアプリのクローリング(✔)
 脆弱性の検出
CODE BLUE 2016
本研究の目的
MBSD CODE BLUE 2016
少ない手数で脆弱性を検出
MBSD CODE BLUE 2016
Webアプリの脆弱性も色々あるが…
本研究の対象
MBSD CODE BLUE 2016
Reflected Cross-Site Scripting
(RXSS)
RXSSの例①:超脆弱なアプリ
MBSD
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>Case 3 - RXSS</title>
</head>
<body>
<input type="text" value="testData">
</body>
</html>
http://xxx/case3/?input=testData
入力値がINPUTタグのVALUE属性内にエコーバック
CODE BLUE 2016
RXSSの例①: 攻撃された様子
MBSD
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>Case 3 - RXSS</title>
</head>
<body>
<input type="text"
value=""/><script>alert('XSS');</script>">
</body>
</html>
http://xxx/case3/?input="/><script>alert(‘XSS');</script>
HTML内へのスクリプト埋め込み
CODE BLUE 2016
RXSSの例②:ちょっとセキュアなアプリ
MBSD
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>Case 4 - RXSS</title>
</head>
<body>
<input type="text" value=""/> alert('XSS');">
</body>
</html>
SCRIPTタグのサニタイズ
http://xxx/case4/?input="/><script>alert(‘XSS');</script>
CODE BLUE 2016
RXSSの例②:攻撃された様子
MBSD
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>Case 4 - RXSS</title>
</head>
<body>
<input type="text" value=""onmouseout=alert('XSS')"">
</body>
</html>
サニタイズを回避してスクリプト埋め込み
http://xxx/case4/?input=“onmouseout=alert(‘XSS')”
CODE BLUE 2016
RXSS検出の3要件
MBSD
 HTML構文の理解
 JavaScript構文の理解
 サニタイズの回避
CODE BLUE 2016
MBSD CODE BLUE 2016
どのように実現するか?
本研究のアプローチ
MBSD CODE BLUE 2016
人間の脳をリバースエンジニアリング
本研究のアプローチ
MBSD CODE BLUE 2016
各思考パターンを
機械学習アルゴリズムで実現
RXSS検出の3要件
MBSD
 HTML構文の理解
 JavaScript構文の理解
 サニタイズの回避
CODE BLUE 2016
MBSD
機械によるHTML/JavaScriptの理解
LSTMを使う
CODE BLUE 2016
LSTM(Long-Short Term Memory)?
時系列データの学習が可能な機械学習アルゴリズム
短期的・長期的なデータ間の依存関係を学習可能
MBSD
利用例)
 機械翻訳
 文書生成(小説、歌詞、ソースコード)
 音生成(音楽、声)
CODE BLUE 2016
LSTM(Long-Short Term Memory)?
時系列データの学習が可能な機械学習アルゴリズム
短期的・長期的なデータ間の依存関係を学習可能
MBSD
利用例)
 機械翻訳
 文書生成(小説、歌詞、ソースコード)
 音生成(音楽、声)
CODE BLUE 2016
文書生成への利用例
MBSD CODE BLUE 2016
ソースコードの生成(from Andrej Karpathy blog)
static int indicate_policy(void)
{
int error;
if (fd == MARN_EPT) {
if (ss->segment < mem_total)
unblock_set_blocked();
else
ret = 1;
goto bail;
}
segaddr = in_SB(in.addr);
selector = seg / 16;
・・・
学習データ
static void settings(struct *tty)
{
if (tty == tty)
disable_single_st_p(dev);
pci_disable_spool(port);
return 0;
}
static void command(struct seq_file *m)
{
int column = 32 << (cmd[2] & 0x80);
if (state)
・・・
LSTMの生成コード
起点(シード)を基に次々とコードを生成
なぜLSTMなのか?
MBSD
<!doctype html><html><head><title>Reflected XSS in
textarea (textarea1)</title></head><body>
<H2>Textarea injection test</H2>
<FORM>
<textarea name="in" rows="5" cols="60">xxx</textarea>
・・・
http://xxx/textarea1?in=xxx
入力値がTEXTAREA内にエコーバック
CODE BLUE 2016
なぜLSTMなのか?
MBSD
<!doctype html><html><head><title>Reflected XSS in
textarea (textarea1)</title></head><body>
<H2>Textarea injection test</H2>
<FORM>
<textarea name="in" rows="5" cols="60">
<script>alert('XSS');</script></textarea>
・・・
http://xxx/textarea1?in=<script>alert(‘XSS’);</script>
スクリプトは動作しない
⇒単純なスクリプト挿入は不可
CODE BLUE 2016
MBSD
<!doctype html><html><head><title>Reflected XSS in
textarea (textarea1)</title></head><body>
<H2>Textarea injection test</H2>
<FORM>
<textarea name="in" rows="5" cols="60">xxx</textarea>
・・・
http://xxx/textarea1?in=xxx
「TEXTAREAタグを閉じた後にスクリプト挿入?」
CODE BLUE 2016
なぜLSTMなのか?
MBSD
<!doctype html><html><head><title>Reflected XSS in
textarea (textarea1)</title></head><body>
<H2>Textarea injection test</H2>
<FORM>
<textarea name="in" rows="5"
cols="60"></textarea><script>alert('XSS');</script></t
extarea>
・・・
http://xxx/textarea1?in=</textarea><script>alert(‘XSS’);</script>
CODE BLUE 2016
なぜLSTMなのか?
文脈を理解してスクリプトを挿入
⇒ スクリプトが動く
MBSD CODE BLUE 2016
どのようにしてLSTMを学習させるか?
LSTMの学習データ(HTML)
MBSD
<abbr class="" data-utime="" title=""></abbr>
<abbr class='' title=''></abbr>
<abbr data-utime='' title=''></abbr>
・・・
<input name="" type="" value=""/>
<input alt="" id="" onclick="" src="" type=""/>
<input alt='' id="" src='' type=''/>
<input alt='' name='' src='' type=''/>
・・・
<video autoplay="" loop="" muted=""></video>
<video class="" height="" id="" width=""></video>
<video src='' tabindex=''></video>
<video src=''></video>
2万ページ分のHTML構文 (約12,000種類)
CODE BLUE 2016
MBSD
_satellite.pageBottom();']
(function(window) {
var _gaq = _gaq || [];
var methods = ['log', 'dir', 'trace'];
if (typeof window.console === 'undefined') {
window.console = {};
}
for (var i in methods) {
if (!(methods[i] in window.console)) {
window.console[methods[i]] = function() {};
}
}
}(window));
CODE BLUE 2016
LSTMの学習データ(JavaScript)
1万ページ分のJavaScript構文
学習済みLSTMが生成した構文(一例)
MBSD
シード 生成構文
<textarea cols="60">xxx </textarea>
<!– mbsdtest xxx -->
<input type="" value=“xxx ">
var hoge = ['log', ‘xxx red’];¥r¥n
/* mbsdtest xxx */
function(){ xxx }¥r¥n
CODE BLUE 2016
シードに対応した構文生成が可能
RXSS検出の3要件
MBSD
 HTML構文の理解(✔)
 JavaScript構文の理解(✔)
 サニタイズの回避
CODE BLUE 2016
機械によるサニタイズの回避
MBSD CODE BLUE 2016
多層パーセプトロン(MLP)、Q学習を使う
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
サニタイズ回避を実現するモデル
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
検査試行を繰り返しながらサニタイズ回避パターンを学習
CODE BLUE 2016
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
サニタイズ回避を実現するモデル
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
CODE BLUE 2016
出力箇所のパターン
MBSD
出力箇所 例
属性値 : 「”」 <~value="xxx">
属性値 : 「'」 <~value='xxx'>
属性値 : noquote <~value=xxx>
JavaScript 内 <script>xxx</script>
HTML タグの外側 <~>xxx</~>
CODE BLUE 2016
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
サニタイズ回避を実現するモデル
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
CODE BLUE 2016
サニタイズのパターン
MBSD
サニタイズ 例
「“」の実体参照への変換・排除 「”」⇒「&quot;」
「‘」の実体参照への変換・排除 「’」⇒「&apos;」
「<」の実体参照への変換・排除 「<」⇒「&lt;」
「>」の実体参照への変換・排除 「>」⇒「&gt;」
「alert();」の排除 「alert();」⇒「」
CODE BLUE 2016
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
サニタイズ回避を実現するモデル
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
CODE BLUE 2016
検査パターン(一例)
MBSD
出力箇所 検査パターン
「”」で囲まれた属性値
「'」で囲まれた属性値
noquoteの属性値
HTML タグの外側
“event handler
"><sCriPt>xxx
"><img src=xxx
‘event handler
‘><sCriPt>xxx
<svg/onload=alert()>
<sCriPt>xxx</sCriPt>
JavaScript 内
";alert();//
[CR][LF]alert();
¥";alert();//
CODE BLUE 2016
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
学習の流れ
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
出力箇所/サニタイズパターンをMLPに入力
CODE BLUE 2016
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
学習の流れ
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
(入力に対する)何れかの検査パターンを選択
CODE BLUE 2016
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
学習の流れ
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
MLPが選択した検査パターンで検査を試行
CODE BLUE 2016
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
学習の流れ
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
検査結果を観測
CODE BLUE 2016
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
学習の流れ
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
検査結果に応じた報酬の付与(Q値の更新)
CODE BLUE 2016
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
学習の流れ
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
MLPの重みを更新(バックプロパゲーション)
CODE BLUE 2016
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
検査パターン
Event
handler
・
・
・
Q学習
状態観測
学習の流れ
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
100回程度の試行で最適な検査パターンを学習可能
CODE BLUE 2016
問題
MBSD CODE BLUE 2016
100回の試行 ⇒ 効率が悪い
MBSD CODE BLUE 2016
本番前に訓練を行う
訓練に使用したWebアプリ(一例)
MBSD
WAVSEP
CODE BLUE 2016
ReflectedXSS GET Input Vector
Case06 出力箇所 :IMG タグの SRC 属性値
サニタイズ:< , > ⇒ &lt; , &gt;
検査例 :"onmouseover=alert(3122);"
Case10 出力箇所 :SCRIPT タグの onClick 値
サニタイズ:“ , < , > ⇒ &quot; , &lt; , &gt;
検査例 :';alert(3122);//
Case27 出力箇所 :JavaScript の単行コメント内
サニタイズ:コメントアウト
検査例 :[CR][LF]alert(3122);//
SAIVSの訓練
MBSD CODE BLUE 2016
Case06 Case08 Case10 Case27
SAIVS
WAVSEP
検査試行&学習
⇒各100回
各サニタイズパターンを回避する検査文字列の獲得
・・・
RXSS検出の3要件
MBSD
 HTML構文の理解(✔)
 JavaScript構文の理解(✔)
 サニタイズの回避(✔)
CODE BLUE 2016
MBSD
SAIVSの検査フロー
 第1次検査
 第2次検査
CODE BLUE 2016
出力箇所を調べるために正常リクエストを送信
MBSD
Web Server
Web Apps
SAIVS
正常リクエスト送信
CODE BLUE 2016
第1次検査
入力値の出力箇所を認識
MBSD
Web Server
Web Apps
SAIVS
正常リクエスト送信
レスポンスの分析
CODE BLUE 2016
第1次検査
<~value="xxx">
出力箇所を基にシードを抽出
MBSD
Web Server
Web Apps
SAIVS
正常リクエスト送信
レスポンスの分析
CODE BLUE 2016
第1次検査
<~value="xxx">
シードに対応したHTML/JSを生成
(学習済みLSTMを使用)
MBSD
Web Server
Web Apps
SAIVS
正常リクエスト送信
レスポンスの分析
CODE BLUE 2016
第1次検査
<~value=“”>
生成したHTML / JavaScriptにスクリプトを付与
MBSD
Web Server
Web Apps
SAIVS
正常リクエスト送信
レスポンスの分析
CODE BLUE 2016
第1次検査
<~value=“”><script>alert(3122);</script>
RXSSを検出するために検査リクエストを送信
MBSD
Web Server
Web Apps
SAIVS
検査リクエスト送信
CODE BLUE 2016
第1次検査
<~value=“”><script>alert(3122);</script>
RXSS有無を判定
検出 ⇒ 検査終了、未検出 ⇒ 第2次検査へ
MBSD
Web Server
Web Apps
SAIVS
検査リクエスト送信
レスポンスの分析
CODE BLUE 2016
第1次検査
RXSSあり?なし?
サニタイズのパターンを特定
MBSD
Web Server
Web Apps
SAIVS
検査リクエスト送信
レスポンスの分析
CODE BLUE 2016
第2次検査
<~value=“”&gt;&lt;script&gt;alert(3122);・・・
サニタイズ回避可能な検査パターンを選択
(学習済みMLPを使用)
MBSD
Web Server
Web Apps
SAIVS
検査リクエスト送信
レスポンスの分析
CODE BLUE 2016
第2次検査
Event handler?
サニタイズを回避する検査リクエストを送信
MBSD
Web Server
Web Apps
SAIVS
検査リクエスト再送信
CODE BLUE 2016
第2次検査
Event handler?
RXSS有無を判定
検出 ⇒ 検査終了、未検出 ⇒ 第2次検査を再試行
MBSD
Web Server
Web Apps
SAIVS
検査リクエスト再送信
レスポンスの分析
CODE BLUE 2016
第2次検査
RXSSあり?なし?
RXSS検出のデモ
MBSD
Target:webseclab
CODE BLUE 2016
Case
サニタ
イズ
出力箇所/サニタイズ
/reflect/full1 × BODY タグ内
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇
INPUTタグの属性値
入力値からタグ閉じが削除
/reflect/js4_dq × SCRIPT タグ内
RXSS検出のデモ
MBSD
Target:webseclab
CODE BLUE 2016
Case
サニタ
イズ
出力箇所/サニタイズ
/reflect/full1 × BODY タグ内
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇
INPUTタグの属性値
入力値からタグ閉じが削除
/reflect/js4_dq × SCRIPT タグ内
MBSD
<!doctype html><html><head><title>Full Javascript
Injection (full.1)</title></head><body>
Hello!<BR>
The value of cgi parameter &quot;in&quot;
is:saivs12345
</body></html>
http://xxx/reflect/full1?in=saivs12345
出力箇所 :BODYタグ内
サニタイズ:なし
Case1:正常リクエスト送信時
CODE BLUE 2016
MBSD
<!doctype html><html><head><title>Full Javascript
Injection (full.1)</title></head><body>
Hello!<BR>
The value of cgi parameter &quot;in&quot; is:
lasther=''></form>D0i7Q"VW53N'nT7t0<script>alert(3122)
;kc5i3</script>ueFj8
</body></html>
http://xxx/reflect/full1?in=lasther=''%3E%3C/form%3ED0i7Q%22VW
53N'nT7t0%3Cscript%3Ealert(3122);kc5i3%3C/script%3EueFj8
試行回数:1回
Case1:検査リクエスト送信時
CODE BLUE 2016
MBSD
Case1:検査の動画
CODE BLUE 2016
https://www.youtube.com/watch?v=3RkhSED5DQU
RXSS検出のデモ
MBSD
Target:webseclab
CODE BLUE 2016
Case
サニタ
イズ
出力箇所/サニタイズ
/reflect/full1 × BODY タグ内
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇
INPUTタグの属性値
入力値からタグ閉じが削除
/reflect/js4_dq × SCRIPT タグ内
MBSD
<!doctype html><html><head><title>Reflected XSS in
textarea (textarea1)</title></head><body>
<H2>Textarea injection test</H2>
<p>
<FORM>
<textarea name="in" rows="5" cols="60">saivs12345
</textarea>
<p>
http://xxx/reflect/textarea1?in=saivs12345
出力箇所 :TEXTAREAタグ内
サニタイズ:なし
Case2:正常リクエスト送信時
CODE BLUE 2016
MBSD
<!doctype html><html><head><title>Reflected XSS in
textarea (textarea1)</title></head><body>
<H2>Textarea injection test</H2>
<p>
<FORM>
<textarea name="in" rows="5" cols="60"></textarea>7Q7p
N"MBPcc'PA6tz<script>alert(3122);WKr8J</script>fowCP</
textarea>
<p>
http://xxx/reflect/textarea1?in=%3C/textarea%3E7Q7pN%22MBPcc'
PA6tz%3Cscript%3Ealert(3122);WKr8J%3C/script%3EfowCP
試行回数:1回
Case2:検査リクエスト送信時
CODE BLUE 2016
MBSD
Case2:検査の動画
CODE BLUE 2016
https://www.youtube.com/watch?v=6UHbMGdqr_0
RXSS検出のデモ
MBSD
Target:webseclab
CODE BLUE 2016
Case
サニタ
イズ
出力箇所/サニタイズ
/reflect/full1 × BODY タグ内
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇
INPUTタグの属性値
入力値からタグ閉じが削除
/reflect/js4_dq × SCRIPT タグ内
MBSD
<!doctype html><html>
<head><title>Reflected XSS - attribute injection in ta
gs (dq.2)</title></head><body>
<H2>Update Your Preferences</H2><p>
<FORM>
Homepage: <input value=""><script>alert()" name="in" s
ize="40"><BR>
http://xxx/xss/reflect/onmouseover?in=”><script>alert()</script>
出力箇所 :INPUTタグ内
サニタイズ:タグ閉じの削除
Case3:正常リクエスト送信時
CODE BLUE 2016
MBSD
<!doctype html><html>
<head><title>Reflected XSS - attribute injection in
tags (dq.2)</title></head><body>
<H2>Update Your Preferences</H2><p>
<FORM>
Homepage: <input value=""> <option s onmouseover=alert
(3122);//" name="in" size="40"><BR>
http://xxx/xss/reflect/onmouseover?in=%22%3E%3C/option%3E%3
Coption%20s%20onmouseover=alert(3122);//
試行回数:3回
Case3:検査リクエスト送信時
CODE BLUE 2016
MBSD
Case3:検査の様子
CODE BLUE 2016
https://www.youtube.com/watch?v=-r3C1moUVqU
RXSS検出のデモ
MBSD
Target:webseclab
CODE BLUE 2016
Case
サニタ
イズ
出力箇所/サニタイズ
/reflect/full1 × BODY タグ内
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇
INPUTタグの属性値
入力値からタグ閉じが削除
/reflect/js4_dq × SCRIPT タグ内
MBSD
<!doctype html><html><head><title>JavaScript and
double-quote injection in JS block (js.4)</title>
</head><body>
<script language="javascript">
var f = {
date: "",
week: "1",
bad: "saivs12345",
phase: "2",
http://xxx/xss/reflect/js4_dq?in=saivs12345
出力箇所 :SCRIPTタグ内
サニタイズ:なし
Case4:正常リクエスト送信時
CODE BLUE 2016
MBSD
<!doctype html><html><head><title>JavaScript and
double-quote injection in JS block (js.4)</title>
</head><body>
<script language="javascript">
var f = {
date: "",
week: "1",
bad: "6",
skuI;alert(3122);//1VU7k",
phase: "2",
http://xxx/xss/reflect/js4_dq?in=6%22,%0A%20%20%20%20%20%20
%20%20%20%20%20%20skuI;alert(3122);//1VU7k
試行回数:1回
Case4:検査リクエスト送信時
CODE BLUE 2016
MBSD
Case4:検査の様子
CODE BLUE 2016
https://www.youtube.com/watch?v=Pf2lSB25C3M
SAIVSの能力
MBSD CODE BLUE 2016
 Webアプリのクローリング (✔)
 脆弱性の検出 (✔)
SAIVSの能力
MBSD CODE BLUE 2016
「WebアプリをクローリングしながらRXSSを検出」
これを、全自動で実現
SAIVSのデモ
MBSD
Target:OWASP Broken Web Apps Google Gruyere
CODE BLUE 2016
SAIVSのデモ
MBSD CODE BLUE 2016
Top Sign up
Login New snippet
Sign up
complete
1.Sign upでアカウント作成
2.ログイン
3.Snippet 登録
4.Profile 更新
Profile
New snippet
register
Profile
update
脆弱性
SAIVSのデモ
MBSD CODE BLUE 2016
Top Sign up
Login New snippet
Sign up
complete
1.Sign upでアカウント作成
2.ログイン
3.Snippet 登録
4.Profile 更新
Profile
New snippet
register
Profile
update
SAIVSのデモ
MBSD CODE BLUE 2016
Top Sign up
Login New snippet
Sign up
complete
1.Sign upでアカウント作成
2.ログイン
3.Snippet 登録
4.Profile 更新
Profile
New snippet
register
Profile
update
SAIVSのデモ
MBSD CODE BLUE 2016
Top Sign up
Login New snippet
Sign up
complete
1.Sign upでアカウント作成
2.ログイン
3.Snippet 登録
4.Profile 更新
Profile
New snippet
register
Profile
update
SAIVSのデモ
MBSD CODE BLUE 2016
Top Sign up
Login
Sign up
complete
1.Sign upでアカウント作成
2.ログイン
3.Snippet 登録
4.Profile 更新
Profile Profile
update
New snippet
New snippet
register
SAIVSのデモ
MBSD CODE BLUE 2016
機能名
サニタ
イズ
出力箇所/サニタイズ
New snippet register 〇
BODY タグ内
SCRIPTタグをサニタイズ
Profile update 〇
A タグ内
「<」「>」をサニタイズ
MBSD CODE BLUE 2016
SAIVSのデモ
https://www.youtube.com/watch?v=N5d9oM0NcM0
MBSD
 クローリング能力の強化
 複雑なアプリへの対応
 CAPTCHAへの対応
CODE BLUE 2016
将来の展望
 脆弱性検出能力の強化
 複雑なRXSSパターンへの対応
 他脆弱性への対応
• Download “.PDF” version of this document:
≫ http://www.mbsd.jp
MBSD

More Related Content

Viewers also liked

ITエンジニアのための機械学習理論入門 第5章
ITエンジニアのための機械学習理論入門 第5章ITエンジニアのための機械学習理論入門 第5章
ITエンジニアのための機械学習理論入門 第5章Isao Takaesu
 
Aiにwebアプリ診断をやらせてみる
Aiにwebアプリ診断をやらせてみるAiにwebアプリ診断をやらせてみる
Aiにwebアプリ診断をやらせてみるIsao Takaesu
 
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...CODE BLUE
 
機械学習関連情報の収集方法
機械学習関連情報の収集方法機械学習関連情報の収集方法
機械学習関連情報の収集方法Isao Takaesu
 
DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用Kazuki Fujikawa
 
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組みYoji Kiyota
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介Recruit Technologies
 
Lighting talk chainer hands on
Lighting talk chainer hands onLighting talk chainer hands on
Lighting talk chainer hands onOgushi Masaya
 
Chainer meetup lt
Chainer meetup ltChainer meetup lt
Chainer meetup ltAce12358
 
深層リカレントニューラルネットワークを用いた日本語述語項構造解析
深層リカレントニューラルネットワークを用いた日本語述語項構造解析深層リカレントニューラルネットワークを用いた日本語述語項構造解析
深層リカレントニューラルネットワークを用いた日本語述語項構造解析Hiroki Ouchi
 
Chainer Contribution Guide
Chainer Contribution GuideChainer Contribution Guide
Chainer Contribution GuideKenta Oono
 
PFN Spring Internship Final Report: Autonomous Drive by Deep RL
PFN Spring Internship Final Report: Autonomous Drive by Deep RLPFN Spring Internship Final Report: Autonomous Drive by Deep RL
PFN Spring Internship Final Report: Autonomous Drive by Deep RLNaoto Yoshida
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦Koichi Hamada
 
ディープラーニングにおける学習の高速化の重要性とその手法
ディープラーニングにおける学習の高速化の重要性とその手法ディープラーニングにおける学習の高速化の重要性とその手法
ディープラーニングにおける学習の高速化の重要性とその手法Yuko Fujiyama
 
Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例Jun-ya Norimatsu
 
ボケるRNNを学習したい (Chainer meetup 01)
ボケるRNNを学習したい (Chainer meetup 01)ボケるRNNを学習したい (Chainer meetup 01)
ボケるRNNを学習したい (Chainer meetup 01)Motoki Sato
 
Chainer Development Plan 2015/12
Chainer Development Plan 2015/12Chainer Development Plan 2015/12
Chainer Development Plan 2015/12Seiya Tokui
 
Chainer入門と最近の機能
Chainer入門と最近の機能Chainer入門と最近の機能
Chainer入門と最近の機能Yuya Unno
 

Viewers also liked (20)

ITエンジニアのための機械学習理論入門 第5章
ITエンジニアのための機械学習理論入門 第5章ITエンジニアのための機械学習理論入門 第5章
ITエンジニアのための機械学習理論入門 第5章
 
Aiにwebアプリ診断をやらせてみる
Aiにwebアプリ診断をやらせてみるAiにwebアプリ診断をやらせてみる
Aiにwebアプリ診断をやらせてみる
 
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
 
機械学習関連情報の収集方法
機械学習関連情報の収集方法機械学習関連情報の収集方法
機械学習関連情報の収集方法
 
NL20161222invited
NL20161222invitedNL20161222invited
NL20161222invited
 
DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用
 
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
 
Lighting talk chainer hands on
Lighting talk chainer hands onLighting talk chainer hands on
Lighting talk chainer hands on
 
Chainer meetup lt
Chainer meetup ltChainer meetup lt
Chainer meetup lt
 
深層リカレントニューラルネットワークを用いた日本語述語項構造解析
深層リカレントニューラルネットワークを用いた日本語述語項構造解析深層リカレントニューラルネットワークを用いた日本語述語項構造解析
深層リカレントニューラルネットワークを用いた日本語述語項構造解析
 
Chainer Contribution Guide
Chainer Contribution GuideChainer Contribution Guide
Chainer Contribution Guide
 
PFN Spring Internship Final Report: Autonomous Drive by Deep RL
PFN Spring Internship Final Report: Autonomous Drive by Deep RLPFN Spring Internship Final Report: Autonomous Drive by Deep RL
PFN Spring Internship Final Report: Autonomous Drive by Deep RL
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦
 
ディープラーニングにおける学習の高速化の重要性とその手法
ディープラーニングにおける学習の高速化の重要性とその手法ディープラーニングにおける学習の高速化の重要性とその手法
ディープラーニングにおける学習の高速化の重要性とその手法
 
Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
 
ボケるRNNを学習したい (Chainer meetup 01)
ボケるRNNを学習したい (Chainer meetup 01)ボケるRNNを学習したい (Chainer meetup 01)
ボケるRNNを学習したい (Chainer meetup 01)
 
Chainer Development Plan 2015/12
Chainer Development Plan 2015/12Chainer Development Plan 2015/12
Chainer Development Plan 2015/12
 
Chainer入門と最近の機能
Chainer入門と最近の機能Chainer入門と最近の機能
Chainer入門と最近の機能
 
CuPy解説
CuPy解説CuPy解説
CuPy解説
 

More from Isao Takaesu

Deep Exploit@Black Hat Europe 2018 Arsenal
Deep Exploit@Black Hat Europe 2018 ArsenalDeep Exploit@Black Hat Europe 2018 Arsenal
Deep Exploit@Black Hat Europe 2018 ArsenalIsao Takaesu
 
OSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールOSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールIsao Takaesu
 
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -Isao Takaesu
 
ハニーポッター技術交流会
ハニーポッター技術交流会ハニーポッター技術交流会
ハニーポッター技術交流会Isao Takaesu
 
サイバーセキュリティ錬金術
サイバーセキュリティ錬金術サイバーセキュリティ錬金術
サイバーセキュリティ錬金術Isao Takaesu
 
GAとGANによる検査値の自動生成
GAとGANによる検査値の自動生成GAとGANによる検査値の自動生成
GAとGANによる検査値の自動生成Isao Takaesu
 
脆弱性診断データの活用例 - Webアプリケーション診断編 -
脆弱性診断データの活用例 - Webアプリケーション診断編 -脆弱性診断データの活用例 - Webアプリケーション診断編 -
脆弱性診断データの活用例 - Webアプリケーション診断編 -Isao Takaesu
 
RECOMMENDER for Web security engineers - 中級編 -
RECOMMENDER for Web security engineers - 中級編 -RECOMMENDER for Web security engineers - 中級編 -
RECOMMENDER for Web security engineers - 中級編 -Isao Takaesu
 
RECOMMENDER for Web security engineers - 初級編 -
RECOMMENDER for Web security engineers - 初級編 -RECOMMENDER for Web security engineers - 初級編 -
RECOMMENDER for Web security engineers - 初級編 -Isao Takaesu
 
Convolutional Neural Networkに対する攻撃手法
Convolutional Neural Networkに対する攻撃手法Convolutional Neural Networkに対する攻撃手法
Convolutional Neural Networkに対する攻撃手法Isao Takaesu
 

More from Isao Takaesu (10)

Deep Exploit@Black Hat Europe 2018 Arsenal
Deep Exploit@Black Hat Europe 2018 ArsenalDeep Exploit@Black Hat Europe 2018 Arsenal
Deep Exploit@Black Hat Europe 2018 Arsenal
 
OSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールOSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツール
 
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
 
ハニーポッター技術交流会
ハニーポッター技術交流会ハニーポッター技術交流会
ハニーポッター技術交流会
 
サイバーセキュリティ錬金術
サイバーセキュリティ錬金術サイバーセキュリティ錬金術
サイバーセキュリティ錬金術
 
GAとGANによる検査値の自動生成
GAとGANによる検査値の自動生成GAとGANによる検査値の自動生成
GAとGANによる検査値の自動生成
 
脆弱性診断データの活用例 - Webアプリケーション診断編 -
脆弱性診断データの活用例 - Webアプリケーション診断編 -脆弱性診断データの活用例 - Webアプリケーション診断編 -
脆弱性診断データの活用例 - Webアプリケーション診断編 -
 
RECOMMENDER for Web security engineers - 中級編 -
RECOMMENDER for Web security engineers - 中級編 -RECOMMENDER for Web security engineers - 中級編 -
RECOMMENDER for Web security engineers - 中級編 -
 
RECOMMENDER for Web security engineers - 初級編 -
RECOMMENDER for Web security engineers - 初級編 -RECOMMENDER for Web security engineers - 初級編 -
RECOMMENDER for Web security engineers - 初級編 -
 
Convolutional Neural Networkに対する攻撃手法
Convolutional Neural Networkに対する攻撃手法Convolutional Neural Networkに対する攻撃手法
Convolutional Neural Networkに対する攻撃手法
 

CODE BLUE 2016 - 機械学習でWebアプリケーションの脆弱性を見つける方法