サーバーフレームワークに
潜んでる脆弱性の検知
グリー シニアセキュリティエンジニア
徐(ソ) 承賢
• 国際CTF入賞経験
• 元LINEセキュリティ担当
• グリー2012入社
• 海外のセキュリティカンファレンスで登壇(たまに)
• 最近ハマってること
• solidity, geth, ganache, truffle
• node.js, react, express
セキュリティ部 / セキュリティ診断チーム
自己紹介
2
• メンバー
• マネージャー含む3人
• やってること
• プロダクト診断
• サーバーとクライアント
• ホワイトボックス&ブラックボックス
• 静的、動的解析 (ソースコードレビュー&バイナリー解析も含む)
• セキュリティコンサル
• 海賊版アプリの解析&対策
• 不正ユーザー検知
• セキュリティ用のサンプルコードやモジュール提供
• 社内インシデント対応
セキュリティ診断チームの紹介
3
• 技術早い進化
• 特に言語やサーバーフレームワーク
• 2012年 only php, ethna
• 2021年 fuelphp, symfony, sliex, laravel, cakephp, django, rails, flask,
golang, typescrypt, nodejs… いっぱいある
• グリーの自由な開発環境と雰囲気
• セキュリティ的にはかなり辛い
• 毎回診断の時はチャレンジ状態
https://github.com/truefinder/tonbi
TONBIの開発経緯
4
• サーバーフレームワークの脆弱性検知ツール
• ソースコード内で脆弱性の恐れがあるところを指摘
• python & yara(セキュリティ業界のパターンマッチングライブラリー)
• 技術の早い進化に対応
• 現在言語5個&フレームワーク7個&ビュー5個
• laravel, codeigniter, django, flask, gorilla, ethna, nodejs
• go, php, javascript, python, typescript
• smarty, twig, blade, flexy, electron
• グリーのような自由な開発環境で活躍
• セキュリティレビューの工数を減らせる
• 大型プロダクトで、実際約90%くらい手間が省けた
• 勘違いして欲しくないこと
• 脆弱性の可能性を指摘=指摘されたところが100%脆弱性ではない
• 脆弱性判定まで人の目を通して、コードを追っかける必要はある
TONBIとは
5
• CLI
• オプション
• -d ソースコードのディレクトリー
• -f フレームワーク
• -l 言語
• -v ビュー
TONBIの使い方 #1
6
$python tonbi.py -d ./src -f laravel -l php -v blade
• configファイル設定
TONBIの使い方 #2
7
{
"source_directory" : "../sample/codeigniter/src",
"framework_name" : "codeigniter",
"language" : "php",
"view_name" : "twig",
"head_count" : 5,
"tail_count" : 5,
"output" : "output.txt",
"plugins" : [ ],
"ignore_files" : [ "jpg", "png", "jpeg", "ico", "gif", "tif" , "tiff" ],
"ignore_dirs" : ["node_modules"],
"exclude" : ["ssl_misconfiguration"]
}
$python tonbi.py -c config.json
• 検知パータン
• yaraルール
• 正規表現が使える
• and/or/anyなど組み合わせ
• セキュリティチームで作成
TONBIの検知パータン
8
rule sql_injection : codeigniter
{
strings :
$sql1 = /$this->db->(query|simple_query)¥(/
condition :
any of them
}
rule directory : codeigniter
{
strings :
$dir1 = "sanitize_filename("
$false = /.*:.*false/ nocase
condition :
$dir1 and $false
}
framework/codeigniter.yar中から抜粋
• 検知結果
TONBIの結果画面 #1
9
TONBIの結果画面 #2
10
• 言語解析で正確さを追求
• 各言語パーサーを使って正確性を高める
• 検知したところを追っかける機能を追加する
• GUIを提供
• Webで見れるようなGUIを提供する
• 結果がCI/CDと連携
• Git方に飛べる
今後の課題
11
ご清聴ありがとうございました
12
13

サーバーフレームワークに潜んでる脆弱性検知ツール紹介