quayio-scanner 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1eacf83494b11fb31f062ba8e916628d2477ba13ec76cc83ef8f98091c2b0313
4
- data.tar.gz: 3bdf57c972fa6e1aa5e500cc3e887e7f4ea33498644dcd7b8a90ed0e93d9d24a
3
+ metadata.gz: 5c3eabc5c737c5a7e3e6c104f221de20f4dc1be4e91bb54241f308f5367b84c5
4
+ data.tar.gz: 457e6d878eb67842929377ffe54589efe832335275c4a0ef0ea5845ea9d68fd0
5
5
  SHA512:
6
- metadata.gz: b7ffabd2e0523bce627fd779519c25828546e6591c6cbdbbc536ffcd783b1898f3c88eab366d84bca14b1ed6b51f62cafd258bad6ab83e1cc5364db22c92c5b5
7
- data.tar.gz: 4dc30215d24326a4494cc06edd31cfb226682060c819d1d972c5bf114e569ca9978871072ab20382bdc7126d84050e027dd2c2bbe9b8e538546fc2d3b5a36484
6
+ metadata.gz: a89b445dfb42e088056cfa4b07634eb7fab13b5d7a5d342a39188f660e8b7da7f521d04b76540c084f59b364b7af322ae3718d017c56c100a556e9baffa8231c
7
+ data.tar.gz: e459485a56218b2305bfe7294f2936fba44cb1d063ac0951060290a5c77e6ad8aaa341e2ffa1dd4e0dcab13583ff64cda96e861ccac0ed6f3be030fdb308e2e0
data/.rubocop.yml CHANGED
@@ -1,14 +1,28 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.3
3
3
 
4
+ Lint/RaiseException:
5
+ Enabled: true
6
+
7
+ Lint/StructNewOverride:
8
+ Enabled: true
9
+
10
+
11
+ Metrics:
12
+ Enabled: false
13
+
14
+
4
15
  Style/FrozenStringLiteralComment:
5
16
  Enabled: false
6
17
 
7
18
  Style/Documentation:
8
19
  Enabled: false
9
20
 
10
- Metrics/MethodLength:
11
- Max: 50
21
+ Style/HashEachMethods:
22
+ Enabled: true
23
+
24
+ Style/HashTransformKeys:
25
+ Enabled: true
12
26
 
13
- Metrics/BlockLength:
14
- Max: 200
27
+ Style/HashTransformValues:
28
+ Enabled: true
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- quayio-scanner (0.3.0)
4
+ quayio-scanner (0.3.1)
5
5
  docker-api (~> 1.33)
6
6
  rest-client (~> 2.1)
7
7
  sensu-plugin (~> 4.0)
@@ -16,11 +16,12 @@ GEM
16
16
  multi_json
17
17
  domain_name (0.5.20190701)
18
18
  unf (>= 0.0.5, < 1.0.0)
19
- excon (0.92.1)
19
+ excon (0.92.3)
20
20
  http-accept (1.7.0)
21
- http-cookie (1.0.4)
21
+ http-cookie (1.0.5)
22
22
  domain_name (~> 0.5)
23
- json (2.6.1)
23
+ jaro_winkler (1.5.4)
24
+ json (2.6.2)
24
25
  mime-types (3.4.1)
25
26
  mime-types-data (~> 3.2015)
26
27
  mime-types-data (3.2022.0105)
@@ -28,11 +29,10 @@ GEM
28
29
  multi_json (1.15.0)
29
30
  netrc (0.11.0)
30
31
  parallel (1.22.1)
31
- parser (3.1.1.0)
32
+ parser (3.1.2.0)
32
33
  ast (~> 2.4.1)
33
34
  rainbow (3.1.1)
34
- rake (10.5.0)
35
- regexp_parser (2.2.1)
35
+ rake (13.0.6)
36
36
  rest-client (2.1.0)
37
37
  http-accept (>= 1.7.0, < 2.0)
38
38
  http-cookie (>= 1.0.2, < 2.0)
@@ -48,28 +48,25 @@ GEM
48
48
  rspec-expectations (3.11.0)
49
49
  diff-lcs (>= 1.2.0, < 2.0)
50
50
  rspec-support (~> 3.11.0)
