debian9で脆弱性スキャナー使ってみた
パッケージじゃなきゃやだ
linuxで使える脆弱性スキャナーを探していると、vulsが結構ありました。しかしながら、aptでインストールする方法はなく、パスを通したりしないといけないので、管理的に汚いと思い(数カ月後の自分がアンインストールの方法を知っているとは思えない)どうにかして、パッケージでできないかなぁと探していました。debian buster sid のレポジトリには登録されているので、これを利用したいと思います。ただし、レポジトリをシステムに追加することは行いません。
debian buster sid のパッケージをダウンロード
vulsを利用するためには
が必要です。debian次期リリース版にパッケージ化されていました。これをgdebi で依存関係を解決しつつインストールします。
gdebiをインストールします。
sudo apt install gdebi
次にパッケージをダウンロードします。x86 64bitであるならば、アーキテクチャはamd64を選択します。
日本のダウンロードリンクを取得します。その後、サーバー内でwgetを利用し、パッケージをダウンロードします。
wget http://ftp.jp.debian.org/debian/pool/main/g/go-cve-dictionary/go-cve-dictionary_0.1.1+git20180404.0.4ee71e8-1_amd64.deb wget http://ftp.jp.debian.org/debian/pool/main/v/vuls/vuls_0.4.2+git20180531.0.399a087-2_amd64.deb wget http://ftp.jp.debian.org/debian/pool/main/g/goval-dictionary/goval-dictionary_0.0~git20180502.0.55b7f72-1_amd64.deb
パッケージをインストールする
go-cve-dictionaryをインストールします。
user@hoge:~$ sudo gdebi go-cve-dictionary_0.1.1+git20180404.0.4ee71e8-1_amd64.deb Reading package lists... Done Building dependency tree Reading state information... Done Reading state information... Done builds a local copy of the NVD/JVN go-cve-dictionary is tool to build a local copy of the NVD (National Vulnerabilities Database) and the Japanese JVN, which contain security vulnerabilities according to their CVE identifiers including exhaustive information and a risk score. The local copy is generated in sqlite format, and the tool has a server mode for easy querying. ソフトウェアパッケージをインストールしますか? [y/N]:y 以前に未選択のパッケージ go-cve-dictionary を選択しています。 (データベースを読み込んでいます ... 現在 224143 個のファイルとディレクトリがインストールされています。) go-cve-dictionary_0.1.1+git20180404.0.4ee71e8-1_amd64.deb を展開する準備をしています ... go-cve-dictionary (0.1.1+git20180404.0.4ee71e8-1) を展開しています... go-cve-dictionary (0.1.1+git20180404.0.4ee71e8-1) を設定しています ...
vulsをインストールします。
user@hoge:~$ sudo gdebi vuls_0.4.2+git20180531.0.399a087-2_amd64.deb Reading package lists... Done Building dependency tree Reading state information... Done Reading state information... Done Vulnerability scanner for Linux/FreeBSD, agentless, written in Go This is scanner which checks the package inventory against a local copy of the National Vunerabilities Database (NVD) of vulnerabilities according to their CVE (Common Vulnerabilities and Exposures) indentifiers. The backends supports a couple of OSs (Debian, RHEL, CentOS, Amazon Linux). Scanning servers over the network is possible. ソフトウェアパッケージをインストールしますか? [y/N]:y 以前に未選択のパッケージ vuls を選択しています。 (データベースを読み込んでいます ... 現在 224148 個のファイルとディレクトリがインストールされています。) vuls_0.4.2+git20180531.0.399a087-2_amd64.deb を展開する準備をしています ... vuls (0.4.2+git20180531.0.399a087-2) を展開しています... vuls (0.4.2+git20180531.0.399a087-2) を設定しています ... man-db (2.7.6.1-2) のトリガを処理しています ...
goval-dictionaryをインストールします。
user@hoge:~$ sudo gdebi goval-dictionary_0.0~git20180502.0.55b7f72-1_amd64.deb Reading package lists... Done Building dependency tree Reading state information... Done Reading state information... Done Tools to create DB of data written in OVAL This is tool to build a local copy of the OVAL(Open Vulnerability and Assessment Language). . The local copy is generated in sqlite format, and the tool has a server mode for easy querying. ソフトウェアパッケージをインストールしますか? [y/N]:y 以前に未選択のパッケージ goval-dictionary を選択しています。 (データベースを読み込んでいます ... 現在 224157 個のファイルとディレクトリがインストールされています。) goval-dictionary_0.0~git20180502.0.55b7f72-1_amd64.deb を展開する準備をしています ... goval-dictionary (0.0~git20180502.0.55b7f72-1) を展開しています... goval-dictionary (0.0~git20180502.0.55b7f72-1) を設定しています ...
インストールが終わると、コマンドが利用できるようになります。
user@hoge:~$ go-cve-dictionary Usage: go-cve-dictionary <flags> <subcommand> <subcommand args> Subcommands: commands list all command names flags describe all known top-level flags help describe subcommands and their syntax Subcommands for fetchjvn: fetchjvn Fetch Vulnerability dictionary from JVN Subcommands for fetchnvd: fetchnvd Fetch Vulnerability dictionary from NVD Subcommands for server: server Start CVE dictionary HTTP server Use "go-cve-dictionary flags" for a list of top-level flags user@hoge:~$ vuls Usage: vuls <flags> <subcommand> <subcommand args> Subcommands: commands list all command names flags describe all known top-level flags help describe subcommands and their syntax Subcommands for configtest: configtest Test configuration Subcommands for discover: discover Host discovery in the CIDR Subcommands for history: history List history of scanning. Subcommands for report: report Reporting Subcommands for scan: scan Scan vulnerabilities Subcommands for tui: tui Run Tui view to analyze vulnerabilities Use "vuls flags" for a list of top-level flags user@hoge:~$ goval-dictionary Usage: goval-dictionary <flags> <subcommand> <subcommand args> Subcommands: commands list all command names flags describe all known top-level flags help describe subcommands and their syntax Subcommands for fetch-alpine: fetch-alpine Fetch Vulnerability dictionary from Alpine secdb Subcommands for fetch-amazon: fetch-amazon Fetch Vulnerability dictionary from Amazon ALAS Subcommands for fetch-debian: fetch-debian Fetch Vulnerability dictionary from Debian Subcommands for fetch-oracle: fetch-oracle Fetch Vulnerability dictionary from Oracle Subcommands for fetch-redhat: fetch-redhat Fetch Vulnerability dictionary from RedHat Subcommands for fetch-suse: fetch-suse Fetch Vulnerability dictionary from SUSE Subcommands for fetch-ubuntu: fetch-ubuntu Fetch Vulnerability dictionary from Ubuntu Subcommands for select: select Select from DB Subcommands for server: server Start OVAL dictionary HTTP server Use "goval-dictionary flags" for a list of top-level flags
vulsの設定を行う
vulsがスキャンするためには設定ファイルが必要です。以下のファイルを作成してください。
user@hoge:~$ cat /home/user/config.toml [servers] [servers.localhost] host = "localhost" port = "local"
cveリストを取得する
脆弱性の判断をするための一覧をダウンロードします。次のコマンドでダウンロードできます。 -latestは最近、 -last2yは今から2年前までの一覧を取得します。
- go-cve-dictionary fetchjvn -last2y
- go-cve-dictionary fetchjvn -latest
go-cve-dictionary fetchjvn -last2yを実行してみます。
user@hoge:~$ go-cve-dictionary fetchjvn -last2y [Sep 2 17:56:45] INFO Fetching CVE information from JVN. [Sep 2 17:56:45] INFO Fetching... http://jvndb.jvn.jp/ja/rss/years/jvndb_2018.rdf [Sep 2 17:56:45] INFO Fetching... http://jvndb.jvn.jp/ja/rss/jvndb_new.rdf [Sep 2 17:56:45] INFO Fetching... http://jvndb.jvn.jp/ja/rss/jvndb.rdf [Sep 2 17:56:45] INFO Fetching... http://jvndb.jvn.jp/ja/rss/years/jvndb_2017.rdf 4 / 4 [================================================================================================] 100.00% 9s [Sep 2 17:56:55] INFO Fetched 19563 CVEs [Sep 2 17:56:57] INFO Inserting JVN into DB (sqlite3). [Sep 2 17:56:57] INFO Inserting fetched CVEs... 19746 / 19746 [=====================================================================================] 100.00% 1m31s [Sep 2 17:58:29] INFO Refreshed 19317 Jvns.
cve.sqlite3がダウンロードされた、脆弱性の一覧です。
debian9のOVALを取得する
次のコマンドで取得することができます。
user@hoge:~$ goval-dictionary fetch-debian 9 INFO[09-02|18:15:13] Fetching... URL=https://www.debian.org/security/oval/oval-definitions-stretch.xml INFO[09-02|18:15:18] Finished to fetch OVAL definitions. INFO[09-02|18:15:22] Fetched URL=https://www.debian.org/security/oval/oval-definitions-stretch.xml OVAL definitions=18007 INFO[09-02|18:15:23] Refreshing... Family=debian Version=9
システムをスキャンする。
次のコマンドで脆弱性のスキャンができます。
user@hoge:~$ vuls scan [Sep 2 18:02:21] INFO [localhost] Start scanning [Sep 2 18:02:21] INFO [localhost] config: /home/user/config.toml [Sep 2 18:02:21] INFO [localhost] Validating config... [Sep 2 18:02:21] INFO [localhost] Detecting Server/Container OS... [Sep 2 18:02:21] INFO [localhost] Detecting OS of servers... [Sep 2 18:02:21] INFO [localhost] (1/1) Detected: localhost: debian 9.5 [Sep 2 18:02:21] INFO [localhost] Detecting OS of containers... [Sep 2 18:02:21] INFO [localhost] Detecting Platforms... [Sep 2 18:02:32] INFO [localhost] (1/1) localhost is running on other [Sep 2 18:02:32] INFO [localhost] Scanning vulnerabilities... [Sep 2 18:02:32] INFO [localhost] Scanning vulnerable OS packages... [Sep 2 18:02:32] INFO [localhost] apt-get update... One Line Summary ================ localhost debian9.5 2122 installed, 0 updatable To view the detail, vuls tui is useful. To send a report, run vuls report -h.
スキャン結果を出力する
次のコマンドを実行します
user@hoge:~$ vuls report [Sep 2 18:16:14] INFO [localhost] Validating config... [Sep 2 18:16:14] INFO [localhost] cve-dictionary: /home/user/cve.sqlite3 [Sep 2 18:16:14] INFO [localhost] oval-dictionary: /home/user/oval.sqlite3 [Sep 2 18:16:14] INFO [localhost] Loaded: /home/user/results/2018-09-02T18:02:32+09:00 [Sep 2 18:16:14] INFO [localhost] Fill CVE detailed information with OVAL DBUG[09-02|18:16:14] Opening DB. db=sqlite3 DBUG[09-02|18:16:14] Migrating DB. db=sqlite3 DBUG[09-02|18:16:14] Opening DB. db=sqlite3 DBUG[09-02|18:16:14] Migrating DB. db=sqlite3 [Sep 2 18:16:14] INFO [localhost] OVAL is fresh: debian 9.5 DBUG[09-02|18:16:14] Opening DB. db=sqlite3 DBUG[09-02|18:16:14] Migrating DB. db=sqlite3 [Sep 2 18:16:22] INFO [localhost] Fill CVE detailed information with CVE-DB localhost (debian9.5) ===================== Total: 0 (High:0 Medium:0 Low:0 ?:0) 2122 installed, 0 updatable No CVE-IDs are found in updatable packages. 2122 installed, 0 updatable
脆弱性はありませんでした。
まとめ
debian9に無いパッケージをインストールしましたが、うまく動かすことができました。ちなみにですが、アンインストールはaptでできます。
例
apt purge vuls
ディスカッション
コメント一覧
まだ、コメントがありません