NAME

NIST::NVD::Query - Query the NVD database

VERSION

Version 0.09

SYNOPSIS

This module allows you to look up vulnerability data from the NVD database

use NIST::NVD::Query;

# use convert_nvdcve to generate these 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'};
}

EXPORT

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,
                              );

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' );

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' );

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'
								   ... } } ],
    };

cve

Returns a CVE for a given CPE URN.

cwe

Returns a CWE for a given CPE URN.

AUTHOR

C.J. Adams-Collier, <cjac at f5.com>

BUGS

Please report any bugs or feature requests to bug-nist-nvd at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=NIST-NVD. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc NIST::NVD::Query

You can also look for information at:

ACKNOWLEDGEMENTS

LICENSE AND COPYRIGHT

Copyright 2011, 2012 F5 Networks, Inc.

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.