TORIPIYO DIARY

recent events, IoT, programming, security topics

セキュリティツールのテストに使える脆弱性のあるアプリ

仕事でスキャナなどのセキュリティツールのテストをしたいとき、診断対象のアプリを自分で0から用意するのは工数もかかって大変です。会社のアプリをテストに利用するのは、少し不安ですし、バランス良く(?)アプリに脆弱性が含まれていないとセキュリティツールの評価をやりにくくなります。

そんな状況を解決するために世の中には、セキュリティツールのテストやエンジニアの教育向けの脆弱性の含まれたサンプルアプリが提供されています。

アプリ名 言語 場所
OWASP Juice Shop Node.js, express https://github.com/bkimminich/juice-shop
RailsGoat Ruby, Rails https://github.com/OWASP/railsgoat
GoVWA Go https://github.com/0c34/govwa
Vulnerable Flask Application Python, Flask https://github.com/we45/Vulnerable-Flask-App
WebGoat Java, Spring https://github.com/WebGoat/WebGoat

brakeman

例えば、Ruby on Rails の静的解析ツールである brakeman の動作テストをしたいのであれば、RailsGoatを使って動作確認ができます。

github.com

下記の例では、脆弱性の疑いがあるものを19個見つけています。

~/railsgoat: brakeman -f json . 2>/dev/null | head
{
  "scan_info": {
    "app_path": "/xxxxxxx/railsgoat",
    "rails_version": "6.0.0",
    "security_warnings": 19,
    "start_time": "2022-09-06 22:16:37 +0900",
    "end_time": "2022-09-06 22:16:37 +0900",
    "duration": 0.24359,
    "checks_performed": [
      "BasicAuth",

gitleaks

git レポジトリ内にある秘匿情報を調査する gitleaks などのツールの動作確認もできます。

github.com

下記の例では、juice-shop アプリに対してgitleaksを実行して秘匿情報の疑いのあるものを111個見つけています。

~/juice-shop: gitleaks detect -f json .

    ○
    │╲
    │ ○
    ○ ░
    ░    gitleaks

10:03PM INF scan completed in 4.81s
10:03PM WRN leaks found: 111

このように脆弱性のあるアプリを把握していると、セキュリティツールのテストでの工数削減に役立てられます。