はじめまして。シンキングリードでアルバイトとして働いている大学生のMです。今回私がVulsのログファイルの変換ツールを作成しましたので紹介させて頂こうと思います。
※Githubへのリンクは下に記載してあります。
Vulsとは
Vuls(VULnerability Scanner)は一般に公開された脆弱性情報データベースから収集した情報をもとに、自動で任意のサーバーの抱える脆弱性を診断することができるオープンソースソフトウェアです。Vulsの収集した情報はコマンドラインはもちろん、vulsrepoを用いてブラウザ上で確認できる他、JSON形式のlogファイルとして 参照することもできます。
Vulsの吐き出すログ
脆弱性情報が報告されると CVE(共通脆弱性識別子) という共通番号をつけられ、JVNやNVDといった脆弱性情報データベースに登録されます。Vulsは一つの脆弱性情報のCVEに対し複数のデータベースに該当情報を参照し出力します。このときファイル内で複雑な入れ子構造になり一覧での参照を困難としています。旧バージョンのvulsではこれを分析するツールがあったようですが、新しいバージョンのvulsでは脆弱性情報のカラムが変更となり使用できなくなっていました。そこで、今回私が JSON形式のログをCSVに変換することで脆弱性情報を手軽にExcelで参照できるようにツールを作成しました。
Python
特に必要なライブラリがあったわけではないので別にPythonの必要はなかったのですが、私が現在Pythonを勉強中なので今回のツールはPythonで書きました。
JSONから情報の取り出し
PythonでJSONモジュールをimportし、JSONファイルを読み込むと自動的に辞書型に変換されます。基本的にはこの辞書型内部をfor文で回すことで必要な情報を取り出しています。ただ内部には不要な情報や文字列操作が必要な情報もあるのでif文などで分岐させ処理し配列に保存し、適宜CSVに書き込みます。
ソースコードは以下のレポジトリに公開しました。
ライセンスはMITです。
https://github.com/thinkingreed-inc/vuls2csv
感想
今回のツールは私がほとんど初めて作った実用的な(参考書の内容をちょっと書き換えるようなものでない)プログラムでした。目的としたこと(ログの整形)は達成できましたがコード自体はネストが多かったり、変数がわかりにくかったりとまだまだ改善点が多いと感じます。The Zen of Pythonを心がけ、これからも勉強していきたいと思います。