51
- rspec-mocks (3.11.0)
51
+ rspec-mocks (3.11.1)
52
52
  diff-lcs (>= 1.2.0, < 2.0)
53
53
  rspec-support (~> 3.11.0)
54
54
  rspec-support (3.11.0)
55
- rubocop (0.93.1)
55
+ rubocop (0.81.0)
56
+ jaro_winkler (~> 1.5.1)
56
57
  parallel (~> 1.10)
57
- parser (>= 2.7.1.5)
58
+ parser (>= 2.7.0.1)
58
59
  rainbow (>= 2.2.2, < 4.0)
59
- regexp_parser (>= 1.8)
60
60
  rexml
61
- rubocop-ast (>= 0.6.0)
62
61
  ruby-progressbar (~> 1.7)
63
62
  unicode-display_width (>= 1.4.0, < 2.0)
64
- rubocop-ast (1.16.0)
65
- parser (>= 3.1.1.0)
66
63
  ruby-progressbar (1.11.0)
67
64
  sensu-plugin (4.0.0)
68
65
  json (< 3.0.0)
69
66
  mixlib-cli (~> 1.5)
70
67
  unf (0.1.4)
71
68
  unf_ext
72
- unf_ext (0.0.8.1)
69
+ unf_ext (0.0.8.2)
73
70
  unicode-display_width (1.8.0)
74
71
 
75
72
  PLATFORMS
@@ -78,9 +75,9 @@ PLATFORMS
78
75
  DEPENDENCIES
79
76
  bundler (~> 2.1)
80
77
  quayio-scanner!
81
- rake (~> 10.0)
78
+ rake (~> 13.0)
82
79
  rspec (~> 3.7)
83
- rubocop (~> 0.49)
80
+ rubocop (~> 0.49, <= 0.81)
84
81
 
85
82
  BUNDLED WITH
86
- 2.2.23
83
+ 2.1.4
@@ -0,0 +1,56 @@
1
+ Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
2
+ You can redistribute it and/or modify it under either the terms of the
3
+ 2-clause BSDL (see the file BSDL), or the conditions below:
4
+
5
+ 1. You may make and give away verbatim copies of the source form of the
6
+ software without restriction, provided that you duplicate all of the
7
+ original copyright notices and associated disclaimers.
8
+
9
+ 2. You may modify your copy of the software in any way, provided that
10
+ you do at least ONE of the following:
11
+
12
+ a) place your modifications in the Public Domain or otherwise
13
+ make them Freely Available, such as by posting said
14
+ modifications to Usenet or an equivalent medium, or by allowing
15
+ the author to include your modifications in the software.
16
+
17
+ b) use the modified software only within your corporation or
18
+ organization.
19
+
20
+ c) give non-standard binaries non-standard names, with
21
+ instructions on where to get the original software distribution.
22
+
23
+ d) make other distribution arrangements with the author.
24
+
25
+ 3. You may distribute the software in object code or binary form,
26
+ provided that you do at least ONE of the following:
27
+
28
+ a) distribute the binaries and library files of the software,
29
+ together with instructions (in the manual page or equivalent)
30
+ on where to get the original distribution.
31
+
32
+ b) accompany the distribution with the machine-readable source of
33
+ the software.
34
+
35
+ c) give non-standard binaries non-standard names, with
36
+ instructions on where to get the original software distribution.
37
+
38
+ d) make other distribution arrangements with the author.
39
+
40
+ 4. You may modify and include the part of the software into any other
41
+ software (possibly commercial). But some files in the distribution
42
+ are not written by the author, so that they are not under these terms.
43
+
44
+ For the list of those files and their copying conditions, see the
45
+ file LEGAL.
46
+
47
+ 5. The scripts and library files supplied as input to or produced as
48
+ output from the software do not automatically fall under the
49
+ copyright of the software, but belong to whomever generated them,
50
+ and may be sold commercially, and may be aggregated with this
51
+ software.
52
+
53
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
54
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
55
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
56
+ PURPOSE.
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Quayio::Scanner
2
2
 
3
- Scan quay.io for vulnerabilties in running docker containers. Implemented as sensu check.
3
+ Quayio Scanner translates critical vulnerabilities in running docker containers
4
+ into Sensu check results to transform vulnerability scans into actionable alerts.
4
5
 
