Guest User

NVD Json parser (sloppy edition)

a guest
Sep 14th, 2020
85
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // downloaded json file from https://nvd.nist.gov/vuln/data-feeds#JSON_FEED - ran on webserver with a jquery pull for easy make, open on webserver and take a peak at the console
  2. var data = [];
  3. $(document).ready(function() {
  4.     $.getJSON("nvdcve-1.1-2020.json", function(json) {
  5.         data = json.CVE_Items;
  6.        
  7.         // win, lin, mac os x, and, intel, oracle
  8.         var names = ["Windows", "Linux / Linux-Based", "Apple (Desktop & Mobile)", "Android", "Intel", "Oracle", "VMWare", "Palo Alto Networks"];
  9.         var count = [0,0,0,0,0,0,0,0];
  10.         var has = [false,false,false,false,false,false,false,false];
  11.         var impactscore = 0.0;
  12.         for (var i = 0; i < data.length; i++) {
  13.             try {
  14.                 if(data[i].impact.baseMetricV3.cvssV3.baseSeverity === "HIGH") {
  15.                     var cpes = data[i].configurations.nodes["0"].cpe_match;
  16.                     has = [false,false,false,false,false];
  17.                     var oneos = false;
  18.                     // must involve an os
  19.                     for(var j = 0; j < cpes.length; j++) {
  20.                         var uriparts = cpes[j].cpe23Uri.toLowerCase().split(':');
  21.                         if (uriparts[2] === "o")
  22.                             cpes[j].isOS = true;
  23.                         else
  24.                             cpes[j].isOS = false;
  25.                     }
  26.                    
  27.                     for(var j = 0; j < cpes.length; j++) {
  28.                         var cpe = cpes[j]
  29.                         if(cpe.isOS) {
  30.                             if(cpe.vulnerable === true) {
  31.                                 var uri = cpe.cpe23Uri.toLowerCase();
  32.                                 if(uri.includes('windows') ||
  33.                                    uri.includes('azure')) {
  34.                                     has[0] = true;
  35.                                 }
  36.                                 if(uri.includes('linux') ||
  37.                                     uri.includes('fedora') ||
  38.                                     uri.includes('ubuntu') ||
  39.                                     uri.includes('debian') ||
  40.                                     uri.includes('redhat') ||
  41.                                     uri.includes('zephyr') ||
  42.                                     uri.includes('freebsd') ||
  43.                                     uri.includes('xen') ||
  44.                                     uri.includes('sane_backends') ||
  45.                                     uri.includes('rangeeos') ||
  46.                                     uri.includes('opensuse')) {
  47.                                     has[1] = true;
  48.                                 }
  49.                                 if(uri.includes('mac_os_x') ||
  50.                                     uri.includes('iphone') ||
  51.                                     uri.includes('ipad') ||
  52.                                     uri.includes('ios') ||
  53.                                     uri.includes('watchos')) {
  54.                                     has[2] = true;
  55.                                 }
  56.                                 if(uri.includes('android') ||
  57.                                     uri.includes('coloros')) {
  58.                                     has[3] = true;
  59.                                 }
  60.                                 if(uri.includes('intel')) {
  61.                                     has[4] = true;
  62.                                 }
  63.                                 if(uri.includes('oracle')) {
  64.                                     has[5] = true;
  65.                                 }
  66.                                 if(uri.includes('vmware')) {
  67.                                     has[6] = true;
  68.                                 }
  69.                                 if(uri.includes('pan-os')) {
  70.                                     has[7] = true;
  71.                                 }
  72.                             }
  73.                             oneos = true;
  74.                         }
  75.                     }
  76.                     if(oneos) {
  77.                         for(var j = 0; j < 8; j++) {
  78.                             if(has[j]) {
  79.                                 count[j]++;
  80.                             }
  81.                         }
  82.                     }
  83.                 }
  84.             } catch(e) {}
  85.         }
  86.         for(var i = 0; i < names.length; i++) {
  87.             console.log(names[i] + ": " + count[i] + "\n");
  88.         }
  89.     });
  90. });
  91.  
RAW Paste Data