Red Hat Security Data API

Red Hat Security Data API 1.0

API ドキュメント

Red Hat Product Security

概要

Red Hat Security Data API は、特定のパラメーターを指定してセキュリティーデータにクエリーを行い、CSAF、CVE、および OVAL データを簡単に取得するためのエンドポイントのリストを公開します。

第1章 概要

Red Hat Product Security チームは、お客様がセキュリティーの脅威をより深く理解できるように、ツールやセキュリティーデータの提供に取り組んでいます。このようなデータは セキュリティーデータ ページで提供されてきましたが、今後は Security Data API を使用して、マシンで利用できる形式での提供も開始します。お客様は、このツールを使用することで、プログラム的に API にクエリーを実行して、これまではセキュリティーデータページのファイルからしか公開されていなかったデータを入手できるようになります。

セキュリティーデータ API によって提供されるデータは、セキュリティーデータページ (Common Security Advisory Framework (CSAF) ドキュメント、OVAL v2 (OVAL ストリーム)、および CVE データ) にあるデータと同じです。API を使用して、JSON または XML 形式でデータを取得できます。

こちらの作業は、お客様に使いやすい形式でセキュリティーデータを提供するために Red Hat Product Security チームが行っている取り組みの一部です。

注記: 保守のあるバージョンは 1 つだけで、変更点に関してはすべてドキュメントに記載される予定です。

Security Data API は、情報や計測用に提供されています。API または、API が提供するデータに関する質問や懸念については、Red Hat Product Security にお問い合わせください。

ベース URL

https://access.redhat.com/hydra/rest/securitydata

サポート対象の形式

この API は JSON、XML、および HTML 形式をサポートします。形式については、.json または .xml などの URL への拡張として指定できます。

非推奨のお知らせ

Common Vulnerability Reporting Framework (CVRF) 形式は非推奨となり、サポートされなくなりました。CVRF の互換性 FAQ を参照してください。この形式のユーザーは、Common Security Advisory Framework (CSAF) 形式に移行する必要があります。

OVAL v1 ファイルは非推奨となり、使用できなくなりました。詳細は 、OVAL v1 の非推奨のお知らせを 参照してください。この形式のユーザーは、OVAL v2 (OVAL ストリーム) に移行する必要があります。

第2章 CSAF

2.1. 全 CSAF の一覧表示

概要

パラメーターが指定されていない場合に、コンテンツの概要と合わせて、最新の全 CSAF ドキュメントへのインデックスを提供します。最小限の属性を含めて、便利なオブジェクトを応答として返します。

注記

Red Hat Errata (RHSA、RHBA、および RHEA) の詳細は、Explaining Red Hat Errata を参照してください。

JSON

GET /csaf.json

XML

GET /csaf.xml

HTML

GET /csaf

2.2. パラメーター

名前説明

before

クエリーの日付より前の CSAF ドキュメントのインデックス [ISO 8601 が想定される形式です]

2016-03-01

after

クエリーの日付以降の CSAF ドキュメントのインデックス [ISO 8601 が想定される形式です]

2016-02-01

rhsa_ids

指定した RHSA_ID (コンマ区切り) の CSAF ドキュメントのインデックス

RHSA-2018:2748,RHSA-2018:2791

bug

Bugzilla Id の CSAF ドキュメントのインデックス

1326598,1084875

cve

指定した CVE の CSAF ドキュメントのインデックス

CVE-2014-0160,CVE-2016-3990

severity

指定した重大度の CSAF ドキュメントのインデックス

low,moderate,important,critical

package

パッケージに影響する CSAF ドキュメントのインデックス

samba,thunderbird

page

指定したページ数の CSAF ドキュメントのインデックス

デフォルト: 1

per_page

1 ページで返す CSAF ドキュメントのインデックス数

デフォルト: 1000

created_days_ago

指定した日数より前に作成された CSAF ドキュメントのインデックス

10

By default, search will return the first page of 1000 results, ordered by date. To change the page size use the 'per_page' param, and then iterate through pages using the 'page' param.
注記

上記のクエリーパラメーターはすべて、必要な結果を取得するために相互に組み合わせて使用できます。

2.3. CSAF の取得

概要

RHSA に関する CSAF の詳細です。

JSON

CSAF ドキュメントは JSON 形式です。XML ビューは、CSAF データを XML 形式で表現したものです。

GET /csaf/<RHSA_ID>.json

XML

GET /csaf/<RHSA_ID>.xml

注記:

