More than 5 years have passed since last update.
Cisco PSIRT OpenVuln API を使ってみる
はじめに
シスコは サポート 契約のあるパートナーや、ユーザーが利用可能な Support APIを公開しています。
Cisco Support APIs
Cisco Support APIは、受発注に関わるものや、サポートに関わるものなど多く存在しますが、今回は、シスコアカウントがあれば、手軽に使える Cisco PSIRT OpenVuln APIを使ってみます。
Cisco PSIRT OpenVuln とは
OpenVuln API は簡単に言うと、Cisco PSIRT(Product Security Incident Response Team) の情報、脆弱性情報を REST API を使って、様々なフォーマットで、効率的に取得できる API です。
これを使うと、REST APIで、特定のIOS version の脆弱性情報や、セキュリティアドバイザリの詳細などを取得することができます。
アカウントセットアップ
まず、Cisco Support API を利用する場合は、 https://apiconsole.cisco.com へアクセスし、APIを有効にする必要があります。
手順
- https://apiconsole.cisco.com へアクセスし Cisco.com アカウントでログイン
- My Apps & Keys タブをクリック
- Register an Application で、アプリケーション名など必要事項を記入(赤枠の部分を埋めます)し、登録
そうすることで、API 利用に必要な KEY と SECRET が発行されます
👁 apiconsole.png
Python モジュール openVulnQuery を使う
アカウントの設定が完了すれば、 REST API で情報取得ができます。
今回は、コマンドラインツールとしても使える、openVulnQuery が便利なので、これを使ってみます。
GitHub - CiscoPSIRT/openVulnQuery: A Python-based client for the Cisco openVuln API
インストール & セットアップ
Pip でインストールをするだけです。
pip install openVulnQuery
私の環境では、下記の通り PATH を通ってないよとエラーが出たのでコマンドラインツールとして利用するために、 .bash_profile に PATHを追加
WARNING: The script chardetect is installed in '/Users/USER_ID/Library/Python/3.8/bin' which is not on PATH.
:
export PATH="/Users/USER_ID/Library/Python/3.8/bin:$PATH"
:
openVulnQuery を使うためには、環境変数で、KEY と Secret を渡すか、もしくは、json 形式のファイルに KEY と Secret を記載して、オプションで渡すことで APIにアクセスをします。
- 環境変数で渡す場合
$export CLIENT_ID="xxxxxxx"
$export CLIENT_SECRET="yyyyyyy"
- JSON形式のファイルで渡す場合
下記の形式の credential 用のファイルを、一つ作成します。
{
"CLIENT_ID": "xxxxxxx",
"CLIENT_SECRET": "yyyyyyyy"
}
openVulnQuery の使い方
openVlunQuery に、credential file を --config で指定して、実行すれば、データが取得できます。
$ openVulnQuery -h
usage: openVulnQuery [-h]
(--all | --advisory <advisory-id> | --cve <CVE-id> | --latest number | --severity [critical, high, medium, low] | --year year | --product product_name | --ios_xe iosxe_version | --ios ios_version | --nxos nxos_version | --aci aci_version)
[--csv filepath | --json filepath] [--first_published YYYY-MM-DD:YYYY-MM-DD | --last_published YYYY-MM-DD:YYYY-MM-DD] [-c] [-f [...]] [--user-agent string]
[--config filepath]
例1) IOS-XE version 16.2.2 に該当するセキュリティアドバイザリIDとタイトルを一覧表示
openVulnQuery --ios_xe 16.2.2 -f advisory_id advisory_title
例2) CVE ID "CVE-2010-3043" で セキュリティアドバイザリの内容を確認
openVulnQuery --cve CVE-2010-3043
例3) 2020年にリリースされた Security Impact Rating (sir) が Critical な PSIRT の数を調べる
openVulnQuery --year 2020 -f sir | grep -c "Critical"
まとめ
このような形で 必要な PSIRT の情報を入手することができます。
運用中の多くのネットワーク機器の脆弱性情報を API を使うことで、まとめて取得できるため、活用いただけるシーンは多いのではないかと思います。今回は、コマンドラインでの例を中心に記載しましたが、Python ライブラリとしてプログラムの中に組み込むことで、より効率的な情報収集や、その他アプリケーションとの連携が可能です
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
