web-dev-qa-db-ja.com

NVD:多くのCVEでCPEエントリが入力されていない場合に、誤検知なしでクエリを実行するにはどうすればよいですか?

したがって、私の素朴なアプローチは、使用するソフトウェア製品のCPE URIをNVDに問い合わせることでした。

残念ながら、多くのエントリにCPEエントリがないことに気づきました。 (たとえば、2016年には現在、CPE URIのない1332があります)。

つまり、これはキーワードに対してこれらをgrepする必要があることを意味します。

ソフトウェアXのすべてのCVEを取得する他の方法はありますか?

2
arved

次のようないくつかの例を提供しなかったため、CVEがCPEを提供しないという情報は、プラットフォームまたは特定のベンダーが提供するファイルに基づいてどこで入手できましたか。 NISTの(NVDCVE)ファイルから収集された情報はhttps://nvd.nist.gov/vuln/data-feedsでも同じであるため、Normal Vulnerability Database(NVD)データフィード(NISTがCVEDetails.comで提供するXML 2.0またはJSON形式)を使用していると思います。

あなたはCPEなしで1000以上のエントリがあると主張します:

$ ls -lh
total 96136
-rw-r--r--  1 test  test    44M Aug 18 03:25 nvdcve-2.0-2016.xml
-rw-r--r--  1 test  test   2.6M Aug 20 06:57 nvdcve-2.0-2016.xml.Zip
$ grep -c "\*\* REJECT \*\*" nvdcve-2.0-2016.xml
1106

疑問に思っているのに、なぜ「[〜#〜] reject [〜#〜]」というキーワードを使用したのですか。これが唯一の方法です。 CVEであり、CPEを見つけることができません。例えば:

$ grep -A5 "<entry id=\"CVE-2016-0001\">" nvdcve-2.0-2016.xml
  <entry id="CVE-2016-0001">
    <vuln:cve-id>CVE-2016-0001</vuln:cve-id>
    <vuln:published-datetime>2017-05-11T10:29:55.767-04:00</vuln:published-datetime>
    <vuln:last-modified-datetime>2017-05-11T10:29:55.767-04:00</vuln:last-modified-datetime>
    <vuln:summary>** REJECT **  DO NOT USE THIS CANDIDATE NUMBER. ConsultIDs: none. Reason: The CNA or individual who requested this candidate did not associate it with any vulnerability during 2016. Notes: none.</vuln:summary>
  </entry>

これが起こる理由、私はこの質問で説明しました: CVE製品名の分類

2
slayer