概要

OSS(Open-source software)またはFreeのセキュリティ診断ツールにはどんなものがあるのかを調べ、実際に使ってみたいツールをピックアップします。

主なOSS診断ツール(一部Freeツールを含む)

以下の条件で抽出します。

  • 対象にLinuxのクラウドサーバが含まれる
  • 最近更新されている、またはよく使われている
  • レポート機能がある(プラスαに使うツールには必須ではない)
名称 Webアプリ ミドルウェア OSセキュリティ設定 ネットワーク ライセンス 特徴
OpenVAS GPLv2 ソフトウェアのバージョンや設定、構成の確認の他、ネットワーク脆弱性テスト(NVT)を実行。豊富な診断項目がある。Webブラウザからも操作可能
Vuls GPLv3 CVEデータベースを利用したサーバーの脆弱性スキャンツール。EmailやSlackで通知可能。CRONなどで定期実行でき、自動化の文化に合っている
OWASP Dependency Check Apache 2.0 利用しているコンポーネントの依存関係から脆弱なものを使っていないかチェックする。結果をVuls Repoに取り込める
Nmap GPLv2 定番のポートスキャナ。ネットワークの脆弱性(不要なオープンポートなど)を発見することができる。OSやソフトウェアの種類やバージョンを取得できる
OWASP ZAP Apache 2.0 Webアプリケーション診断ツールの王道。自動診断できる。メニューが日本語対応
Burp Suite Free Edition オープンソースではない。ローカルProxyを中心に構成されたセキュリティ診断ツールの無償版
VAddy Free Edition オープンソースではない。Webサービスとして提供。CIに組み込んで継続的に脆弱性診断を行うことが可能。CLIツールとしてgo-vaddyを配布→結果をSlackに投稿できる
Metasploit 3-clause BSD 攻撃コードの作成、実行が行える。無料版と有料版がある
skipfish Apache 2.0 Googleが開発した辞書ベースの脆弱性ツール。検知対象を柔軟に設定できる
Nikto2 GPL 辞書ベースで脆弱性診断を行うツール
Paros Artistic License 手動による脆弱性検査ツール。プロキシとして動作、サーバとクライアント間のデータを傍受し変更することが可能

候補

使えそうなのをちょっと詳しく調べてみます。

以下の2つに大別してピックアップします。

a. プラットフォーム診断
OSやミドルウェアの脆弱性を検出する。

b. Webアプリケーション診断
構築されたWebサイト・アプリケーションの脆弱性を検出する。

プラットフォーム診断系

OpenVAS

対応OS
  • Linux(Debian系、RedHat系)Windows Mac OS
  • クラウド、オンプレミス、ESXi、Cisco OS
収集アーキテクチャー
  • root権限を持ったユーザでSSH
スキャン内容
  • 対象のマシンに導入されているソフトウェアのバージョンや設定、構成などを確認してそれらに脆弱性がないかどうかをチェック
  • 「Network Vulnerability Tests (NVTs)」というシグネチャーに基づいた脆弱性チェック
  • 脆弱性データベースは日々更新されている。
その他特徴
  • 自動で定期的にセキュリティ診断を行うことができる
  • 45,000件以上の診断項目がある
  • ウェブインタフェースを搭載、診断対象にするシステム、診断する項目などを設定できる
  • AWSでの使用に申請必要
レポート形式
  • WebUI
  • mail
  • HTML
  • CSV
  • XML
  • PDF

Vuls

2019/12/27 現在 v0.9.0です。まだまだ活発に更新されているので、最新情報は公式をご確認ください!

公式サイト:https://vuls.io/en/
GitHub:https://github.com/future-architect/vuls

対応OS
  • Linux/FreeBSDに対応
    • Alpine※v0.9.0以降, Ubuntu, Debian, CentOS, Amazon Linux, RHEL, Oracle Linux, SUSE Enterprise Linux, Raspbian, FreeBSDをサポート
    • クラウド、オンプレミス、Dockerにも対応
収集アーキテクチャー
  • リモートスキャン
    SSH。root権限が必要かどうかはスキャンモードによる
  • ローカルスキャン
    スキャン実施対象にデプロイして実行
  • サーバーモード (※v0.8.0以降)
    SSHもエージェントも不要。1台Vulsサーバーを建てたら、スキャン対象サーバーでコマンド一発!結果をHTTP経由でVulsサーバーに送信
スキャンモード

