見出し画像

日々の脆弱性情報をチェックするツール

私は毎日セキュリティニュース・脆弱性情報・流行しているマルウェアなどのチェックをしています。
この中でニュースは毎日記事として共有しています。
今回は脆弱性情報をチェックするのに使っている自作ツールを紹介したいです。

以下で公開しています。

このツールはNVD(National Vulnerability Database)の脆弱性情報を取得し、その中でHigh以上のものをOpenAIで内容を可読性を高めて出してくれるものです。
基本AWSベースで動くように作っていますが、他の環境でも使えるとは思います。(そのためには資格情報etc)のカスタマイズが必要ですが。

もし、同じように脆弱性情報をチェックしている方がいれば、参考になれば幸いです。

とはいえ、そこそこお金がかかりますので個人で取り組む方は要注意です。なんせ、脆弱性情報を出してるサービスは色々ありますし、SNSでも情報出てますからね。。(正直私も趣味で作った感がある)
でもどうせなら誰かの助けになると嬉しいな、という気持ちです。
では、以下からはREADMEの内容ですが、説明にもなってますのでご参照ください!


VulnChecker

NVDの情報をベースに、脆弱性情報を確認することを想定したものです。
このツールは実行時点から昨日の分を収集することにしていますが、必要に応じてカスタマイズして利用していただければと思います。
個人的な調査のために作っていますが、同じように脆弱性情報を収集する上で使いたい方は試してみていただければと思います。

目的

NVDの脆弱性情報から実行時点から昨日に更新された脆弱性を取得し、その内容をOpenAIで可読性を高めたツールです。

情報ソース

NVDの以下のAPIを使っています。

このAPIで以下の様に日付を指定して取得しています。以下は2024/04/05(JST)のデータを取得する例です。

使い方

全体として以下のようなイメージで動作・利用することを想定しています。(AWS利用想定)


利用イメージ

OpenAIでわかりやすくした結果は、CSVで保存されています。そのためExcelなどで見ることも可能ですが、Athenaの利用も可能になっています。(本リポジトリにあるathena_query_templatesはAthenaでデータベース作成や検索をするサンプルです)

CSVでの保存を行っていますので、その先は好きに分析・活用してください。

必要なもの

このツールはNVDから取得したデータのみ保存するモードと、OpenAIのAPIで必要情報の抽出も行わせるモードがあります。
設定ファイルにある、以下のオプションで切り替え可能です。

openai_parse:
  enable: true # falseにすればOpenAIとのアクセスはしない

初期設定

以下の様に使います。

  • ダウンロードし必要ライブラリのインストール

git clone https://github.com/proshiba/vulnchecker
cd vulnchecker
pip install -r requirements

私はLambda上で利用していますが、その場合はLayerとして以下の様に必要ライブラリを追加してください。


LambdaのLayer設定
  • 設定ファイル(config内のconfig.yaml_sample)をリネームしS3バケットなどの設定を実施(以下にあるyour_bucket_name_write_hereをバケット名に入れ替え)

    • 必要に応じて、その他の設定もカスタマイズしてください。

storage:
  type: s3
  s3:
    bucket: your_bucket_name_write_here
  • logger用の設定ファイルもリネーム

    • 必要に応じて、その他の設定もカスタマイズしてください。

  • OpenAIのAPI利用準備を行い、APIキーを取得

  • 取得したAPIキーを環境変数(OPENAI_API_KEY)として設定

これで準備は完了です。
main.pyを実行すれば動作します。lambdaであれば実行すればlambda_function.py経由で実行されます。

AWS以外で使いたいんだけど?

現状、boto3を使う上での認証設定などは組み込んでません。その辺りは追加開発が必要です。
参考: https://qiita.com/tsukamoto/items/00ec8ef7e9a4ce4fb0e9

Appendix

アウトプット

ざっくり以下のような情報が取得されます。これは2024/4/6のデータをベースにしています。


脆弱性情報のアウトプット

disclaimer: あくまでChatGPTベースのデータであり間違いがあることは想定しておいてください

どのくらいお金がかかるの?

AWS費用

このツールを使った場合、AWSでは以下の点で費用が掛かる可能性があります。

  • S3

    • リクエスト数

    • 保存データ数

  • Lambda

  • Athena

しかし、大したデータ量ではありませんので、これはそれほどお金はかからないと期待しています。

OpenAI費用

トークン数によって変わります。またトークン数はざっくり文章の長さに比例します。
このツールでは脆弱性の説明文をparseさせていますが、以下の設定でその長さを制限しています。
Note: デフォルトは1000です

  • config.yaml内の設定

openai_parse:
  omit_property:
    max_length: 1000
    use_which: both # head, tail, both

use_whichという設定がありますが、これは文章を省略する際に、どの個所を残すかを決めています。

  • head: 先頭を残します。(後略の形)

  • tail: 末尾を残します。(前略の形)

  • both: 先頭と末尾の両方を残します。(中略の形)

この前提で、2024年4月6日のデータを処理した場合の費用が以下です。

  • 対象脆弱整数: 23

  • 金額: $1.18

1日でこれですから、月額では$35.4です。
実際にはもっとデータ量の多い日がある可能性などを考慮しますと、$45ぐらいは見ておいた方がいいかもです。


OpenAIのAPI利用による金額/日

いいなと思ったら応援しよう!