VOOZH about

URL: https://qiita.com/shogokatsurada/items/ed945e6f20026a780ee2

⇱ Cisco PSIRT OpenVuln API を使ってみる #Python - Qiita


👁 Image
24

Go to list of users who liked

0

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

More than 5 years have passed since last update.

@shogokatsurada

Cisco PSIRT OpenVuln API を使ってみる

24
Last updated at Posted at 2020-11-30

はじめに

シスコは サポート 契約のあるパートナーや、ユーザーが利用可能な 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 です。

Cisco PSIRT OpenVuln

これを使うと、REST APIで、特定のIOS version の脆弱性情報や、セキュリティアドバイザリの詳細などを取得することができます。

アカウントセットアップ

まず、Cisco Support API を利用する場合は、 https://apiconsole.cisco.com へアクセスし、APIを有効にする必要があります。

手順

  1. https://apiconsole.cisco.com へアクセスし Cisco.com アカウントでログイン
  2. My Apps & Keys タブをクリック
  3. 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.

.bash_profile
 :
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 用のファイルを、一つ作成します。
credential.json
{
 "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 ライブラリとしてプログラムの中に組み込むことで、より効率的な情報収集や、その他アプリケーションとの連携が可能です

24

Go to list of users who liked

0
0

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24

Go to list of users who liked

0