どちらのモードもインターネットアクセスなしでスキャンできるオフラインモードあり (Red Hat, CentOS, OracleLinux, Ubuntu, Debian) ※v0.5.0以降

  • fast-scan
    • root権限不要
    • 依存関係なし。
  • fast-root scan mode
    • root権限必要
    • パッケージをアップデートによって影響を受けるプロセスの検知ができる (Red Hat, CentOS, Oracle Linux and Amazon Linux)
    • 以前に更新されたがまだ再起動していないプロセスを検出できる (Debian and Ubuntu)
スキャン内容
  • Linuxサーバに存在する脆弱性をスキャン
  • OSパッケージ管理対象外のミドルウェアをスキャン
    • プログラミング言語のライブラリやフレームワーク、ミドルウェアの脆弱性スキャン
    • CPEに登録されているソフトウェアが対象
その他特徴
  • EmailやSlackで通知可能(日本語でのレポートも可能)
  • 設定ファイルのテンプレート自動生成
    • CIDRを指定してサーバを自動検出、設定ファイルのテンプレートを生成
  • 付属するTerminal-Based User Interfaceビューアでは、Vim風キーバインドでスキャン結果を参照可能
  • CRONなどで定期実行、レポートすることで脆弱性の放置を防ぐことできる
  • Web UI(VulsRepo)を使えばピボットテーブルのように分析可能
  • AWSでの脆弱性/侵入テスト事前申請は必要なし
  • Wordpressの脆弱性検知ができる※v0.7.0以降 参考:VulsでついにWordPressの脆弱性検知ができるようになったので試してみた!
レポート形式
  • WebUI
  • CUI
  • mail
  • slack
  • text
  • json
  • XML

Webアプリケーション診断系

OWASP Zed Attack Proxy(ZAP)

インターフェイス
  • GUIアプリケーション
検査項目
  • SQLインジェクション
  • コマンドインジェクション
  • クロスサイトスクリプティング
  • パス名パラメータの未チェック/ディレクトリ・トラバーサル
  • CSRF(クロスサイト・リクエスト・フォージェリ)
  • バッファオーバーフロー

など

レポート形式
  • HTML
  • XML
その他特徴
  • 多くのメニューや設定項目を持っている
  • あまり深刻でない脆弱性も細かく指摘してくれる
  • Jenkinsのプラグインがある
  • AWSでの使用に申請必要
  • 本番環境を改変することがある。テスト環境で実行するか、バックアップからリストアできる環境と準備をして おくことが必要

VAddy

インターフェイス
  • クラウド型(SaaS型)のサービス
  • go-vaddyというCLIツールあり
検査項目
  • SQLインジェクション
  • コマンドインジェクション
  • クロスサイトスクリプティング
  • リモートファイルインクルージョン
  • ディレクトリトラバーサル
その他特徴
  • 簡便。CIに組み込んで継続的に脆弱性診断をするのに向いている
  • 一般的な開発者向けで、脆弱性に関する専門的な知識がなくても使い続けていくことができる
  • 検出する脆弱性を絞っており、基本的には見つかったら必ず対応が必要
  • Freeプランでは出来ないことがある(有料プランと無料プランの違い
    • 検査項目: 無料プランはSQLインジェクションとXSSの検査、有料プランは加えてRFI(リモートファイルインクルージョン)、コマンドインジェクション、ディレクトリトラバーサルの検査
    • チーム機能:無料プランでは複数人でのチーム利用ができない
    • FQDN追加の可否:無料プランは3つまで
  • IDCFクラウドと業務提携
    • 専用窓口から無料で導入サポート
    • 有償プランが初年度10%割引
  • AWSでの使用に申請必要
  • 本番環境への実行は禁止
レポート形式
  • Webの管理画面で確認。報告用のレポート生成はしない

参照:技術系スタートアップはスタンスを明確に。エッジを研げ、その刃は本物か?

  • go-vaddyの出力を結果をSlackに投稿できる

参照:VAddyのWeb脆弱性検査を定期的に実行して結果をSlack通知

まとめ

実際に使ってみたいものを以下にまとめます。

◇通常運用時にセキュリティを確保するなら

  • Vuls + OWASP Dependency Check
    • 運用時にはVulsを定期実行して脆弱性の対応漏れが無いようにする
    • OWASP Dependency Check は Vuls Repo に連携できるので、一緒に実行するようにしておけばカバーできる範囲が広がる

◇Webアプリケーション開発時なら

  • VAddyを導入すると簡単にセキュリティが確保できる。IDCFクラウドの無料サポートでフォローがある。

◇詳しく調べたい時

  • Nmap でポートスキャンを実行し、外部に情報が洩れていないかチェック
  • OpenVASで外部からの疑似アクセスやネットワーク関連のテスト
  • OWAPS ZAPでWebアプリケーション診断