Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

gree_tech
November 11, 2021

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

GREE Tech Conference 2021 で発表された資料です。
https://techcon.gree.jp/2021/session/ShortSession-3

gree_tech

November 11, 2021
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. • 国際CTF入賞経験 • 元LINEセキュリティ担当 • グリー2012入社 • 海外のセキュリティカンファレンスで登壇(たまに) • 最近ハマってること

    • solidity, geth, ganache, truffle • node.js, react, express セキュリティ部 / セキュリティ診断チーム 自己紹介 2
  2. • メンバー • マネージャー含む3人 • やってること • プロダクト診断 • サーバーとクライアント

    • ホワイトボックス&ブラックボックス • 静的、動的解析 (ソースコードレビュー&バイナリー解析も含む) • セキュリティコンサル • 海賊版アプリの解析&対策 • 不正ユーザー検知 • セキュリティ用のサンプルコードやモジュール提供 • 社内インシデント対応 セキュリティ診断チームの紹介 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
  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
  5. • CLI • オプション • -d ソースコードのディレクトリー • -f フレームワーク

    • -l 言語 • -v ビュー TONBIの使い方 #1 6 $python tonbi.py -d ./src -f laravel -l php -v blade
  6. • 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
  7. • 検知パータン • 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中から抜粋
  8. 13