NAME
NIST::NVD::Query - Query the NVD database
VERSION
Version 1.02.01
SYNOPSIS
Query vulnerability data in the NVD database
use NIST::NVD::Query;
# use convert_nvdcve to generate db files from the XML dumps at
# http://nvd.nist.gov/download.cfm
my( $path_to_db, $path_to_idx_cpe ) = @ARGV;
my $q = NIST::NVD::Query->new( store => $some_store,
%args
);
# Given a Common Platform Enumeration urn, returns a list of known
# CVE IDs
my $cve_id_list = $q->cve_for_cpe( cpe => 'cpe:/a:zaal:tgt:1.0.6' );
my @entry;
foreach my $cve_id ( @$cve_id_list ){
# Given a CVE ID, returns a CVE entry
my $entry = $q->cve( cve_id => $cve_id );
push( @entry, $entry );
print $entry->{'vuln:summary'};
}
SUBROUTINES/METHODS
new
Required arguments:
database: path to BDB database of NVD entries
idx_cpe: path to BDB database of mappings from CPE URNs to CVE IDs
Example
my $q = NIST::NVD::Query->new( database => $path_to_db,
idx_cpe => $path_to_idx_cpe,
);
Return Value
$q is an object reference of type NIST::NVD::Query
cve_for_cpe
Returns a list of CVE IDs for a given CPE URN.
Required argument
cpe: CPE URN Example:
'cpe:/a:zaal:tgt:1.0.6'
Return Value
Returns a reference to an array of CVE IDs. Example:
$cve_id_list = [
'CVE-1999-1587',
'CVE-1999-1588',
]
Example
my $cve_id_list = $q->cve_for_cpe( cpe => 'cpe:/a:zaal:tgt:1.0.6' );
get_websec_by_cpe
Required argument
cpe: CPE URN Example:
'cpe:/a:zaal:tgt:1.0.6'
Return Value
Returns a reference to a websec score object $result = { websec_results => [ { category => 'Other', score => int(rand 10), key => 'A0', }, { category => 'Injection', score => 9.34, key => 'A1', }, { category => 'Cross-Site Scripting (XSS)', score => 8.11, key => 'A2', }, { category => 'Broken Authentication and Session Management', score => 7, key => 'A3', }, { category => 'Insecure Direct Object References', score => 6, key => 'A4', }, { category => 'Cross-Site Request Forgery (CSRF)', score => 5, key => 'A5', }, { category => 'Security Misconfiguration', score => 4, key => 'A6', }, { category => 'Insecure Cryptographic Storage', score => 3, key => 'A7', }, { category => 'Failure to Restrict URL Access', score => 2, key => 'A8', }, { category => 'Insufficient Transport Layer Protection', score => 1, key => 'A9', }, { category => 'Unvalidated Redirects and Forwards', score => 0, key => 'A10', }, ] }
Example
my $result = $store->get_websec_by_cpe( 'cpe:/a:apache:tomcat:6.0.28' );
while( my $websec = shift( @{$result->{websec_results}} ) ){
print( "$websec->{key} - $websec->{category}: ".
"$websec->{score}\n" );
}
get_cwe_ids
$result = $self->get_cwe_ids();
while( my( $cwe_id, $cwe_pkey_id ) = each %$result ){
...
}
cwe_for_cpe
Returns a list of CWE IDs for a given CPE URN.
Required argument
cpe: CPE URN Example:
'cpe:/a:zaal:tgt:1.0.6'
Return Value
Returns a reference to an array of CWE IDs. Example:
$cwe_id_list = [
'CWE-1999-1587',
'CWE-1999-1588',
]
Example
my $cwe_id_list = $q->cwe_for_cpe( cpe => 'cpe:/a:zaal:tgt:1.0.6' );
cve
Returns a CVE for a given CPE URN.
Example
my $nvd_cve_entry = $q->cve( cve_id => 'CVE-1999-1587' );
Required argument
cve_id: CPE URN Example:
'CVE-1999-1587'
Return Value
Returns a reference to a hash representing a CVE entry:
my $nvd_cve_entry = {
'vuln:vulnerable-configuration' => [ ... ],
'vuln:vulnerable-software-list' => [ ... ],
'vuln:cve-id' => 'CVE-1999-1587',
'vuln:discovered-datetime' => '...',
'vuln:published-datetime' => '...',
'vuln:last-modified-datetime' => '...',
'vuln:cvss' => {...},
'vuln:cwe' => 'CWE-ID',
'vuln:references' => [
{
attr => {...},
'vuln:references' => [ {...}, ... ],
'vuln:source' => ...,
},
...
],
'vuln:summary' => ...,
'vuln:security-protection' => ...,
'vuln:assessment_check' => {
'check0 name' => 'check0 value',
...,
},
'vuln:scanner', => [ {
'vuln:definition' => {
'vuln attr0 name' => 'vuln attr0 value',
...,
}
}, ..., ],
};
cwe
Returns a CWE for a given CPE URN.
AUTHOR
C.J. Collier, <cjac at google.com>
LICENSE AND COPYRIGHT
Copyright (C) 2012 C.J. Adams-Collier Copyright (C) 2011,2012 F5 Networks, Inc Copyright (C) 2013 Washington State Guard Association Copyright (C) 2022 Google, LLC
CVE(r) and CWE(tm) are marks of The MITRE Corporation and used here with permission. The information in CVE and CWE are copyright of The MITRE Corporation and also used here with permission.
Please include links for CVE(r) <http://cve.mitre.org/> and CWE(tm) <http://cwe.mitre.org/> in all reproductions of these materials.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.