$30 off During Our Annual Pro Sale. View Details »

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

gree_tech
PRO
November 11, 2021

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

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

gree_tech
PRO

November 11, 2021
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. サーバーフレームワークに
    潜んでる脆弱性の検知
    グリー シニアセキュリティエンジニア
    徐(ソ) 承賢

    View Slide

  2. • 国際CTF入賞経験
    • 元LINEセキュリティ担当
    • グリー2012入社
    • 海外のセキュリティカンファレンスで登壇(たまに)
    • 最近ハマってること
    • solidity, geth, ganache, truffle
    • node.js, react, express
    セキュリティ部 / セキュリティ診断チーム
    自己紹介
    2

    View Slide

  3. • メンバー
    • マネージャー含む3人
    • やってること
    • プロダクト診断
    • サーバーとクライアント
    • ホワイトボックス&ブラックボックス
    • 静的、動的解析 (ソースコードレビュー&バイナリー解析も含む)
    • セキュリティコンサル
    • 海賊版アプリの解析&対策
    • 不正ユーザー検知
    • セキュリティ用のサンプルコードやモジュール提供
    • 社内インシデント対応
    セキュリティ診断チームの紹介
    3

    View Slide

  4. • 技術早い進化
    • 特に言語やサーバーフレームワーク
    • 2012年 only php, ethna
    • 2021年 fuelphp, symfony, sliex, laravel, cakephp, django, rails, flask,
    golang, typescrypt, nodejs… いっぱいある
    • グリーの自由な開発環境と雰囲気
    • セキュリティ的にはかなり辛い
    • 毎回診断の時はチャレンジ状態
    https://github.com/truefinder/tonbi
    TONBIの開発経緯
    4

    View Slide

  5. • サーバーフレームワークの脆弱性検知ツール
    • ソースコード内で脆弱性の恐れがあるところを指摘
    • 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

    View Slide

  6. • CLI
    • オプション
    • -d ソースコードのディレクトリー
    • -f フレームワーク
    • -l 言語
    • -v ビュー
    TONBIの使い方 #1
    6
    $python tonbi.py -d ./src -f laravel -l php -v blade

    View Slide

  7. • 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

    View Slide

  8. • 検知パータン
    • 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中から抜粋

    View Slide

  9. • 検知結果
    TONBIの結果画面 #1
    9

    View Slide

  10. TONBIの結果画面 #2
    10

    View Slide

  11. • 言語解析で正確さを追求
    • 各言語パーサーを使って正確性を高める
    • 検知したところを追っかける機能を追加する
    • GUIを提供
    • Webで見れるようなGUIを提供する
    • 結果がCI/CDと連携
    • Git方に飛べる
    今後の課題
    11

    View Slide

  12. ご清聴ありがとうございました
    12

    View Slide

  13. 13

    View Slide