Common Security Advisory Framework (CSAF) の JSON 形式は OASIS によって定義されています。GitHub リポジトリーについては ここ を、スキーマについては ここ を参照してください。

Red Hat が提供する CSAF/VEX データの詳細は、https://www.redhat.com/en/blog/csaf-vex-documents-now-generally-availableを参照してください。

クエリー URL のサンプル

https://access.redhat.com/hydra/rest/securitydata/securitydata/csaf
https://access.redhat.com/hydra/rest/securitydata/securitydata/csaf.xml
https://access.redhat.com/hydra/rest/securitydata/securitydata/csaf.json

https://access.redhat.com/hydra/rest/securitydata/csaf.json?after=2023-09-01
https://access.redhat.com/hydra/rest/securitydata/csaf.json?created_days_ago=10
https://access.redhat.com/hydra/rest/securitydata/csaf.json?cve=CVE-2023-1829,CVE-2023-3090,CVE-2023-3390
https://access.redhat.com/hydra/rest/securitydata/csaf.json?rhsa_ids=RHSA-2022:6155,RHSA-2023:2378
https://access.redhat.com/hydra/rest/securitydata/csaf.json?bug=2053532,2153399
https://access.redhat.com/hydra/rest/securitydata/csaf.json?severity=important&created_days_ago=30
https://access.redhat.com/hydra/rest/securitydata/csaf.json?package=thunderbird

https://access.redhat.com/hydra/rest/securitydata/csaf/RHSA-2022:6155
https://access.redhat.com/hydra/rest/securitydata/csaf/RHSA-2022:6155.xml
https://access.redhat.com/hydra/rest/securitydata/csaf/RHSA-2022:6155.json

第3章 CVE

3.1. 全 CVE のリスト表示

概要

パラメーターが指定されていない場合には、最近の CVE をすべてリスト表示します。応答として、最小限の属性を含めて、便利なオブジェクトを返します。

JSON

GET /cve.json

XML

GET /cve.xml

HTML

GET /cve

3.2. パラメーター

名前説明

before

クエリーの日付より前の CVE [ISO 8601 が想定される形式です]

2016-03-01

after

クエリーの日付以降の CVE [ISO 8601 が想定される形式です]

2016-02-01

ids

指定した ID (コンマ区切り) の CVE

CVE-2017-8797,CVE-2014-0161

bug

Bugzilla Id の CVE

1326598,1084875

advisory

アドバイザリーの CVE

RHSA-2016:0614,RHSA-2016:0610

severity

重大度の CVE

low,moderate,important

package

パッケージに影響する CVE

samba,thunderbird

product

製品に影響する CVE。このパラメーターは、Perl と互換性のある正規表現をサポートします。

Linux 7,openstack

cwe

CWE を含む CVE

295,300

cvss_score

CVSS スコアがこの値以上の CVE

7.0

cvss3_score

CVSSv3 スコアがこの値以上の CVE

7.0

page

指定のページ番号に含まれる CVE

デフォルト: 1

per_page

ページごとに返す CVE の数

デフォルト: 1000

created_days_ago

指定した日数より前に作成された CVE 定義のインデックス

10

include_package_state

package_state 情報のある CVE

true, false

By default, search will return the first page of 1000 results, ordered by date. To change the page size use the 'per_page' param, and then iterate through pages using the 'page' param.
注記

上記のクエリーパラメーターはすべて、必要な結果を取得するために相互に組み合わせて使用できます。

3.3. CVE の取得

概要

CVE の全詳細を取得します。

パス

GET /cve/<CVE>.json

例: /cve/CVE-2016-3706.json

CVE-2016-3706 の CVE データを JSON 表現で返します。

3.4. CVE 形式

概要

CSAF や OVAL とは異なり、CVE 表現は標準ではありません。次に、存在する可能性のあるフィールド、その意味について説明します。

名前説明追加情報

ThreatSeverity

不具合の重大度。

詳細は、本書 を参照してください。

PublicDate

不具合が公開されたタイミング。

ISO 8601 形式。

Bugzilla

Red Hat の Bugzilla のバグの ID、URL、および説明。

 

CVSS

CVSSv2 スコアおよびメトリック。

'status' 属性の許容値は draft または verified です。これは、不具合の調査の進捗を表します。詳細は、本書 を参照してください。

CVSS3

CVSSv3 スコアおよびメトリック。

'status' 属性の許容値は draft または verified です。これは、不具合の調査の進捗を表します。詳細は、本書 を参照してください。

CWE

この不具合の CWE チェーン。

mitre.org の説明と possible cwe values のリストを参照してください。

Details