5
6
  ## Installation
6
7
 
@@ -18,15 +19,34 @@ Or install it yourself as:
18
19
 
19
20
  $ gem install quayio-scanner
20
21
 
22
+ ## USAGE
23
+
24
+ This plugin attempts to fetch vulnerabilities for all running containers
25
+
26
+ ### Parameters
27
+
28
+ | Parameter | Description |
29
+ |---------------|-------------------------|
30
+ | -d URL | Docker URL |
31
+ | -t TOKEN | Quay.io oauth token |
32
+ | -w WHITELIST | Vulnerability whitelist |
33
+
34
+ ### Example
35
+
36
+ $ check-container-vulnerabilities.rb --docker-url unix:///var/run/docker.sock --quayio-token AccessTokenGoesHere
37
+
21
38
  ## Contributing
22
39
 
23
40
  Bug reports and pull requests are welcome on GitHub at https://github.com/aboutsource/quayio-scanner.
24
41
 
25
-
26
42
  ## License
27
43
 
28
44
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
29
45
 
46
+ ### json
47
+
48
+ Copyright 2019 - present [Florian Frank](mailto:flori@ping.de) - The gem [json](https://github.com/flori/json/) is distributed under the [Ruby License](LICENSE/json/LICENSE.txt).
49
+
30
50
  ## Security
31
51
 
32
- * [Snyk](https://app.snyk.io/org/about-source/project/6eb2d381-87e7-49c4-a47f-ccad97f33ae3)
52
+ - [Snyk](https://app.snyk.io/org/about-source/project/6eb2d381-87e7-49c4-a47f-ccad97f33ae3)
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # DESCRIPTION:
6
6
  #
7
- # This plugin attempts to fetch vulnerabilties for all running containers
7
+ # This plugin attempts to fetch vulnerabilities for all running containers
8
8
  #
9
9
  # OUTPUT:
10
10
  # plain text
@@ -18,7 +18,8 @@
18
18
  # gem: rest-client
19
19
  #
20
20
  # USAGE:
21
- # ./check-container-vulnerabilities.rb -d <docker-url> -t <quay-io-oauth-token>
21
+ # ./check-container-vulnerabilities.rb \
22
+ # -d <docker-url> -t <quay-io-oauth-token>
22
23
  #
23
24
 
24
25
  require 'sensu-plugin/check/cli'
@@ -9,7 +9,10 @@ module Quayio
9
9
  if vulnerable_images.empty?
10
10
  [:ok, "#{containers.size} Containers are ok"]
11
11
  else
12
- [:critical, "The images are insecure: #{vulnerable_images.join(', ')}"]
12
+ [
13
+ :critical,
14
+ "The images are insecure: #{vulnerable_images.join(', ')}"
15
+ ]
13
16
  end
14
17
  end
15
18
 
@@ -2,7 +2,8 @@ module Quayio
2
2
  module Scanner
3
3
  class Image
4
4
  RELEVANT_SEVERITIES = %w[High Critical].freeze
5
- QUAY_IO_REPO_NAME = %r{quay.io\/(?<org>[\w-]+)\/(?<repo>[\w-]+):(?<tag>[\w.-]+)}.freeze
5
+ QUAY_IO_REPO_NAME =
6
+ %r{quay.io\/(?<org>[\w-]+)\/(?<repo>[\w-]+):(?<tag>[\w.-]+)}.freeze
6
7
 
7
8
  attr_reader :name, :whitelist, :repository
8
9
 
@@ -24,7 +25,7 @@ module Quayio
24
25
 
25
26
  def quayio?
26
27
  # safe guard, do not trust QUAY_IO_REPO_NAME regex match
27
- !!name.match(%r{^quay.io\/})
28
+ name.match?(%r{^quay.io\/})
28
29
  end
29
30
 
30
31
  def scanned?
@@ -32,11 +33,12 @@ module Quayio
32
33
  end
33
34
 
34
35
  def vulnerabilities_present?
35
- !!raw_scan['data']['Layer']['Features'].detect do |f|
36
+ !raw_scan['data']['Layer']['Features'].detect do |f|
36
37
  f['Vulnerabilities']&.detect do |v|
37
- RELEVANT_SEVERITIES.include?(v['Severity']) && !whitelist.include?(v['Name'])
38
+ RELEVANT_SEVERITIES.include?(v['Severity']) &&\
39
+ !whitelist.include?(v['Name'])
38
40
  end
39
- end
41
+ end.nil?
40
42
  end
41
43
 
42
44
  def raw_scan
@@ -18,7 +18,7 @@ module Quayio
18
18
 
19
19
  def fetch_manifest_ref
20
20
  result = api_call("/tag/?specificTag=#{tag}&onlyActiveTags=1")
21
- (result['tags'].first)['manifest_digest']
21
+ result['tags'].first['manifest_digest']
22
22
  end
23
23
 
24
24
  def api_call(uri)
@@ -1,5 +1,5 @@
1
1
  module Quayio
2
2
  module Scanner
3
- VERSION = '0.3.0'.freeze
3
+ VERSION = '0.3.1'.freeze
4
4
  end
5
5
  end
@@ -8,7 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ['Benjamin Meichsner']
9
9
  spec.email = ['benjamin.meichsner@aboutsource.net']
10
10
 
11
- spec.summary = 'Scan quay.io for vulnerabilties in running docker containers.'
11
+ spec.summary = 'Scan quay.io for vulnerabilities in '\
12
+ 'running docker containers.'
12
13
  spec.homepage = 'https://github.com/aboutsource/quayio-scanner'
13
14
  spec.license = 'MIT'
14
15
 
@@ -17,14 +18,14 @@ Gem::Specification.new do |spec|
17
18
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
19
  f.match(%r{^(test|spec|features)/})
19
20
  end
20
- spec.executables = Dir.glob('bin/**/*.rb').map { |file| File.basename(file) }
21
+ spec.executables = Dir.glob('bin/**/*.rb').map { |f| File.basename(f) }
21
22
  spec.require_paths = ['lib']
22
23
 
23
24
  spec.add_dependency 'docker-api', '~> 1.33'
24
25
  spec.add_dependency 'rest-client', '~> 2.1'
25
26
  spec.add_dependency 'sensu-plugin', '~> 4.0'
26
27
  spec.add_development_dependency 'bundler', '~> 2.1'
27
- spec.add_development_dependency 'rake', '~> 10.0'
28
+ spec.add_development_dependency 'rake', '~> 13.0'
28
29
  spec.add_development_dependency 'rspec', '~> 3.7'
29
- spec.add_development_dependency 'rubocop', '~> 0.49'
30
+ spec.add_development_dependency 'rubocop', '~> 0.49', '<= 0.81'
30
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quayio-scanner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Meichsner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-29 00:00:00.000000000 Z
11
+ date: 2022-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docker-api
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '10.0'
75
+ version: '13.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '10.0'
82
+ version: '13.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -101,6 +101,9 @@ dependencies:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0.49'
104
+ - - "<="
105
+ - !ruby/object:Gem::Version
106
+ version: '0.81'
104
107
  type: :development
105
108
  prerelease: false
106
109
  version_requirements: !ruby/object:Gem::Requirement
@@ -108,6 +111,9 @@ dependencies:
108
111
  - - "~>"
109
112
  - !ruby/object:Gem::Version
110
113
  version: '0.49'
114
+ - - "<="
115
+ - !ruby/object:Gem::Version
116
+ version: '0.81'
111
117
  description:
112
118
  email:
113
119
  - benjamin.meichsner@aboutsource.net
@@ -122,6 +128,7 @@ files:
122
128
  - Gemfile
123
129
  - Gemfile.lock
124
130
  - LICENSE.txt
131
+ - LICENSE/json/LICENSE.txt
125
132
  - README.md
126
133
  - Rakefile
127
134
  - bin/check-container-vulnerabilities.rb
@@ -153,5 +160,5 @@ requirements: []
153
160
  rubygems_version: 3.1.2
154
161
  signing_key:
155
162
  specification_version: 4
156
- summary: Scan quay.io for vulnerabilties in running docker containers.
163
+ summary: Scan quay.io for vulnerabilities in running docker containers.
157
164
  test_files: []