任意のリポジトリのSecurity Advisoryから GHSA IDの一覧とAffected version,およびCVE IDが発行されている場合,CVE IDを取得する.
また,CVE IDが存在する場合,NVDからCVSS,およびCWE IDを取得し, 取得した結果をデータベースに保存する.
- Ubuntu 20.04
- python 3.8.10
- BeautifulSoup4
- sqlite3
GitHubからこのリポジトリをcloneする.
git clone https://github.com/siva0410/get_ghsa_tool.git
python3がインストールされていない場合,python3とpip3をインストール(Ubuntuの場合)
sudo apt install python3 python3-pip python3 --version # インストールできたか確認
BeautifulSoup4がインストールされていない場合,BeautifulSoup4をインストール
pip install BeautifulSoup4
sqlite3がインストールされていない場合,sqlite3をインストール
sudo apt install sqlite3 pip install pysqlite3
オプションの説明を参考に下記のコマンドを実行
python3 main.py -u owner_name -r repository_name
オプション一覧
オプション | 省略 | 説明 | |
---|---|---|---|
必須 | --owner owner_name | -u owner_name | GHSAを調査したいリポジトリの所有者を指定 |
必須 | --repository repository_name | -r repository_name | GHSAを調査したいリポジトリの名前を指定 |
database/repository_name.db
ファイルを作成
取得した結果を以下のテーブルに保存
ghsa table
ghsa_id | affected_version | cve_id |
---|---|---|
TEXT | TEXT | TEXT |
cve table
cve_id | cvss_v2 | cvss_v3 | cve_description |
---|---|---|---|
TEXT | REAL | REAL | TEXT |
cve_cwe table
cve_id | cwe_id |
---|---|
TEXT | TEXT |
cwe table
cwe_id | cwe_description |
---|---|
TEXT | TEXT |
下記のコマンドを入力
sqlite3 参照したいデータベースのファイル
sqlite3が起動したら,下記のsql文を参考にデータベースへアクセス
- ghsa idの一覧の取得
select ghsa_id from ghsa;
- ghsa idの個数の取得
select count(ghsa_id) from ghsa;
- 全てのデータを取得
select * from ghsa, cve, cve_cwe, cwe natural left outer join cve natural left outer join cve_cwe natural left outer join cwe;
.mode csv
.output output.csv -- 出力したいファイル名
-- csvファイルに出力するsql文
select * from ghsa natural left outer join cve natural left outer join cve_cwe natural left outer join cwe;
MIT License