不具合の詳細 (情報源は Red Hat または Mitre など)。

 

Statement

この問題についての Red Hat からの説明。

 

References

問題に関する詳細情報へのリンク。

 

Acknowledgements

謝辞を送る人または組織。

 

Mitigation

ソフトウェアを更新せずに問題を修正または軽減する方法。

 

AffectedRelease

特定の製品の不具合を修正するための、リリース済みのエラータ。

製品名と CPE、および エラータのリンク、タイプ、リリース日が含まれます。オプションとして、問題を修正する src.rpm の名前およびバージョンが記載されたパッケージ情報が含まれます (複数の src.rpms が同じエンティティーにある場合はこれはありません)。

PackageState

現在修正がまだリリースされていないパッケージ/製品に関する情報

プロダクト名と CPE、パッケージ (src.rpm) 名、および修正の状態が含まれます。これは ['Affected','Fix deferred','New','Not affected','Will not fix'] のいずれかです。

UpstreamFix

不具合を修正するアップストリームプロジェクトのバージョン。

 

第4章 OVALSTREAMS

4.1. OVAL ストリームの一覧表示

概要

ダウンロードできるすべての OVAL ストリームファイルのインデックスを提供します。パラメーターが渡されない場合は、すべての OVAL ストリームファイルのリストを返します。

JSON

GET oval/ovalstreams.json

XML

GET oval/ovalstreams.xml

HTML

GET oval/ovalstreams

4.2. パラメーター

名前説明

after

クエリー日以降に変更した OVAL ストリームファイルのインデックス。想定される形式は ISO 8601 です。

2016-02-01

label

製品バージョンラベルの OVAL ストリームファイルのインデックス。

jboss-eap-6

By default, returned results are ordered by date.
注記

上記のクエリーパラメーターはすべて、必要な結果を取得するために相互に組み合わせて使用できます。

4.3. OVAL ストリームの取得

概要

ベース名で識別される製品の OVAL ストリームデータを返します。

JSON

OVAL ストリームファイルは XML 形式で、JSON ビューは JSON 形式の OVAL データ表現です。

GET oval/ovalstreams/<BASE>.json

例: oval/ovalstreams/RHEL7.json

Red Hat Enterprise Linux 7 の OVAL ストリームの JSON 表現を返します。

XML

GET oval/ovalstreams/<BASE>.xml
注記

OVAL 形式の詳細は FAQ を参照してください。

第5章 スクリプトの例

#!/usr/bin/env python

import sys
import requests
from datetime import datetime, timedelta

API_HOST = 'https://access.redhat.com/hydra/rest/securitydata'

PROXIES = {}

# uncomment lines below to specify proxy server
# HTTPS_PROXY = "http://yourproxy.example.com:8000"
# PROXIES = { "https" : HTTPS_PROXY }

def get_data(query):

    full_query = API_HOST + query
    r = requests.get(full_query, proxies=PROXIES)

    if r.status_code != 200:
        print('ERROR: Invalid request; returned {} for the following '
              'query:\n{}'.format(r.status_code, full_query))
        sys.exit(1)

    if not r.json():
        print('No data returned with the following query:')
        print(full_query)
        sys.exit(0)

    return r.json()


# Get a list of issues and their impacts for RHSA-2022:1988
endpoint = '/cve.json'
params = 'advisory=RHSA-2022:1988'

data = get_data(endpoint + '?' + params)

for cve in data:
    print(cve['CVE'], cve['severity'])


print('-----')
# Get a list of kernel advisories for the last 30 days and display the
# packages that they provided.
endpoint = '/csaf.json'
date = datetime.now() - timedelta(days=30)
params = 'package=kernel&after=' + str(date.date())

data = get_data(endpoint + '?' + params)

kernel_advisories = []
for advisory in data:
    print(advisory['RHSA'], advisory['severity'], advisory['released_on'])
    print('-', '\n- '.join(advisory['released_packages']))
    kernel_advisories.append(advisory['RHSA'])


print('-----')
# From the list of advisories saved in the previous example (as
# `kernel_advisories`), get a list of affected products for each advisory.
endpoint = '/csaf/'

for advisory in kernel_advisories:
    data = get_data(endpoint + advisory + '.json')
    print(advisory)

    for product_branch in data['product_tree']['branches']:
        for inner_branch in product_branch['branches'][0]['branches']:
            print('-', inner_branch['name'])

法律上の通知

Security Data API でアクセス可能なデータは、Creative Commons Attribution 4.0 International License でライセンスされます。If you distribute this content, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original.