From 7394833f803e90ddafbc5c99acc86c28314f9a0a Mon Sep 17 00:00:00 2001 From: root Date: Tue, 5 Jan 2016 23:51:54 +0100 Subject: [PATCH] Adding CVE vulneralities list generation --- .gitignore | 2 ++ build/mysqltuner.spec.tpl | 3 ++- build/updateCVElist.pl | 39 ++++++++++++++++++++++++++++++--------- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 7f46c04..e05e355 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ build/mysqltuner-* build/mysqltuner.spec build/build.log +build/cve* +build/vulnerabilities* diff --git a/build/mysqltuner.spec.tpl b/build/mysqltuner.spec.tpl index 75ab0f0..9401a1f 100644 --- a/build/mysqltuner.spec.tpl +++ b/build/mysqltuner.spec.tpl @@ -33,6 +33,7 @@ install -p %{name}.pl $RPM_BUILD_ROOT%{_bindir}/%{name} install -d $RPM_BUILD_ROOT%{_datarootdir}/%{name} install -p LICENSE $RPM_BUILD_ROOT%{_datarootdir}/%{name} install -p basic_passwords.txt $RPM_BUILD_ROOT%{_datarootdir}/%{name} +install -p vulnerabilities.csv $RPM_BUILD_ROOT%{_datarootdir}/%{name} install -p %{name}.1.gz $RPM_BUILD_ROOT/%{_mandir}/man1 %clean @@ -45,6 +46,6 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/* %changelog -* Thu Jun 18 2015 Jean-Marie RENOUARD %VERSION%-1 +* Tue Jan 05 2015 Jean-Marie RENOUARD %VERSION%-1 - Initial RPM release diff --git a/build/updateCVElist.pl b/build/updateCVElist.pl index 3f28124..6918e94 100644 --- a/build/updateCVElist.pl +++ b/build/updateCVElist.pl @@ -3,6 +3,8 @@ use warnings; use strict; use WWW::Mechanize::GZip; use File::Util; +use Data::Dumper; +use List::MoreUtils qw(uniq); my $verbose; sub AUTOLOAD { use vars qw($AUTOLOAD); @@ -36,19 +38,38 @@ $mech->add_handler("response_redirect" => sub { print '#'x80,"\nREDIRECT RESPONS my $url = 'http://cve.mitre.org/data/downloads/allitems.csv'; -my $resp=$mech->get($url); +my $resp; -unlink 'cve.cvs' if -f 'cve.csv'; -$mech->save_content( "cve.csv" ); +unless (-f 'cve.csv') +{ + $resp=$mech->get($url); + $mech->save_content( "cve.csv" ); +} my $f=File::Util->new('readlimit' => 100000000, 'use_flock'=>'false'); my(@lines) = $f->load_file('cve.csv', '--as-lines'); - -unlink 'vulnerability.csv' if -f 'vulnerability.csv'; +my @versions; +my $temp; +unlink 'vulnerabilities.csv' if -f 'vulnerabilities.csv'; foreach my $line (@lines) { - if ($line =~ /(mysql|mariadb)/i and $line =~ /server/i) { - $f->write_file('file' => 'vulnerability.csv', 'content' => "$line\n", 'mode' => 'append'); + if ($line =~ /(mysql|mariadb)/i + and $line =~ /server/i + and $line =~ /CANDIDATE/i + and $line !~ /MaxDB/i + and $line !~ /\*\* REJECT \*\* /i + and $line !~ /\*\* DISPUTED \*\* /i + and $line !~ /(Radius|Proofpoint|Active\ Record|XAMPP|TGS\ Content|e107|post-installation|Apache\ HTTP|Zmanda|pforum|phpMyAdmin|Proxy\ Server|on\ Windows|ADOdb|Mac\ OS|Dreamweaver|InterWorx|libapache2|cisco|ProFTPD)/i) { + $line =~ s/,/;/g; + + @versions = $line =~/(\d{1,2}\.\d+\.[\d|x]+)/g; + + foreach my $vers (uniq(@versions)) { + my @nb=split('\.', $vers); + #print $vers."\n".Dumper @nb; + #exit 0; + $f->write_file('file' => 'vulnerabilities.csv', 'content' => "$vers;$nb[0];$nb[1];$nb[2];$line\n", 'mode' => 'append'); + } } } -unlink 'cve.cvs' if -f 'cve.csv'; -exit(0); + +exit(0); \ No newline at end of file