From 2d369d0cfe61ca06294b186eecb348104e9c98ae Mon Sep 17 00:00:00 2001 From: Kota Kanbe Date: Tue, 27 Apr 2021 20:38:45 +0900 Subject: [PATCH] Fix false positive for Oracle Linux (#1227) * fix(oracle): false-positive(handle arch of pkgs) * fix(oracle): false positive kernel-related CVEs * add a test case for ksplice1 * fix(scan): handle uek kernel for Oracle linux * fix(scan): hanlde uek kernel for reboot required * fix(oracle): false-positive for redis-backend --- GNUmakefile | 10 +- go.mod | 11 +- go.sum | 22 +- gost/gost.go | 1 + integration/data/oracle.json | 3031 ++++++++++++++++++++++++++++++++++ models/scanresults.go | 16 +- models/scanresults_test.go | 16 +- oval/redhat.go | 1 + oval/util.go | 12 +- oval/util_test.go | 39 + scanner/redhatbase.go | 14 +- scanner/redhatbase_test.go | 124 ++ scanner/utils.go | 2 +- 13 files changed, 3263 insertions(+), 36 deletions(-) create mode 100644 integration/data/oracle.json diff --git a/GNUmakefile b/GNUmakefile index 0dd3e4c7..bf909c4d 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -183,10 +183,14 @@ build-integration: make build mv -f ./vuls ./vuls.${prev} - git checkout ${branch} - git stash apply stash@\{0\} + # master + git checkout master + make build + mv -f ./vuls ./vuls.master # working tree + git checkout ${branch} + git stash apply stash@\{0\} make build # for integration testing, vuls.new and vuls.old needed. @@ -196,4 +200,4 @@ build-integration: # or # $ ln -s ./vuls.${prev} ./vuls.old # $ make int - # $ make int-redis \ No newline at end of file + # $ make int-redis diff --git a/go.mod b/go.mod index 8657a78c..2515275c 100644 --- a/go.mod +++ b/go.mod @@ -30,9 +30,9 @@ require ( github.com/knqyf263/gost v0.1.10 github.com/kotakanbe/go-cve-dictionary v0.5.12 github.com/kotakanbe/go-pingscanner v0.1.0 - github.com/kotakanbe/goval-dictionary v0.3.3 + github.com/kotakanbe/goval-dictionary v0.3.5 github.com/kotakanbe/logrus-prefixed-formatter v0.0.0-20180123152602-928f7356cb96 - github.com/lib/pq v1.10.0 // indirect + github.com/lib/pq v1.10.1 // indirect github.com/magiconair/properties v1.8.4 // indirect github.com/mattn/go-runewidth v0.0.12 // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect @@ -51,12 +51,11 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/takuzoo3868/go-msfdb v0.1.5 github.com/vulsio/go-exploitdb v0.1.7 - golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect + golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b // indirect golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 // indirect - golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c // indirect + golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 // indirect golang.org/x/oauth2 v0.0.0-20210125201302-af13f521f196 - golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 // indirect - golang.org/x/text v0.3.6 // indirect + golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 gopkg.in/ini.v1 v1.62.0 // indirect k8s.io/utils v0.0.0-20210111153108-fddb29f9d009 diff --git a/go.sum b/go.sum index e9e1cf10..bb0f843e 100644 --- a/go.sum +++ b/go.sum @@ -480,8 +480,8 @@ github.com/kotakanbe/go-cve-dictionary v0.5.12 h1:pJZsty83I/kSO5cmU24xWqeBYOrtiT github.com/kotakanbe/go-cve-dictionary v0.5.12/go.mod h1:E/CipfNDV31W39MH9QtgkA12JFBMe/3CELxXVvPRphQ= github.com/kotakanbe/go-pingscanner v0.1.0 h1:VG4/9l0i8WeToXclj7bIGoAZAu7a07Z3qmQiIfU0gT0= github.com/kotakanbe/go-pingscanner v0.1.0/go.mod h1:/761QZzuZFcfN8h/1QuawUA+pKukp3qcNj5mxJCOiAk= -github.com/kotakanbe/goval-dictionary v0.3.3 h1:b9o1ZPFGmk0WZV0nnk4mWl5vTKINequ+QVW6w9m+8RI= -github.com/kotakanbe/goval-dictionary v0.3.3/go.mod h1:69e5kFTZEAcT5Lqq8NRlKUjXm0ZNxvT8d3yS/iqFJjs= +github.com/kotakanbe/goval-dictionary v0.3.5 h1:PcQEOKBrjCLc+dte54b4FlFkIbbKJQ1Sv1ND4YmF+xM= +github.com/kotakanbe/goval-dictionary v0.3.5/go.mod h1:69e5kFTZEAcT5Lqq8NRlKUjXm0ZNxvT8d3yS/iqFJjs= github.com/kotakanbe/logrus-prefixed-formatter v0.0.0-20180123152602-928f7356cb96 h1:xNVK0mQJdQjw+QYeaMM4G6fvucWr8rTGGIhlPakx1wU= github.com/kotakanbe/logrus-prefixed-formatter v0.0.0-20180123152602-928f7356cb96/go.mod h1:ljq48H1V+0Vh0u7ucA3LjR4AfkAeCpxrf7LaaCk8Vmo= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -505,8 +505,8 @@ github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.0 h1:Zx5DJFEYQXio93kgXnQ09fXNiUKsqv4OUEu2UtGcB1E= -github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.1 h1:6VXZrLU0jHBYyAqrSPa+MgPfnSvTPuMgK+k0o5kVFWo= +github.com/lib/pq v1.10.1/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY= @@ -819,8 +819,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -903,8 +903,8 @@ golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c h1:KHUzaHIpjWVlVVNh65G3hhuj3KB1HnjY6Cq5cTvRQT8= -golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 h1:0PC75Fz/kyMGhL0e1QnypqK2kQMqKt9csD1GnMJR+Zk= +golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -983,9 +983,9 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 h1:F5Gozwx4I1xtr/sr/8CFbb57iKi3297KFs0QDbGN60A= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 h1:dXfMednGJh/SUUFjTLsWJz3P+TQt9qnR11GgeI3vWKs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= diff --git a/gost/gost.go b/gost/gost.go index ae59caf2..7caf4c45 100644 --- a/gost/gost.go +++ b/gost/gost.go @@ -29,6 +29,7 @@ type Base struct { DBDriver DBDriver } +// CloseDB close a DB connection func (b Base) CloseDB() error { if b.DBDriver.DB == nil { return nil diff --git a/integration/data/oracle.json b/integration/data/oracle.json new file mode 100644 index 00000000..210d15ef --- /dev/null +++ b/integration/data/oracle.json @@ -0,0 +1,3031 @@ +{ + "jsonVersion": 4, + "lang": "", + "serverUUID": "", + "serverName": "oracle", + "family": "oracle", + "release": "7.9", + "container": { + "containerID": "", + "name": "", + "image": "", + "type": "", + "uuid": "" + }, + "platform": { + "name": "aws", + "instanceID": "" + }, + "ipv4Addrs": [ + "192.168.0.221" + ], + "scannedAt": "2021-04-26T17:48:28.782669237+09:00", + "scanMode": "fast-root mode", + "scannedVersion": "v0.15.11", + "scannedRevision": "build-20210426_174218_8af2598", + "scannedBy": "dev", + "scannedVia": "remote", + "scannedIpv4Addrs": [ + "172.27.0.1" + ], + "reportedAt": "0001-01-01T00:00:00Z", + "reportedVersion": "", + "reportedRevision": "", + "reportedBy": "", + "errors": [], + "warnings": [], + "scannedCves": {}, + "runningKernel": { + "release": "5.4.17-2102.200.13.el7uek.x86_64", + "version": "", + "rebootRequired": false + }, + "packages": { + "GeoIP": { + "name": "GeoIP", + "version": "1.5.0", + "release": "14.el7", + "newVersion": "1.5.0", + "newRelease": "14.el7", + "arch": "x86_64", + "repository": "" + }, + "PyYAML": { + "name": "PyYAML", + "version": "3.10", + "release": "11.el7", + "newVersion": "3.10", + "newRelease": "11.el7", + "arch": "x86_64", + "repository": "" + }, + "acl": { + "name": "acl", + "version": "2.2.51", + "release": "15.el7", + "newVersion": "2.2.51", + "newRelease": "15.el7", + "arch": "x86_64", + "repository": "" + }, + "acpid": { + "name": "acpid", + "version": "2.0.19", + "release": "9.el7", + "newVersion": "2.0.19", + "newRelease": "9.el7", + "arch": "x86_64", + "repository": "" + }, + "audit-libs": { + "name": "audit-libs", + "version": "2.8.5", + "release": "4.el7", + "newVersion": "2.8.5", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "audit-libs-python": { + "name": "audit-libs-python", + "version": "2.8.5", + "release": "4.el7", + "newVersion": "2.8.5", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "authconfig": { + "name": "authconfig", + "version": "6.2.8", + "release": "30.el7", + "newVersion": "6.2.8", + "newRelease": "30.el7", + "arch": "x86_64", + "repository": "" + }, + "basesystem": { + "name": "basesystem", + "version": "10.0", + "release": "7.0.1.el7", + "newVersion": "10.0", + "newRelease": "7.0.1.el7", + "arch": "noarch", + "repository": "" + }, + "bash": { + "name": "bash", + "version": "4.2.46", + "release": "34.el7", + "newVersion": "4.2.46", + "newRelease": "34.el7", + "arch": "x86_64", + "repository": "" + }, + "bc": { + "name": "bc", + "version": "1.06.95", + "release": "13.el7", + "newVersion": "1.06.95", + "newRelease": "13.el7", + "arch": "x86_64", + "repository": "" + }, + "bind-export-libs": { + "name": "bind-export-libs", + "version": "32:9.11.4", + "release": "26.P2.el7_9.4", + "newVersion": "32:9.11.4", + "newRelease": "26.P2.el7_9.4", + "arch": "x86_64", + "repository": "" + }, + "bind-libs-lite": { + "name": "bind-libs-lite", + "version": "32:9.11.4", + "release": "26.P2.el7_9.4", + "newVersion": "32:9.11.4", + "newRelease": "26.P2.el7_9.4", + "arch": "x86_64", + "repository": "" + }, + "bind-license": { + "name": "bind-license", + "version": "32:9.11.4", + "release": "26.P2.el7_9.4", + "newVersion": "32:9.11.4", + "newRelease": "26.P2.el7_9.4", + "arch": "noarch", + "repository": "" + }, + "binutils": { + "name": "binutils", + "version": "2.27", + "release": "44.base.0.3.el7", + "newVersion": "2.27", + "newRelease": "44.base.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "btrfs-progs": { + "name": "btrfs-progs", + "version": "5.4.0", + "release": "1.el7", + "newVersion": "5.4.0", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "bzip2-libs": { + "name": "bzip2-libs", + "version": "1.0.6", + "release": "13.el7", + "newVersion": "1.0.6", + "newRelease": "13.el7", + "arch": "x86_64", + "repository": "" + }, + "ca-certificates": { + "name": "ca-certificates", + "version": "2020.2.41", + "release": "70.0.el7_8", + "newVersion": "2020.2.41", + "newRelease": "70.0.el7_8", + "arch": "noarch", + "repository": "" + }, + "checkpolicy": { + "name": "checkpolicy", + "version": "2.5", + "release": "8.el7", + "newVersion": "2.5", + "newRelease": "8.el7", + "arch": "x86_64", + "repository": "" + }, + "chkconfig": { + "name": "chkconfig", + "version": "1.7.6", + "release": "1.el7", + "newVersion": "1.7.6", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "chrony": { + "name": "chrony", + "version": "3.4", + "release": "1.0.1.el7", + "newVersion": "3.4", + "newRelease": "1.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "cloud-init": { + "name": "cloud-init", + "version": "19.4", + "release": "7.0.3.el7_9.4", + "newVersion": "19.4", + "newRelease": "7.0.3.el7_9.4", + "arch": "x86_64", + "repository": "" + }, + "cloud-utils-growpart": { + "name": "cloud-utils-growpart", + "version": "0.29", + "release": "5.el7", + "newVersion": "0.29", + "newRelease": "5.el7", + "arch": "noarch", + "repository": "" + }, + "coreutils": { + "name": "coreutils", + "version": "8.22", + "release": "24.0.1.el7_9.2", + "newVersion": "8.22", + "newRelease": "24.0.1.el7_9.2", + "arch": "x86_64", + "repository": "" + }, + "cpio": { + "name": "cpio", + "version": "2.11", + "release": "28.el7", + "newVersion": "2.11", + "newRelease": "28.el7", + "arch": "x86_64", + "repository": "" + }, + "cracklib": { + "name": "cracklib", + "version": "2.9.0", + "release": "11.el7", + "newVersion": "2.9.0", + "newRelease": "11.el7", + "arch": "x86_64", + "repository": "" + }, + "cracklib-dicts": { + "name": "cracklib-dicts", + "version": "2.9.0", + "release": "11.el7", + "newVersion": "2.9.0", + "newRelease": "11.el7", + "arch": "x86_64", + "repository": "" + }, + "cronie": { + "name": "cronie", + "version": "1.4.11", + "release": "23.el7", + "newVersion": "1.4.11", + "newRelease": "23.el7", + "arch": "x86_64", + "repository": "" + }, + "cronie-anacron": { + "name": "cronie-anacron", + "version": "1.4.11", + "release": "23.el7", + "newVersion": "1.4.11", + "newRelease": "23.el7", + "arch": "x86_64", + "repository": "" + }, + "crontabs": { + "name": "crontabs", + "version": "1.11", + "release": "6.20121102git.el7", + "newVersion": "1.11", + "newRelease": "6.20121102git.el7", + "arch": "noarch", + "repository": "" + }, + "cryptsetup-libs": { + "name": "cryptsetup-libs", + "version": "2.0.3", + "release": "6.el7", + "newVersion": "2.0.3", + "newRelease": "6.el7", + "arch": "x86_64", + "repository": "" + }, + "curl": { + "name": "curl", + "version": "7.29.0", + "release": "59.0.1.el7_9.1", + "newVersion": "7.29.0", + "newRelease": "59.0.1.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "cyrus-sasl-lib": { + "name": "cyrus-sasl-lib", + "version": "2.1.26", + "release": "23.el7", + "newVersion": "2.1.26", + "newRelease": "23.el7", + "arch": "x86_64", + "repository": "" + }, + "dbus": { + "name": "dbus", + "version": "1:1.10.24", + "release": "15.0.1.el7", + "newVersion": "1:1.10.24", + "newRelease": "15.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "dbus-glib": { + "name": "dbus-glib", + "version": "0.100", + "release": "7.el7", + "newVersion": "0.100", + "newRelease": "7.el7", + "arch": "x86_64", + "repository": "" + }, + "dbus-libs": { + "name": "dbus-libs", + "version": "1:1.10.24", + "release": "15.0.1.el7", + "newVersion": "1:1.10.24", + "newRelease": "15.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "dbus-python": { + "name": "dbus-python", + "version": "1.1.1", + "release": "9.el7", + "newVersion": "1.1.1", + "newRelease": "9.el7", + "arch": "x86_64", + "repository": "" + }, + "device-mapper": { + "name": "device-mapper", + "version": "7:1.02.170", + "release": "6.0.3.el7_9.4", + "newVersion": "7:1.02.170", + "newRelease": "6.0.3.el7_9.4", + "arch": "x86_64", + "repository": "" + }, + "device-mapper-libs": { + "name": "device-mapper-libs", + "version": "7:1.02.170", + "release": "6.0.3.el7_9.4", + "newVersion": "7:1.02.170", + "newRelease": "6.0.3.el7_9.4", + "arch": "x86_64", + "repository": "" + }, + "dhclient": { + "name": "dhclient", + "version": "12:4.2.5", + "release": "82.0.1.el7", + "newVersion": "12:4.2.5", + "newRelease": "82.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "dhcp-common": { + "name": "dhcp-common", + "version": "12:4.2.5", + "release": "82.0.1.el7", + "newVersion": "12:4.2.5", + "newRelease": "82.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "dhcp-libs": { + "name": "dhcp-libs", + "version": "12:4.2.5", + "release": "82.0.1.el7", + "newVersion": "12:4.2.5", + "newRelease": "82.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "diffutils": { + "name": "diffutils", + "version": "3.3", + "release": "5.el7", + "newVersion": "3.3", + "newRelease": "5.el7", + "arch": "x86_64", + "repository": "" + }, + "dmidecode": { + "name": "dmidecode", + "version": "1:3.2", + "release": "5.el7_9.1", + "newVersion": "1:3.2", + "newRelease": "5.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "dracut": { + "name": "dracut", + "version": "033", + "release": "572.0.3.el7", + "newVersion": "033", + "newRelease": "572.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "dracut-config-rescue": { + "name": "dracut-config-rescue", + "version": "033", + "release": "572.0.3.el7", + "newVersion": "033", + "newRelease": "572.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "e2fsprogs": { + "name": "e2fsprogs", + "version": "1.45.4", + "release": "3.0.5.el7", + "newVersion": "1.45.4", + "newRelease": "3.0.5.el7", + "arch": "x86_64", + "repository": "" + }, + "e2fsprogs-libs": { + "name": "e2fsprogs-libs", + "version": "1.45.4", + "release": "3.0.5.el7", + "newVersion": "1.45.4", + "newRelease": "3.0.5.el7", + "arch": "x86_64", + "repository": "" + }, + "ebtables": { + "name": "ebtables", + "version": "2.0.10", + "release": "16.el7", + "newVersion": "2.0.10", + "newRelease": "16.el7", + "arch": "x86_64", + "repository": "" + }, + "elfutils-default-yama-scope": { + "name": "elfutils-default-yama-scope", + "version": "0.176", + "release": "5.el7", + "newVersion": "0.176", + "newRelease": "5.el7", + "arch": "noarch", + "repository": "" + }, + "elfutils-libelf": { + "name": "elfutils-libelf", + "version": "0.176", + "release": "5.el7", + "newVersion": "0.176", + "newRelease": "5.el7", + "arch": "x86_64", + "repository": "" + }, + "elfutils-libs": { + "name": "elfutils-libs", + "version": "0.176", + "release": "5.el7", + "newVersion": "0.176", + "newRelease": "5.el7", + "arch": "x86_64", + "repository": "" + }, + "ethtool": { + "name": "ethtool", + "version": "2:4.8", + "release": "10.el7", + "newVersion": "2:4.8", + "newRelease": "10.el7", + "arch": "x86_64", + "repository": "" + }, + "expat": { + "name": "expat", + "version": "2.1.0", + "release": "12.el7", + "newVersion": "2.1.0", + "newRelease": "12.el7", + "arch": "x86_64", + "repository": "" + }, + "file": { + "name": "file", + "version": "5.11", + "release": "37.el7", + "newVersion": "5.11", + "newRelease": "37.el7", + "arch": "x86_64", + "repository": "" + }, + "file-libs": { + "name": "file-libs", + "version": "5.11", + "release": "37.el7", + "newVersion": "5.11", + "newRelease": "37.el7", + "arch": "x86_64", + "repository": "" + }, + "filesystem": { + "name": "filesystem", + "version": "3.2", + "release": "25.el7", + "newVersion": "3.2", + "newRelease": "25.el7", + "arch": "x86_64", + "repository": "" + }, + "findutils": { + "name": "findutils", + "version": "1:4.5.11", + "release": "6.el7", + "newVersion": "1:4.5.11", + "newRelease": "6.el7", + "arch": "x86_64", + "repository": "" + }, + "fipscheck": { + "name": "fipscheck", + "version": "1.4.1", + "release": "6.el7", + "newVersion": "1.4.1", + "newRelease": "6.el7", + "arch": "x86_64", + "repository": "" + }, + "fipscheck-lib": { + "name": "fipscheck-lib", + "version": "1.4.1", + "release": "6.el7", + "newVersion": "1.4.1", + "newRelease": "6.el7", + "arch": "x86_64", + "repository": "" + }, + "firewalld-filesystem": { + "name": "firewalld-filesystem", + "version": "0.6.3", + "release": "12.0.1.el7", + "newVersion": "0.6.3", + "newRelease": "12.0.1.el7", + "arch": "noarch", + "repository": "" + }, + "freetype": { + "name": "freetype", + "version": "2.8", + "release": "14.el7_9.1", + "newVersion": "2.8", + "newRelease": "14.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "fuse-libs": { + "name": "fuse-libs", + "version": "2.9.4", + "release": "1.0.9.el7", + "newVersion": "2.9.4", + "newRelease": "1.0.9.el7", + "arch": "x86_64", + "repository": "" + }, + "gawk": { + "name": "gawk", + "version": "4.0.2", + "release": "4.el7_3.1", + "newVersion": "4.0.2", + "newRelease": "4.el7_3.1", + "arch": "x86_64", + "repository": "" + }, + "gdbm": { + "name": "gdbm", + "version": "1.10", + "release": "8.el7", + "newVersion": "1.10", + "newRelease": "8.el7", + "arch": "x86_64", + "repository": "" + }, + "gdisk": { + "name": "gdisk", + "version": "0.8.10", + "release": "3.el7", + "newVersion": "0.8.10", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "geoipupdate": { + "name": "geoipupdate", + "version": "2.5.0", + "release": "1.el7", + "newVersion": "2.5.0", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "gettext": { + "name": "gettext", + "version": "0.19.8.1", + "release": "3.el7", + "newVersion": "0.19.8.1", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "gettext-libs": { + "name": "gettext-libs", + "version": "0.19.8.1", + "release": "3.el7", + "newVersion": "0.19.8.1", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "glib2": { + "name": "glib2", + "version": "2.56.1", + "release": "8.el7", + "newVersion": "2.56.1", + "newRelease": "8.el7", + "arch": "x86_64", + "repository": "" + }, + "glibc": { + "name": "glibc", + "version": "2.17", + "release": "323.0.1.el7_9", + "newVersion": "2.17", + "newRelease": "323.0.1.el7_9", + "arch": "x86_64", + "repository": "" + }, + "glibc-common": { + "name": "glibc-common", + "version": "2.17", + "release": "323.0.1.el7_9", + "newVersion": "2.17", + "newRelease": "323.0.1.el7_9", + "arch": "x86_64", + "repository": "" + }, + "gmp": { + "name": "gmp", + "version": "1:6.0.0", + "release": "15.el7", + "newVersion": "1:6.0.0", + "newRelease": "15.el7", + "arch": "x86_64", + "repository": "" + }, + "gnupg2": { + "name": "gnupg2", + "version": "2.0.22", + "release": "5.el7_5", + "newVersion": "2.0.22", + "newRelease": "5.el7_5", + "arch": "x86_64", + "repository": "" + }, + "gobject-introspection": { + "name": "gobject-introspection", + "version": "1.56.1", + "release": "1.el7", + "newVersion": "1.56.1", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "gpg-pubkey": { + "name": "gpg-pubkey", + "version": "ec551f03", + "release": "53619141", + "newVersion": "ec551f03", + "newRelease": "53619141", + "arch": "(none)", + "repository": "" + }, + "gpgme": { + "name": "gpgme", + "version": "1.3.2", + "release": "5.el7", + "newVersion": "1.3.2", + "newRelease": "5.el7", + "arch": "x86_64", + "repository": "" + }, + "grep": { + "name": "grep", + "version": "2.20", + "release": "3.el7", + "newVersion": "2.20", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "groff-base": { + "name": "groff-base", + "version": "1.22.2", + "release": "8.el7", + "newVersion": "1.22.2", + "newRelease": "8.el7", + "arch": "x86_64", + "repository": "" + }, + "grub2": { + "name": "grub2", + "version": "1:2.02", + "release": "0.87.0.9.el7_9.6", + "newVersion": "1:2.02", + "newRelease": "0.87.0.9.el7_9.6", + "arch": "x86_64", + "repository": "" + }, + "grub2-common": { + "name": "grub2-common", + "version": "1:2.02", + "release": "0.87.0.9.el7_9.6", + "newVersion": "1:2.02", + "newRelease": "0.87.0.9.el7_9.6", + "arch": "noarch", + "repository": "" + }, + "grub2-pc": { + "name": "grub2-pc", + "version": "1:2.02", + "release": "0.87.0.9.el7_9.6", + "newVersion": "1:2.02", + "newRelease": "0.87.0.9.el7_9.6", + "arch": "x86_64", + "repository": "" + }, + "grub2-pc-modules": { + "name": "grub2-pc-modules", + "version": "1:2.02", + "release": "0.87.0.9.el7_9.6", + "newVersion": "1:2.02", + "newRelease": "0.87.0.9.el7_9.6", + "arch": "noarch", + "repository": "" + }, + "grub2-tools": { + "name": "grub2-tools", + "version": "1:2.02", + "release": "0.87.0.9.el7_9.6", + "newVersion": "1:2.02", + "newRelease": "0.87.0.9.el7_9.6", + "arch": "x86_64", + "repository": "" + }, + "grub2-tools-extra": { + "name": "grub2-tools-extra", + "version": "1:2.02", + "release": "0.87.0.9.el7_9.6", + "newVersion": "1:2.02", + "newRelease": "0.87.0.9.el7_9.6", + "arch": "x86_64", + "repository": "" + }, + "grub2-tools-minimal": { + "name": "grub2-tools-minimal", + "version": "1:2.02", + "release": "0.87.0.9.el7_9.6", + "newVersion": "1:2.02", + "newRelease": "0.87.0.9.el7_9.6", + "arch": "x86_64", + "repository": "" + }, + "grubby": { + "name": "grubby", + "version": "8.28", + "release": "26.0.3.el7", + "newVersion": "8.28", + "newRelease": "26.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "gzip": { + "name": "gzip", + "version": "1.5", + "release": "10.el7", + "newVersion": "1.5", + "newRelease": "10.el7", + "arch": "x86_64", + "repository": "" + }, + "hardlink": { + "name": "hardlink", + "version": "1:1.0", + "release": "19.el7", + "newVersion": "1:1.0", + "newRelease": "19.el7", + "arch": "x86_64", + "repository": "" + }, + "hostname": { + "name": "hostname", + "version": "3.13", + "release": "3.el7_7.1", + "newVersion": "3.13", + "newRelease": "3.el7_7.1", + "arch": "x86_64", + "repository": "" + }, + "hwdata": { + "name": "hwdata", + "version": "0.252", + "release": "9.7.0.1.el7", + "newVersion": "0.252", + "newRelease": "9.7.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "info": { + "name": "info", + "version": "5.1", + "release": "5.el7", + "newVersion": "5.1", + "newRelease": "5.el7", + "arch": "x86_64", + "repository": "" + }, + "initscripts": { + "name": "initscripts", + "version": "9.49.53", + "release": "1.0.1.el7_9.1", + "newVersion": "9.49.53", + "newRelease": "1.0.1.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "iproute": { + "name": "iproute", + "version": "5.4.0", + "release": "1.0.1.el7", + "newVersion": "5.4.0", + "newRelease": "1.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "ipset": { + "name": "ipset", + "version": "7.1", + "release": "1.el7", + "newVersion": "7.1", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "ipset-libs": { + "name": "ipset-libs", + "version": "7.1", + "release": "1.el7", + "newVersion": "7.1", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "iptables": { + "name": "iptables", + "version": "1.4.21", + "release": "35.0.1.el7", + "newVersion": "1.4.21", + "newRelease": "35.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "iptables-services": { + "name": "iptables-services", + "version": "1.4.21", + "release": "35.0.1.el7", + "newVersion": "1.4.21", + "newRelease": "35.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "iputils": { + "name": "iputils", + "version": "20160308", + "release": "10.el7", + "newVersion": "20160308", + "newRelease": "10.el7", + "arch": "x86_64", + "repository": "" + }, + "irqbalance": { + "name": "irqbalance", + "version": "3:1.0.8", + "release": "2.el7", + "newVersion": "3:1.0.8", + "newRelease": "2.el7", + "arch": "x86_64", + "repository": "" + }, + "jbigkit-libs": { + "name": "jbigkit-libs", + "version": "2.0", + "release": "11.el7", + "newVersion": "2.0", + "newRelease": "11.el7", + "arch": "x86_64", + "repository": "" + }, + "json-c": { + "name": "json-c", + "version": "0.11", + "release": "4.el7_0", + "newVersion": "0.11", + "newRelease": "4.el7_0", + "arch": "x86_64", + "repository": "" + }, + "kbd": { + "name": "kbd", + "version": "1.15.5", + "release": "15.el7", + "newVersion": "1.15.5", + "newRelease": "15.el7", + "arch": "x86_64", + "repository": "" + }, + "kbd-legacy": { + "name": "kbd-legacy", + "version": "1.15.5", + "release": "15.el7", + "newVersion": "1.15.5", + "newRelease": "15.el7", + "arch": "noarch", + "repository": "" + }, + "kbd-misc": { + "name": "kbd-misc", + "version": "1.15.5", + "release": "15.el7", + "newVersion": "1.15.5", + "newRelease": "15.el7", + "arch": "noarch", + "repository": "" + }, + "kernel-tools": { + "name": "kernel-tools", + "version": "3.10.0", + "release": "1160.24.1.el7", + "newVersion": "3.10.0", + "newRelease": "1160.24.1.el7", + "arch": "x86_64", + "repository": "" + }, + "kernel-tools-libs": { + "name": "kernel-tools-libs", + "version": "3.10.0", + "release": "1160.24.1.el7", + "newVersion": "3.10.0", + "newRelease": "1160.24.1.el7", + "arch": "x86_64", + "repository": "" + }, + "kernel-uek": { + "name": "kernel-uek", + "version": "5.4.17", + "release": "2102.200.13.el7uek", + "newVersion": "5.4.17", + "newRelease": "2102.200.13.el7uek", + "arch": "x86_64", + "repository": "" + }, + "keyutils-libs": { + "name": "keyutils-libs", + "version": "1.5.8", + "release": "3.el7", + "newVersion": "1.5.8", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "kmod": { + "name": "kmod", + "version": "20", + "release": "28.0.3.el7", + "newVersion": "20", + "newRelease": "28.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "kmod-libs": { + "name": "kmod-libs", + "version": "20", + "release": "28.0.3.el7", + "newVersion": "20", + "newRelease": "28.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "kpartx": { + "name": "kpartx", + "version": "0.4.9", + "release": "134.0.3.el7_9", + "newVersion": "0.4.9", + "newRelease": "134.0.3.el7_9", + "arch": "x86_64", + "repository": "" + }, + "krb5-libs": { + "name": "krb5-libs", + "version": "1.15.1", + "release": "50.el7", + "newVersion": "1.15.1", + "newRelease": "50.el7", + "arch": "x86_64", + "repository": "" + }, + "less": { + "name": "less", + "version": "458", + "release": "9.el7", + "newVersion": "458", + "newRelease": "9.el7", + "arch": "x86_64", + "repository": "" + }, + "libacl": { + "name": "libacl", + "version": "2.2.51", + "release": "15.el7", + "newVersion": "2.2.51", + "newRelease": "15.el7", + "arch": "x86_64", + "repository": "" + }, + "libassuan": { + "name": "libassuan", + "version": "2.1.0", + "release": "3.el7", + "newVersion": "2.1.0", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "libattr": { + "name": "libattr", + "version": "2.4.46", + "release": "13.el7", + "newVersion": "2.4.46", + "newRelease": "13.el7", + "arch": "x86_64", + "repository": "" + }, + "libblkid": { + "name": "libblkid", + "version": "2.23.2", + "release": "65.0.1.el7_9.1", + "newVersion": "2.23.2", + "newRelease": "65.0.1.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "libcap": { + "name": "libcap", + "version": "2.22", + "release": "11.el7", + "newVersion": "2.22", + "newRelease": "11.el7", + "arch": "x86_64", + "repository": "" + }, + "libcap-ng": { + "name": "libcap-ng", + "version": "0.7.5", + "release": "4.el7", + "newVersion": "0.7.5", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "libcgroup": { + "name": "libcgroup", + "version": "0.41", + "release": "21.el7", + "newVersion": "0.41", + "newRelease": "21.el7", + "arch": "x86_64", + "repository": "" + }, + "libcom_err": { + "name": "libcom_err", + "version": "1.45.4", + "release": "3.0.5.el7", + "newVersion": "1.45.4", + "newRelease": "3.0.5.el7", + "arch": "x86_64", + "repository": "" + }, + "libcroco": { + "name": "libcroco", + "version": "0.6.12", + "release": "6.el7_9", + "newVersion": "0.6.12", + "newRelease": "6.el7_9", + "arch": "x86_64", + "repository": "" + }, + "libcurl": { + "name": "libcurl", + "version": "7.29.0", + "release": "59.0.1.el7_9.1", + "newVersion": "7.29.0", + "newRelease": "59.0.1.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "libdaemon": { + "name": "libdaemon", + "version": "0.14", + "release": "7.el7", + "newVersion": "0.14", + "newRelease": "7.el7", + "arch": "x86_64", + "repository": "" + }, + "libdb": { + "name": "libdb", + "version": "5.3.21", + "release": "25.el7", + "newVersion": "5.3.21", + "newRelease": "25.el7", + "arch": "x86_64", + "repository": "" + }, + "libdb-utils": { + "name": "libdb-utils", + "version": "5.3.21", + "release": "25.el7", + "newVersion": "5.3.21", + "newRelease": "25.el7", + "arch": "x86_64", + "repository": "" + }, + "libedit": { + "name": "libedit", + "version": "3.0", + "release": "12.20121213cvs.el7", + "newVersion": "3.0", + "newRelease": "12.20121213cvs.el7", + "arch": "x86_64", + "repository": "" + }, + "libestr": { + "name": "libestr", + "version": "0.1.9", + "release": "2.el7", + "newVersion": "0.1.9", + "newRelease": "2.el7", + "arch": "x86_64", + "repository": "" + }, + "libfastjson": { + "name": "libfastjson", + "version": "0.99.4", + "release": "3.el7", + "newVersion": "0.99.4", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "libffi": { + "name": "libffi", + "version": "3.0.13", + "release": "19.el7", + "newVersion": "3.0.13", + "newRelease": "19.el7", + "arch": "x86_64", + "repository": "" + }, + "libgcc": { + "name": "libgcc", + "version": "4.8.5", + "release": "44.0.3.el7", + "newVersion": "4.8.5", + "newRelease": "44.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "libgcrypt": { + "name": "libgcrypt", + "version": "1.5.3", + "release": "14.el7", + "newVersion": "1.5.3", + "newRelease": "14.el7", + "arch": "x86_64", + "repository": "" + }, + "libgomp": { + "name": "libgomp", + "version": "4.8.5", + "release": "44.0.3.el7", + "newVersion": "4.8.5", + "newRelease": "44.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "libgpg-error": { + "name": "libgpg-error", + "version": "1.12", + "release": "3.el7", + "newVersion": "1.12", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "libgudev1": { + "name": "libgudev1", + "version": "219", + "release": "78.0.3.el7_9.3", + "newVersion": "219", + "newRelease": "78.0.3.el7_9.3", + "arch": "x86_64", + "repository": "" + }, + "libidn": { + "name": "libidn", + "version": "1.28", + "release": "4.el7", + "newVersion": "1.28", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "libjpeg-turbo": { + "name": "libjpeg-turbo", + "version": "1.2.90", + "release": "8.el7", + "newVersion": "1.2.90", + "newRelease": "8.el7", + "arch": "x86_64", + "repository": "" + }, + "libmnl": { + "name": "libmnl", + "version": "1.0.3", + "release": "7.el7", + "newVersion": "1.0.3", + "newRelease": "7.el7", + "arch": "x86_64", + "repository": "" + }, + "libmount": { + "name": "libmount", + "version": "2.23.2", + "release": "65.0.1.el7_9.1", + "newVersion": "2.23.2", + "newRelease": "65.0.1.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "libndp": { + "name": "libndp", + "version": "1.2", + "release": "9.el7", + "newVersion": "1.2", + "newRelease": "9.el7", + "arch": "x86_64", + "repository": "" + }, + "libnetfilter_conntrack": { + "name": "libnetfilter_conntrack", + "version": "1.0.6", + "release": "1.el7_3", + "newVersion": "1.0.6", + "newRelease": "1.el7_3", + "arch": "x86_64", + "repository": "" + }, + "libnfnetlink": { + "name": "libnfnetlink", + "version": "1.0.1", + "release": "4.el7", + "newVersion": "1.0.1", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "libnl": { + "name": "libnl", + "version": "1.1.4", + "release": "3.el7", + "newVersion": "1.1.4", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "libovmapi": { + "name": "libovmapi", + "version": "3.2", + "release": "1.el7", + "newVersion": "3.2", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "libovmapi-devel": { + "name": "libovmapi-devel", + "version": "3.2", + "release": "1.el7", + "newVersion": "3.2", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "libpipeline": { + "name": "libpipeline", + "version": "1.2.3", + "release": "3.el7", + "newVersion": "1.2.3", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "libpng": { + "name": "libpng", + "version": "2:1.5.13", + "release": "8.el7", + "newVersion": "2:1.5.13", + "newRelease": "8.el7", + "arch": "x86_64", + "repository": "" + }, + "libpwquality": { + "name": "libpwquality", + "version": "1.2.3", + "release": "5.el7", + "newVersion": "1.2.3", + "newRelease": "5.el7", + "arch": "x86_64", + "repository": "" + }, + "libseccomp": { + "name": "libseccomp", + "version": "2.3.1", + "release": "4.el7", + "newVersion": "2.3.1", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "libselinux": { + "name": "libselinux", + "version": "2.5", + "release": "15.el7", + "newVersion": "2.5", + "newRelease": "15.el7", + "arch": "x86_64", + "repository": "" + }, + "libselinux-python": { + "name": "libselinux-python", + "version": "2.5", + "release": "15.el7", + "newVersion": "2.5", + "newRelease": "15.el7", + "arch": "x86_64", + "repository": "" + }, + "libselinux-utils": { + "name": "libselinux-utils", + "version": "2.5", + "release": "15.el7", + "newVersion": "2.5", + "newRelease": "15.el7", + "arch": "x86_64", + "repository": "" + }, + "libsemanage": { + "name": "libsemanage", + "version": "2.5", + "release": "14.el7", + "newVersion": "2.5", + "newRelease": "14.el7", + "arch": "x86_64", + "repository": "" + }, + "libsemanage-python": { + "name": "libsemanage-python", + "version": "2.5", + "release": "14.el7", + "newVersion": "2.5", + "newRelease": "14.el7", + "arch": "x86_64", + "repository": "" + }, + "libsepol": { + "name": "libsepol", + "version": "2.5", + "release": "10.el7", + "newVersion": "2.5", + "newRelease": "10.el7", + "arch": "x86_64", + "repository": "" + }, + "libsmartcols": { + "name": "libsmartcols", + "version": "2.23.2", + "release": "65.0.1.el7_9.1", + "newVersion": "2.23.2", + "newRelease": "65.0.1.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "libss": { + "name": "libss", + "version": "1.45.4", + "release": "3.0.5.el7", + "newVersion": "1.45.4", + "newRelease": "3.0.5.el7", + "arch": "x86_64", + "repository": "" + }, + "libssh2": { + "name": "libssh2", + "version": "1.8.0", + "release": "4.el7", + "newVersion": "1.8.0", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "libstdc++": { + "name": "libstdc++", + "version": "4.8.5", + "release": "44.0.3.el7", + "newVersion": "4.8.5", + "newRelease": "44.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "libsysfs": { + "name": "libsysfs", + "version": "2.1.0", + "release": "16.el7", + "newVersion": "2.1.0", + "newRelease": "16.el7", + "arch": "x86_64", + "repository": "" + }, + "libtasn1": { + "name": "libtasn1", + "version": "4.10", + "release": "1.el7", + "newVersion": "4.10", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "libtiff": { + "name": "libtiff", + "version": "4.0.3", + "release": "35.el7", + "newVersion": "4.0.3", + "newRelease": "35.el7", + "arch": "x86_64", + "repository": "" + }, + "libunistring": { + "name": "libunistring", + "version": "0.9.3", + "release": "9.el7", + "newVersion": "0.9.3", + "newRelease": "9.el7", + "arch": "x86_64", + "repository": "" + }, + "libuser": { + "name": "libuser", + "version": "0.60", + "release": "9.el7", + "newVersion": "0.60", + "newRelease": "9.el7", + "arch": "x86_64", + "repository": "" + }, + "libutempter": { + "name": "libutempter", + "version": "1.1.6", + "release": "4.el7", + "newVersion": "1.1.6", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "libuuid": { + "name": "libuuid", + "version": "2.23.2", + "release": "65.0.1.el7_9.1", + "newVersion": "2.23.2", + "newRelease": "65.0.1.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "libverto": { + "name": "libverto", + "version": "0.2.5", + "release": "4.el7", + "newVersion": "0.2.5", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "libwebp": { + "name": "libwebp", + "version": "0.3.0", + "release": "7.el7", + "newVersion": "0.3.0", + "newRelease": "7.el7", + "arch": "x86_64", + "repository": "" + }, + "libxenstore": { + "name": "libxenstore", + "version": "4.7.0", + "release": "4.el7", + "newVersion": "4.7.0", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "libxml2": { + "name": "libxml2", + "version": "2.9.1", + "release": "6.0.1.el7.5", + "newVersion": "2.9.1", + "newRelease": "6.0.1.el7.5", + "arch": "x86_64", + "repository": "" + }, + "libxml2-python": { + "name": "libxml2-python", + "version": "2.9.1", + "release": "6.0.1.el7.5", + "newVersion": "2.9.1", + "newRelease": "6.0.1.el7.5", + "arch": "x86_64", + "repository": "" + }, + "libyaml": { + "name": "libyaml", + "version": "0.1.4", + "release": "11.el7_0", + "newVersion": "0.1.4", + "newRelease": "11.el7_0", + "arch": "x86_64", + "repository": "" + }, + "libzstd": { + "name": "libzstd", + "version": "1.4.4", + "release": "1.el7", + "newVersion": "1.4.4", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "linux-firmware": { + "name": "linux-firmware", + "version": "999:20201217", + "release": "999.7.git7455a360.el7", + "newVersion": "999:20201217", + "newRelease": "999.7.git7455a360.el7", + "arch": "noarch", + "repository": "" + }, + "logrotate": { + "name": "logrotate", + "version": "3.8.6", + "release": "19.el7", + "newVersion": "3.8.6", + "newRelease": "19.el7", + "arch": "x86_64", + "repository": "" + }, + "lshw": { + "name": "lshw", + "version": "B.02.18", + "release": "17.el7", + "newVersion": "B.02.18", + "newRelease": "17.el7", + "arch": "x86_64", + "repository": "" + }, + "lua": { + "name": "lua", + "version": "5.1.4", + "release": "15.el7", + "newVersion": "5.1.4", + "newRelease": "15.el7", + "arch": "x86_64", + "repository": "" + }, + "lz4": { + "name": "lz4", + "version": "1.8.3", + "release": "1.el7", + "newVersion": "1.8.3", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "lzo": { + "name": "lzo", + "version": "2.06", + "release": "8.el7", + "newVersion": "2.06", + "newRelease": "8.el7", + "arch": "x86_64", + "repository": "" + }, + "m2crypto": { + "name": "m2crypto", + "version": "0.21.1", + "release": "17.el7", + "newVersion": "0.21.1", + "newRelease": "17.el7", + "arch": "x86_64", + "repository": "" + }, + "make": { + "name": "make", + "version": "1:3.82", + "release": "24.el7", + "newVersion": "1:3.82", + "newRelease": "24.el7", + "arch": "x86_64", + "repository": "" + }, + "man-db": { + "name": "man-db", + "version": "2.6.3", + "release": "11.el7", + "newVersion": "2.6.3", + "newRelease": "11.el7", + "arch": "x86_64", + "repository": "" + }, + "ncurses": { + "name": "ncurses", + "version": "5.9", + "release": "14.20130511.el7_4", + "newVersion": "5.9", + "newRelease": "14.20130511.el7_4", + "arch": "x86_64", + "repository": "" + }, + "ncurses-base": { + "name": "ncurses-base", + "version": "5.9", + "release": "14.20130511.el7_4", + "newVersion": "5.9", + "newRelease": "14.20130511.el7_4", + "arch": "noarch", + "repository": "" + }, + "ncurses-libs": { + "name": "ncurses-libs", + "version": "5.9", + "release": "14.20130511.el7_4", + "newVersion": "5.9", + "newRelease": "14.20130511.el7_4", + "arch": "x86_64", + "repository": "" + }, + "net-tools": { + "name": "net-tools", + "version": "2.0", + "release": "0.25.20131004git.el7", + "newVersion": "2.0", + "newRelease": "0.25.20131004git.el7", + "arch": "x86_64", + "repository": "" + }, + "newt": { + "name": "newt", + "version": "0.52.15", + "release": "4.el7", + "newVersion": "0.52.15", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "newt-python": { + "name": "newt-python", + "version": "0.52.15", + "release": "4.el7", + "newVersion": "0.52.15", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "nspr": { + "name": "nspr", + "version": "4.25.0", + "release": "2.el7_9", + "newVersion": "4.25.0", + "newRelease": "2.el7_9", + "arch": "x86_64", + "repository": "" + }, + "nss": { + "name": "nss", + "version": "3.53.1", + "release": "3.el7_9", + "newVersion": "3.53.1", + "newRelease": "3.el7_9", + "arch": "x86_64", + "repository": "" + }, + "nss-pem": { + "name": "nss-pem", + "version": "1.0.3", + "release": "7.el7", + "newVersion": "1.0.3", + "newRelease": "7.el7", + "arch": "x86_64", + "repository": "" + }, + "nss-softokn": { + "name": "nss-softokn", + "version": "3.53.1", + "release": "6.0.1.el7_9", + "newVersion": "3.53.1", + "newRelease": "6.0.1.el7_9", + "arch": "x86_64", + "repository": "" + }, + "nss-softokn-freebl": { + "name": "nss-softokn-freebl", + "version": "3.53.1", + "release": "6.0.1.el7_9", + "newVersion": "3.53.1", + "newRelease": "6.0.1.el7_9", + "arch": "x86_64", + "repository": "" + }, + "nss-sysinit": { + "name": "nss-sysinit", + "version": "3.53.1", + "release": "3.el7_9", + "newVersion": "3.53.1", + "newRelease": "3.el7_9", + "arch": "x86_64", + "repository": "" + }, + "nss-tools": { + "name": "nss-tools", + "version": "3.53.1", + "release": "3.el7_9", + "newVersion": "3.53.1", + "newRelease": "3.el7_9", + "arch": "x86_64", + "repository": "" + }, + "nss-util": { + "name": "nss-util", + "version": "3.53.1", + "release": "1.el7_9", + "newVersion": "3.53.1", + "newRelease": "1.el7_9", + "arch": "x86_64", + "repository": "" + }, + "numactl-libs": { + "name": "numactl-libs", + "version": "2.0.12", + "release": "5.0.3.el7", + "newVersion": "2.0.12", + "newRelease": "5.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "openldap": { + "name": "openldap", + "version": "2.4.44", + "release": "22.el7", + "newVersion": "2.4.44", + "newRelease": "22.el7", + "arch": "x86_64", + "repository": "" + }, + "openssh": { + "name": "openssh", + "version": "7.4p1", + "release": "21.0.1.el7", + "newVersion": "7.4p1", + "newRelease": "21.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "openssh-clients": { + "name": "openssh-clients", + "version": "7.4p1", + "release": "21.0.1.el7", + "newVersion": "7.4p1", + "newRelease": "21.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "openssh-server": { + "name": "openssh-server", + "version": "7.4p1", + "release": "21.0.1.el7", + "newVersion": "7.4p1", + "newRelease": "21.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "openssl": { + "name": "openssl", + "version": "1:1.0.2k", + "release": "21.0.1.el7_9", + "newVersion": "1:1.0.2k", + "newRelease": "21.0.1.el7_9", + "arch": "x86_64", + "repository": "" + }, + "openssl-libs": { + "name": "openssl-libs", + "version": "1:1.0.2k", + "release": "21.0.1.el7_9", + "newVersion": "1:1.0.2k", + "newRelease": "21.0.1.el7_9", + "arch": "x86_64", + "repository": "" + }, + "oracle-logos": { + "name": "oracle-logos", + "version": "70.7.0", + "release": "1.0.7.el7", + "newVersion": "70.7.0", + "newRelease": "1.0.7.el7", + "arch": "noarch", + "repository": "" + }, + "oraclelinux-release": { + "name": "oraclelinux-release", + "version": "7:7.9", + "release": "1.0.9.el7", + "newVersion": "7:7.9", + "newRelease": "1.0.9.el7", + "arch": "x86_64", + "repository": "" + }, + "oraclelinux-release-el7": { + "name": "oraclelinux-release-el7", + "version": "1.0", + "release": "16.el7", + "newVersion": "1.0", + "newRelease": "16.el7", + "arch": "x86_64", + "repository": "" + }, + "os-prober": { + "name": "os-prober", + "version": "1.58", + "release": "9.0.1.el7", + "newVersion": "1.58", + "newRelease": "9.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "p11-kit": { + "name": "p11-kit", + "version": "0.23.5", + "release": "3.el7", + "newVersion": "0.23.5", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "p11-kit-trust": { + "name": "p11-kit-trust", + "version": "0.23.5", + "release": "3.el7", + "newVersion": "0.23.5", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "pam": { + "name": "pam", + "version": "1.1.8", + "release": "23.el7", + "newVersion": "1.1.8", + "newRelease": "23.el7", + "arch": "x86_64", + "repository": "" + }, + "parted": { + "name": "parted", + "version": "3.1", + "release": "32.0.1.el7", + "newVersion": "3.1", + "newRelease": "32.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "passwd": { + "name": "passwd", + "version": "0.79", + "release": "6.el7", + "newVersion": "0.79", + "newRelease": "6.el7", + "arch": "x86_64", + "repository": "" + }, + "pciutils": { + "name": "pciutils", + "version": "3.5.1", + "release": "3.el7", + "newVersion": "3.5.1", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "pciutils-libs": { + "name": "pciutils-libs", + "version": "3.5.1", + "release": "3.el7", + "newVersion": "3.5.1", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "pcre": { + "name": "pcre", + "version": "8.32", + "release": "17.el7", + "newVersion": "8.32", + "newRelease": "17.el7", + "arch": "x86_64", + "repository": "" + }, + "pinentry": { + "name": "pinentry", + "version": "0.8.1", + "release": "17.el7", + "newVersion": "0.8.1", + "newRelease": "17.el7", + "arch": "x86_64", + "repository": "" + }, + "pkgconfig": { + "name": "pkgconfig", + "version": "1:0.27.1", + "release": "4.el7", + "newVersion": "1:0.27.1", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "policycoreutils": { + "name": "policycoreutils", + "version": "2.5", + "release": "34.0.1.el7", + "newVersion": "2.5", + "newRelease": "34.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "policycoreutils-python": { + "name": "policycoreutils-python", + "version": "2.5", + "release": "34.0.1.el7", + "newVersion": "2.5", + "newRelease": "34.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "popt": { + "name": "popt", + "version": "1.13", + "release": "16.el7", + "newVersion": "1.13", + "newRelease": "16.el7", + "arch": "x86_64", + "repository": "" + }, + "procps-ng": { + "name": "procps-ng", + "version": "3.3.10", + "release": "28.el7", + "newVersion": "3.3.10", + "newRelease": "28.el7", + "arch": "x86_64", + "repository": "" + }, + "psmisc": { + "name": "psmisc", + "version": "22.20", + "release": "17.el7", + "newVersion": "22.20", + "newRelease": "17.el7", + "arch": "x86_64", + "repository": "" + }, + "pth": { + "name": "pth", + "version": "2.0.7", + "release": "23.el7", + "newVersion": "2.0.7", + "newRelease": "23.el7", + "arch": "x86_64", + "repository": "" + }, + "pyOpenSSL": { + "name": "pyOpenSSL", + "version": "0.13.1", + "release": "4.el7", + "newVersion": "0.13.1", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "pygobject2": { + "name": "pygobject2", + "version": "2.28.6", + "release": "11.el7", + "newVersion": "2.28.6", + "newRelease": "11.el7", + "arch": "x86_64", + "repository": "" + }, + "pygpgme": { + "name": "pygpgme", + "version": "0.3", + "release": "9.el7", + "newVersion": "0.3", + "newRelease": "9.el7", + "arch": "x86_64", + "repository": "" + }, + "pyliblzma": { + "name": "pyliblzma", + "version": "0.5.3", + "release": "11.el7", + "newVersion": "0.5.3", + "newRelease": "11.el7", + "arch": "x86_64", + "repository": "" + }, + "pyserial": { + "name": "pyserial", + "version": "2.6", + "release": "6.el7", + "newVersion": "2.6", + "newRelease": "6.el7", + "arch": "noarch", + "repository": "" + }, + "python": { + "name": "python", + "version": "2.7.5", + "release": "90.0.3.el7", + "newVersion": "2.7.5", + "newRelease": "90.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "python-IPy": { + "name": "python-IPy", + "version": "0.75", + "release": "6.el7", + "newVersion": "0.75", + "newRelease": "6.el7", + "arch": "noarch", + "repository": "" + }, + "python-babel": { + "name": "python-babel", + "version": "0.9.6", + "release": "8.el7", + "newVersion": "0.9.6", + "newRelease": "8.el7", + "arch": "noarch", + "repository": "" + }, + "python-backports": { + "name": "python-backports", + "version": "1.0", + "release": "8.el7", + "newVersion": "1.0", + "newRelease": "8.el7", + "arch": "x86_64", + "repository": "" + }, + "python-backports-ssl_match_hostname": { + "name": "python-backports-ssl_match_hostname", + "version": "3.5.0.1", + "release": "1.el7", + "newVersion": "3.5.0.1", + "newRelease": "1.el7", + "arch": "noarch", + "repository": "" + }, + "python-boto": { + "name": "python-boto", + "version": "2.27.0", + "release": "1.el7", + "newVersion": "2.27.0", + "newRelease": "1.el7", + "arch": "noarch", + "repository": "" + }, + "python-chardet": { + "name": "python-chardet", + "version": "2.2.1", + "release": "3.el7", + "newVersion": "2.2.1", + "newRelease": "3.el7", + "arch": "noarch", + "repository": "" + }, + "python-cheetah": { + "name": "python-cheetah", + "version": "2.4.1", + "release": "1.el7", + "newVersion": "2.4.1", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "python-configobj": { + "name": "python-configobj", + "version": "4.7.2", + "release": "7.el7", + "newVersion": "4.7.2", + "newRelease": "7.el7", + "arch": "noarch", + "repository": "" + }, + "python-decorator": { + "name": "python-decorator", + "version": "3.4.0", + "release": "3.el7", + "newVersion": "3.4.0", + "newRelease": "3.el7", + "arch": "noarch", + "repository": "" + }, + "python-dmidecode": { + "name": "python-dmidecode", + "version": "3.12.2", + "release": "4.el7", + "newVersion": "3.12.2", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "python-ethtool": { + "name": "python-ethtool", + "version": "0.8", + "release": "8.el7", + "newVersion": "0.8", + "newRelease": "8.el7", + "arch": "x86_64", + "repository": "" + }, + "python-firewall": { + "name": "python-firewall", + "version": "0.6.3", + "release": "12.0.1.el7", + "newVersion": "0.6.3", + "newRelease": "12.0.1.el7", + "arch": "noarch", + "repository": "" + }, + "python-gobject-base": { + "name": "python-gobject-base", + "version": "3.22.0", + "release": "1.el7_4.1", + "newVersion": "3.22.0", + "newRelease": "1.el7_4.1", + "arch": "x86_64", + "repository": "" + }, + "python-gudev": { + "name": "python-gudev", + "version": "147.2", + "release": "7.el7", + "newVersion": "147.2", + "newRelease": "7.el7", + "arch": "x86_64", + "repository": "" + }, + "python-hwdata": { + "name": "python-hwdata", + "version": "1.7.3", + "release": "4.el7", + "newVersion": "1.7.3", + "newRelease": "4.el7", + "arch": "noarch", + "repository": "" + }, + "python-iniparse": { + "name": "python-iniparse", + "version": "0.4", + "release": "9.el7", + "newVersion": "0.4", + "newRelease": "9.el7", + "arch": "noarch", + "repository": "" + }, + "python-ipaddress": { + "name": "python-ipaddress", + "version": "1.0.16", + "release": "2.el7", + "newVersion": "1.0.16", + "newRelease": "2.el7", + "arch": "noarch", + "repository": "" + }, + "python-jinja2": { + "name": "python-jinja2", + "version": "2.7.2", + "release": "4.el7", + "newVersion": "2.7.2", + "newRelease": "4.el7", + "arch": "noarch", + "repository": "" + }, + "python-jsonpatch": { + "name": "python-jsonpatch", + "version": "1.2", + "release": "4.el7", + "newVersion": "1.2", + "newRelease": "4.el7", + "arch": "noarch", + "repository": "" + }, + "python-jsonpointer": { + "name": "python-jsonpointer", + "version": "1.9", + "release": "2.el7", + "newVersion": "1.9", + "newRelease": "2.el7", + "arch": "noarch", + "repository": "" + }, + "python-kitchen": { + "name": "python-kitchen", + "version": "1.1.1", + "release": "5.el7", + "newVersion": "1.1.1", + "newRelease": "5.el7", + "arch": "noarch", + "repository": "" + }, + "python-libs": { + "name": "python-libs", + "version": "2.7.5", + "release": "90.0.3.el7", + "newVersion": "2.7.5", + "newRelease": "90.0.3.el7", + "arch": "x86_64", + "repository": "" + }, + "python-linux-procfs": { + "name": "python-linux-procfs", + "version": "0.4.11", + "release": "4.el7", + "newVersion": "0.4.11", + "newRelease": "4.el7", + "arch": "noarch", + "repository": "" + }, + "python-markdown": { + "name": "python-markdown", + "version": "2.0.1", + "release": "3.1.el7", + "newVersion": "2.0.1", + "newRelease": "3.1.el7", + "arch": "noarch", + "repository": "" + }, + "python-markupsafe": { + "name": "python-markupsafe", + "version": "0.11", + "release": "10.el7", + "newVersion": "0.11", + "newRelease": "10.el7", + "arch": "x86_64", + "repository": "" + }, + "python-perf": { + "name": "python-perf", + "version": "3.10.0", + "release": "1160.24.1.el7", + "newVersion": "3.10.0", + "newRelease": "1160.24.1.el7", + "arch": "x86_64", + "repository": "" + }, + "python-pillow": { + "name": "python-pillow", + "version": "2.0.0", + "release": "21.gitd1c6db8.el7", + "newVersion": "2.0.0", + "newRelease": "21.gitd1c6db8.el7", + "arch": "x86_64", + "repository": "" + }, + "python-prettytable": { + "name": "python-prettytable", + "version": "0.7.2", + "release": "3.el7", + "newVersion": "0.7.2", + "newRelease": "3.el7", + "arch": "noarch", + "repository": "" + }, + "python-pycurl": { + "name": "python-pycurl", + "version": "7.19.0", + "release": "19.el7", + "newVersion": "7.19.0", + "newRelease": "19.el7", + "arch": "x86_64", + "repository": "" + }, + "python-pygments": { + "name": "python-pygments", + "version": "1.4", + "release": "9.el7", + "newVersion": "1.4", + "newRelease": "9.el7", + "arch": "noarch", + "repository": "" + }, + "python-pyudev": { + "name": "python-pyudev", + "version": "0.15", + "release": "9.el7", + "newVersion": "0.15", + "newRelease": "9.el7", + "arch": "noarch", + "repository": "" + }, + "python-requests": { + "name": "python-requests", + "version": "2.6.0", + "release": "10.el7", + "newVersion": "2.6.0", + "newRelease": "10.el7", + "arch": "noarch", + "repository": "" + }, + "python-schedutils": { + "name": "python-schedutils", + "version": "0.4", + "release": "6.el7", + "newVersion": "0.4", + "newRelease": "6.el7", + "arch": "x86_64", + "repository": "" + }, + "python-setuptools": { + "name": "python-setuptools", + "version": "0.9.8", + "release": "7.el7", + "newVersion": "0.9.8", + "newRelease": "7.el7", + "arch": "noarch", + "repository": "" + }, + "python-simplejson": { + "name": "python-simplejson", + "version": "3.2.0", + "release": "1.el7", + "newVersion": "3.2.0", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "python-six": { + "name": "python-six", + "version": "1.9.0", + "release": "2.el7", + "newVersion": "1.9.0", + "newRelease": "2.el7", + "arch": "noarch", + "repository": "" + }, + "python-slip": { + "name": "python-slip", + "version": "0.4.0", + "release": "4.el7", + "newVersion": "0.4.0", + "newRelease": "4.el7", + "arch": "noarch", + "repository": "" + }, + "python-slip-dbus": { + "name": "python-slip-dbus", + "version": "0.4.0", + "release": "4.el7", + "newVersion": "0.4.0", + "newRelease": "4.el7", + "arch": "noarch", + "repository": "" + }, + "python-urlgrabber": { + "name": "python-urlgrabber", + "version": "3.10", + "release": "10.el7", + "newVersion": "3.10", + "newRelease": "10.el7", + "arch": "noarch", + "repository": "" + }, + "python-urllib3": { + "name": "python-urllib3", + "version": "1.10.2", + "release": "7.el7", + "newVersion": "1.10.2", + "newRelease": "7.el7", + "arch": "noarch", + "repository": "" + }, + "pyxattr": { + "name": "pyxattr", + "version": "0.5.1", + "release": "5.el7", + "newVersion": "0.5.1", + "newRelease": "5.el7", + "arch": "x86_64", + "repository": "" + }, + "qemu-guest-agent": { + "name": "qemu-guest-agent", + "version": "10:2.12.0", + "release": "3.el7", + "newVersion": "10:2.12.0", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "qrencode-libs": { + "name": "qrencode-libs", + "version": "3.4.1", + "release": "3.el7", + "newVersion": "3.4.1", + "newRelease": "3.el7", + "arch": "x86_64", + "repository": "" + }, + "readline": { + "name": "readline", + "version": "6.2", + "release": "11.el7", + "newVersion": "6.2", + "newRelease": "11.el7", + "arch": "x86_64", + "repository": "" + }, + "redhat-release-server": { + "name": "redhat-release-server", + "version": "1:7.9", + "release": "6.0.1.el7_9", + "newVersion": "1:7.9", + "newRelease": "6.0.1.el7_9", + "arch": "x86_64", + "repository": "" + }, + "rhn-check": { + "name": "rhn-check", + "version": "2.0.2", + "release": "24.0.7.el7", + "newVersion": "2.0.2", + "newRelease": "24.0.7.el7", + "arch": "x86_64", + "repository": "" + }, + "rhn-client-tools": { + "name": "rhn-client-tools", + "version": "2.0.2", + "release": "24.0.7.el7", + "newVersion": "2.0.2", + "newRelease": "24.0.7.el7", + "arch": "x86_64", + "repository": "" + }, + "rhn-setup": { + "name": "rhn-setup", + "version": "2.0.2", + "release": "24.0.7.el7", + "newVersion": "2.0.2", + "newRelease": "24.0.7.el7", + "arch": "x86_64", + "repository": "" + }, + "rhnlib": { + "name": "rhnlib", + "version": "2.5.65", + "release": "8.0.3.el7", + "newVersion": "2.5.65", + "newRelease": "8.0.3.el7", + "arch": "noarch", + "repository": "" + }, + "rhnsd": { + "name": "rhnsd", + "version": "5.0.13", + "release": "10.0.1.el7", + "newVersion": "5.0.13", + "newRelease": "10.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "rootfiles": { + "name": "rootfiles", + "version": "8.1", + "release": "11.el7", + "newVersion": "8.1", + "newRelease": "11.el7", + "arch": "noarch", + "repository": "" + }, + "rpm": { + "name": "rpm", + "version": "4.11.3", + "release": "45.el7", + "newVersion": "4.11.3", + "newRelease": "45.el7", + "arch": "x86_64", + "repository": "" + }, + "rpm-build-libs": { + "name": "rpm-build-libs", + "version": "4.11.3", + "release": "45.el7", + "newVersion": "4.11.3", + "newRelease": "45.el7", + "arch": "x86_64", + "repository": "" + }, + "rpm-libs": { + "name": "rpm-libs", + "version": "4.11.3", + "release": "45.el7", + "newVersion": "4.11.3", + "newRelease": "45.el7", + "arch": "x86_64", + "repository": "" + }, + "rpm-python": { + "name": "rpm-python", + "version": "4.11.3", + "release": "45.el7", + "newVersion": "4.11.3", + "newRelease": "45.el7", + "arch": "x86_64", + "repository": "" + }, + "rsyslog": { + "name": "rsyslog", + "version": "8.24.0", + "release": "57.el7_9", + "newVersion": "8.24.0", + "newRelease": "57.el7_9", + "arch": "x86_64", + "repository": "" + }, + "sed": { + "name": "sed", + "version": "4.2.2", + "release": "7.el7", + "newVersion": "4.2.2", + "newRelease": "7.el7", + "arch": "x86_64", + "repository": "" + }, + "selinux-policy": { + "name": "selinux-policy", + "version": "3.13.1", + "release": "268.0.1.el7_9.2", + "newVersion": "3.13.1", + "newRelease": "268.0.1.el7_9.2", + "arch": "noarch", + "repository": "" + }, + "selinux-policy-targeted": { + "name": "selinux-policy-targeted", + "version": "3.13.1", + "release": "268.0.1.el7_9.2", + "newVersion": "3.13.1", + "newRelease": "268.0.1.el7_9.2", + "arch": "noarch", + "repository": "" + }, + "setools-libs": { + "name": "setools-libs", + "version": "3.3.8", + "release": "4.el7", + "newVersion": "3.3.8", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "setup": { + "name": "setup", + "version": "2.8.71", + "release": "11.el7", + "newVersion": "2.8.71", + "newRelease": "11.el7", + "arch": "noarch", + "repository": "" + }, + "sg3_utils": { + "name": "sg3_utils", + "version": "1:1.37", + "release": "19.0.1.el7", + "newVersion": "1:1.37", + "newRelease": "19.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "sg3_utils-libs": { + "name": "sg3_utils-libs", + "version": "1:1.37", + "release": "19.0.1.el7", + "newVersion": "1:1.37", + "newRelease": "19.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "shadow-utils": { + "name": "shadow-utils", + "version": "2:4.6", + "release": "5.0.1.el7", + "newVersion": "2:4.6", + "newRelease": "5.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "shared-mime-info": { + "name": "shared-mime-info", + "version": "1.8", + "release": "5.el7", + "newVersion": "1.8", + "newRelease": "5.el7", + "arch": "x86_64", + "repository": "" + }, + "slang": { + "name": "slang", + "version": "2.2.4", + "release": "11.el7", + "newVersion": "2.2.4", + "newRelease": "11.el7", + "arch": "x86_64", + "repository": "" + }, + "sqlite": { + "name": "sqlite", + "version": "3.7.17", + "release": "8.el7_7.1", + "newVersion": "3.7.17", + "newRelease": "8.el7_7.1", + "arch": "x86_64", + "repository": "" + }, + "sudo": { + "name": "sudo", + "version": "1.8.23", + "release": "10.el7_9.1", + "newVersion": "1.8.23", + "newRelease": "10.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "systemd": { + "name": "systemd", + "version": "219", + "release": "78.0.3.el7_9.3", + "newVersion": "219", + "newRelease": "78.0.3.el7_9.3", + "arch": "x86_64", + "repository": "" + }, + "systemd-libs": { + "name": "systemd-libs", + "version": "219", + "release": "78.0.3.el7_9.3", + "newVersion": "219", + "newRelease": "78.0.3.el7_9.3", + "arch": "x86_64", + "repository": "" + }, + "systemd-sysv": { + "name": "systemd-sysv", + "version": "219", + "release": "78.0.3.el7_9.3", + "newVersion": "219", + "newRelease": "78.0.3.el7_9.3", + "arch": "x86_64", + "repository": "" + }, + "sysvinit-tools": { + "name": "sysvinit-tools", + "version": "2.88", + "release": "14.dsf.el7", + "newVersion": "2.88", + "newRelease": "14.dsf.el7", + "arch": "x86_64", + "repository": "" + }, + "tar": { + "name": "tar", + "version": "2:1.26", + "release": "35.el7", + "newVersion": "2:1.26", + "newRelease": "35.el7", + "arch": "x86_64", + "repository": "" + }, + "tcp_wrappers-libs": { + "name": "tcp_wrappers-libs", + "version": "7.6", + "release": "77.el7", + "newVersion": "7.6", + "newRelease": "77.el7", + "arch": "x86_64", + "repository": "" + }, + "tmpwatch": { + "name": "tmpwatch", + "version": "2.11", + "release": "6.el7", + "newVersion": "2.11", + "newRelease": "6.el7", + "arch": "x86_64", + "repository": "" + }, + "tzdata": { + "name": "tzdata", + "version": "2021a", + "release": "1.el7", + "newVersion": "2021a", + "newRelease": "1.el7", + "arch": "noarch", + "repository": "" + }, + "uname26": { + "name": "uname26", + "version": "1.0", + "release": "1.el7", + "newVersion": "1.0", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "usermode": { + "name": "usermode", + "version": "1.111", + "release": "6.el7", + "newVersion": "1.111", + "newRelease": "6.el7", + "arch": "x86_64", + "repository": "" + }, + "ustr": { + "name": "ustr", + "version": "1.0.4", + "release": "16.el7", + "newVersion": "1.0.4", + "newRelease": "16.el7", + "arch": "x86_64", + "repository": "" + }, + "util-linux": { + "name": "util-linux", + "version": "2.23.2", + "release": "65.0.1.el7_9.1", + "newVersion": "2.23.2", + "newRelease": "65.0.1.el7_9.1", + "arch": "x86_64", + "repository": "" + }, + "vim-minimal": { + "name": "vim-minimal", + "version": "2:7.4.629", + "release": "8.0.1.el7_9", + "newVersion": "2:7.4.629", + "newRelease": "8.0.1.el7_9", + "arch": "x86_64", + "repository": "" + }, + "virt-what": { + "name": "virt-what", + "version": "1.18", + "release": "4.el7", + "newVersion": "1.18", + "newRelease": "4.el7", + "arch": "x86_64", + "repository": "" + }, + "which": { + "name": "which", + "version": "2.20", + "release": "7.el7", + "newVersion": "2.20", + "newRelease": "7.el7", + "arch": "x86_64", + "repository": "" + }, + "xenstoreprovider": { + "name": "xenstoreprovider", + "version": "3.0", + "release": "19.el7", + "newVersion": "3.0", + "newRelease": "19.el7", + "arch": "x86_64", + "repository": "" + }, + "xfsprogs": { + "name": "xfsprogs", + "version": "5.4.0", + "release": "1.0.1.el7", + "newVersion": "5.4.0", + "newRelease": "1.0.1.el7", + "arch": "x86_64", + "repository": "" + }, + "xz": { + "name": "xz", + "version": "5.2.2", + "release": "1.el7", + "newVersion": "5.2.2", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "xz-libs": { + "name": "xz-libs", + "version": "5.2.2", + "release": "1.el7", + "newVersion": "5.2.2", + "newRelease": "1.el7", + "arch": "x86_64", + "repository": "" + }, + "yum": { + "name": "yum", + "version": "3.4.3", + "release": "168.0.3.el7", + "newVersion": "3.4.3", + "newRelease": "168.0.3.el7", + "arch": "noarch", + "repository": "" + }, + "yum-metadata-parser": { + "name": "yum-metadata-parser", + "version": "1.1.4", + "release": "10.el7", + "newVersion": "1.1.4", + "newRelease": "10.el7", + "arch": "x86_64", + "repository": "" + }, + "yum-plugin-ulninfo": { + "name": "yum-plugin-ulninfo", + "version": "0.2", + "release": "13.el7", + "newVersion": "0.2", + "newRelease": "13.el7", + "arch": "noarch", + "repository": "" + }, + "yum-rhn-plugin": { + "name": "yum-rhn-plugin", + "version": "2.0.1", + "release": "10.0.1.el7", + "newVersion": "2.0.1", + "newRelease": "10.0.1.el7", + "arch": "noarch", + "repository": "" + }, + "yum-utils": { + "name": "yum-utils", + "version": "1.1.31", + "release": "54.0.1.el7_8", + "newVersion": "1.1.31", + "newRelease": "54.0.1.el7_8", + "arch": "noarch", + "repository": "" + }, + "zlib": { + "name": "zlib", + "version": "1.2.7", + "release": "19.el7_9", + "newVersion": "1.2.7", + "newRelease": "19.el7_9", + "arch": "x86_64", + "repository": "" + } + }, + "config": { + "scan": { + "logDir": "/var/log/vuls", + "resultsDir": "/home/ubuntu/go/src/github.com/future-architect/vuls/results", + "default": { + "port": "22", + "scanMode": [ + "fast" + ] + }, + "servers": { + "oracle": { + "serverName": "oracle", + "user": "ec2-user", + "host": "13.231.25.205", + "port": "22", + "keyPath": "/home/ubuntu/.ssh/stg.pem", + "scanMode": [ + "fast-root" + ], + "wordpress": {} + } + }, + "cveDict": { + "Name": "cveDict", + "Type": "sqlite3", + "SQLite3Path": "/home/ubuntu/vulsctl/docker/cve.sqlite3", + "DebugSQL": false + }, + "ovalDict": { + "Name": "ovalDict", + "Type": "sqlite3", + "SQLite3Path": "/home/ubuntu/vulsctl/docker/oval.sqlite3", + "DebugSQL": false + }, + "gost": { + "Name": "gost", + "Type": "sqlite3", + "SQLite3Path": "/home/ubuntu/vulsctl/docker/gost.sqlite3", + "DebugSQL": false + }, + "exploit": { + "Name": "exploit", + "Type": "sqlite3", + "SQLite3Path": "/home/ubuntu/vulsctl/docker/go-exploitdb.sqlite3", + "DebugSQL": false + }, + "metasploit": { + "Name": "metasploit", + "Type": "sqlite3", + "SQLite3Path": "/home/ubuntu/vulsctl/docker/go-msfdb.sqlite3", + "DebugSQL": false + } + }, + "report": { + "default": {}, + "cveDict": { + "Name": "", + "Type": "", + "SQLite3Path": "", + "DebugSQL": false + }, + "ovalDict": { + "Name": "", + "Type": "", + "SQLite3Path": "", + "DebugSQL": false + }, + "gost": { + "Name": "", + "Type": "", + "SQLite3Path": "", + "DebugSQL": false + }, + "exploit": { + "Name": "", + "Type": "", + "SQLite3Path": "", + "DebugSQL": false + }, + "metasploit": { + "Name": "", + "Type": "", + "SQLite3Path": "", + "DebugSQL": false + } + } + } +} diff --git a/models/scanresults.go b/models/scanresults.go index 23b94576..cf92c7ea 100644 --- a/models/scanresults.go +++ b/models/scanresults.go @@ -395,18 +395,30 @@ func (r *ScanResult) SortForJSONOutput() { return v.DistroAdvisories[i].AdvisoryID < v.DistroAdvisories[j].AdvisoryID }) sort.SliceStable(v.Exploits, func(i, j int) bool { - return v.Exploits[i].ID < v.Exploits[j].ID + return v.Exploits[i].URL < v.Exploits[j].URL }) sort.SliceStable(v.Metasploits, func(i, j int) bool { return v.Metasploits[i].Name < v.Metasploits[j].Name }) + sort.SliceStable(v.Mitigations, func(i, j int) bool { + return v.Mitigations[i].URL < v.Mitigations[j].URL + }) for kk, vv := range v.CveContents { sort.SliceStable(vv.References, func(i, j int) bool { return vv.References[i].Link < vv.References[j].Link }) + sort.SliceStable(vv.CweIDs, func(i, j int) bool { + return vv.CweIDs[i] < vv.CweIDs[j] + }) + for kkk, vvv := range vv.References { + // sort v.CveContents[].References[].Tags + sort.SliceStable(vvv.Tags, func(i, j int) bool { + return vvv.Tags[i] < vvv.Tags[j] + }) + vv.References[kkk] = vvv + } v.CveContents[kk] = vv } - sort.SliceStable(v.AlertDict.En, func(i, j int) bool { return v.AlertDict.En[i].Title < v.AlertDict.En[j].Title }) diff --git a/models/scanresults_test.go b/models/scanresults_test.go index 54149a5c..615d952f 100644 --- a/models/scanresults_test.go +++ b/models/scanresults_test.go @@ -131,8 +131,8 @@ func TestScanResult_Sort(t *testing.T) { {AdvisoryID: "adv-2"}, }, Exploits: []Exploit{ - {ID: "a"}, - {ID: "b"}, + {URL: "a"}, + {URL: "b"}, }, Metasploits: []Metasploit{ {Name: "a"}, @@ -190,8 +190,8 @@ func TestScanResult_Sort(t *testing.T) { {AdvisoryID: "adv-2"}, }, Exploits: []Exploit{ - {ID: "a"}, - {ID: "b"}, + {URL: "a"}, + {URL: "b"}, }, Metasploits: []Metasploit{ {Name: "a"}, @@ -252,8 +252,8 @@ func TestScanResult_Sort(t *testing.T) { {AdvisoryID: "adv-1"}, }, Exploits: []Exploit{ - {ID: "b"}, - {ID: "a"}, + {URL: "b"}, + {URL: "a"}, }, Metasploits: []Metasploit{ {Name: "b"}, @@ -311,8 +311,8 @@ func TestScanResult_Sort(t *testing.T) { {AdvisoryID: "adv-2"}, }, Exploits: []Exploit{ - {ID: "a"}, - {ID: "b"}, + {URL: "a"}, + {URL: "b"}, }, Metasploits: []Metasploit{ {Name: "a"}, diff --git a/oval/redhat.go b/oval/redhat.go index 9cc6019d..d0f0825a 100644 --- a/oval/redhat.go +++ b/oval/redhat.go @@ -92,6 +92,7 @@ var kernelRelatedPackNames = map[string]bool{ "kernel-tools": true, "kernel-tools-libs": true, "kernel-tools-libs-devel": true, + "kernel-uek": true, "perf": true, "python-perf": true, } diff --git a/oval/util.go b/oval/util.go index a59b1cc1..733252d3 100644 --- a/oval/util.go +++ b/oval/util.go @@ -7,6 +7,7 @@ import ( "net/http" "regexp" "sort" + "strings" "time" "github.com/cenkalti/backoff" @@ -295,6 +296,15 @@ func isOvalDefAffected(def ovalmodels.Definition, req request, family string, ru continue } + if ovalPack.Arch != "" && req.arch != ovalPack.Arch { + continue + } + + // https://github.com/aquasecurity/trivy/pull/745 + if strings.Contains(req.versionRelease, ".ksplice1.") != strings.Contains(ovalPack.Version, ".ksplice1.") { + continue + } + isModularityLabelEmptyOrSame := false if ovalPack.ModularityLabel != "" { for _, mod := range enabledMods { @@ -312,7 +322,7 @@ func isOvalDefAffected(def ovalmodels.Definition, req request, family string, ru if running.Release != "" { switch family { - case constant.RedHat, constant.CentOS: + case constant.RedHat, constant.CentOS, constant.Oracle: // For kernel related packages, ignore OVAL information with different major versions if _, ok := kernelRelatedPackNames[ovalPack.Name]; ok { if util.Major(ovalPack.Version) != util.Major(running.Release) { diff --git a/oval/util_test.go b/oval/util_test.go index 96e05f63..695b324c 100644 --- a/oval/util_test.go +++ b/oval/util_test.go @@ -1153,6 +1153,45 @@ func TestIsOvalDefAffected(t *testing.T) { affected: false, notFixedYet: false, }, + // .ksplice1. + { + in: in{ + family: constant.Oracle, + def: ovalmodels.Definition{ + AffectedPacks: []ovalmodels.Package{ + { + Name: "nginx", + Version: "2:2.17-106.0.1.ksplice1.el7_2.4", + }, + }, + }, + req: request{ + packName: "nginx", + versionRelease: "2:2.17-107", + }, + }, + affected: false, + }, + // .ksplice1. + { + in: in{ + family: constant.Oracle, + def: ovalmodels.Definition{ + AffectedPacks: []ovalmodels.Package{ + { + Name: "nginx", + Version: "2:2.17-106.0.1.ksplice1.el7_2.4", + }, + }, + }, + req: request{ + packName: "nginx", + versionRelease: "2:2.17-105.0.1.ksplice1.el7_2.4", + }, + }, + affected: true, + fixedIn: "2:2.17-106.0.1.ksplice1.el7_2.4", + }, } for i, tt := range tests { affected, notFixedYet, fixedIn := isOvalDefAffected(tt.in.def, tt.in.req, tt.in.family, tt.in.kernel, tt.in.mods) diff --git a/scanner/redhatbase.go b/scanner/redhatbase.go index 376afc8e..b467f523 100644 --- a/scanner/redhatbase.go +++ b/scanner/redhatbase.go @@ -210,7 +210,8 @@ func (o *redhatBase) scanPackages() (err error) { return xerrors.Errorf("Failed to detect installed dnf modules: %w", err) } - o.Kernel.RebootRequired, err = o.rebootRequired() + fn := func(pkgName string) execResult { return o.exec(fmt.Sprintf("rpm -q --last %s", pkgName), noSudo) } + o.Kernel.RebootRequired, err = o.rebootRequired(fn) if err != nil { err = xerrors.Errorf("Failed to detect the kernel reboot required: %w", err) o.log.Warnf("err: %+v", err) @@ -238,8 +239,13 @@ func (o *redhatBase) scanPackages() (err error) { return nil } -func (o *redhatBase) rebootRequired() (bool, error) { - r := o.exec("rpm -q --last kernel", noSudo) +func (o *redhatBase) rebootRequired(fn func(s string) execResult) (bool, error) { + pkgName := "kernel" + if strings.Contains(o.Kernel.Release, "uek.") { + pkgName = "kernel-uek" + } + + r := fn(pkgName) scanner := bufio.NewScanner(strings.NewReader(r.Stdout)) if !r.isSuccess(0, 1) { return false, xerrors.Errorf("Failed to detect the last installed kernel : %v", r) @@ -248,7 +254,7 @@ func (o *redhatBase) rebootRequired() (bool, error) { return false, nil } lastInstalledKernelVer := strings.Fields(scanner.Text())[0] - running := fmt.Sprintf("kernel-%s", o.Kernel.Release) + running := fmt.Sprintf("%s-%s", pkgName, o.Kernel.Release) return running != lastInstalledKernelVer, nil } diff --git a/scanner/redhatbase_test.go b/scanner/redhatbase_test.go index 4c744375..9355dd7f 100644 --- a/scanner/redhatbase_test.go +++ b/scanner/redhatbase_test.go @@ -517,3 +517,127 @@ func Test_redhatBase_parseRpmQfLine(t *testing.T) { }) } } + +func Test_redhatBase_rebootRequired(t *testing.T) { + type fields struct { + base base + sudo rootPriv + } + type args struct { + fn func(s string) execResult + } + tests := []struct { + name string + fields fields + args args + want bool + wantErr bool + }{ + { + name: "uek kernel no-reboot", + fields: fields{ + base: base{ + osPackages: osPackages{ + Kernel: models.Kernel{ + Release: "5.4.17-2102.200.13.el7uek.x86_64", + }, + }, + }, + }, + args: args{ + fn: func(s string) execResult { + return execResult{ + Stdout: `kernel-uek-5.4.17-2102.200.13.el7uek.x86_64 Mon 05 Apr 2021 04:52:06 PM UTC + kernel-uek-4.14.35-2047.501.2.el7uek.x86_64 Mon 05 Apr 2021 04:49:39 PM UTC + kernel-uek-4.14.35-1902.10.2.1.el7uek.x86_64 Wed 29 Jan 2020 05:04:52 PM UTC`, + } + }, + }, + want: false, + wantErr: false, + }, + { + name: "uek kernel needs-reboot", + fields: fields{ + base: base{ + osPackages: osPackages{ + Kernel: models.Kernel{ + Release: "4.14.35-2047.501.2.el7uek.x86_64", + }, + }, + }, + }, + args: args{ + fn: func(s string) execResult { + return execResult{ + Stdout: `kernel-uek-5.4.17-2102.200.13.el7uek.x86_64 Mon 05 Apr 2021 04:52:06 PM UTC + kernel-uek-4.14.35-2047.501.2.el7uek.x86_64 Mon 05 Apr 2021 04:49:39 PM UTC + kernel-uek-4.14.35-1902.10.2.1.el7uek.x86_64 Wed 29 Jan 2020 05:04:52 PM UTC`, + } + }, + }, + want: true, + wantErr: false, + }, + { + name: "kerne needs-reboot", + fields: fields{ + base: base{ + osPackages: osPackages{ + Kernel: models.Kernel{ + Release: "3.10.0-1062.12.1.el7.x86_64", + }, + }, + }, + }, + args: args{ + fn: func(s string) execResult { + return execResult{ + Stdout: `kernel-3.10.0-1160.24.1.el7.x86_64 Mon 26 Apr 2021 10:13:54 AM UTC +kernel-3.10.0-1062.12.1.el7.x86_64 Sat 29 Feb 2020 12:09:00 PM UTC`, + } + }, + }, + want: true, + wantErr: false, + }, + { + name: "kerne no-reboot", + fields: fields{ + base: base{ + osPackages: osPackages{ + Kernel: models.Kernel{ + Release: "3.10.0-1160.24.1.el7.x86_64", + }, + }, + }, + }, + args: args{ + fn: func(s string) execResult { + return execResult{ + Stdout: `kernel-3.10.0-1160.24.1.el7.x86_64 Mon 26 Apr 2021 10:13:54 AM UTC +kernel-3.10.0-1062.12.1.el7.x86_64 Sat 29 Feb 2020 12:09:00 PM UTC`, + } + }, + }, + want: false, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + o := &redhatBase{ + base: tt.fields.base, + sudo: tt.fields.sudo, + } + got, err := o.rebootRequired(tt.args.fn) + if (err != nil) != tt.wantErr { + t.Errorf("redhatBase.rebootRequired() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("redhatBase.rebootRequired() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/scanner/utils.go b/scanner/utils.go index 2f79d965..ae463821 100644 --- a/scanner/utils.go +++ b/scanner/utils.go @@ -28,7 +28,7 @@ func isRunningKernel(pack models.Package, family string, kernel models.Kernel) ( case constant.RedHat, constant.Oracle, constant.CentOS, constant.Amazon: switch pack.Name { - case "kernel", "kernel-devel", "kernel-core", "kernel-modules": + case "kernel", "kernel-devel", "kernel-core", "kernel-modules", "kernel-uek": ver := fmt.Sprintf("%s-%s.%s", pack.Version, pack.Release, pack.Arch) return true, kernel.Release == ver }