kube_auto_analyzer 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 505335d6f2e3102fce7ab791cf9dbd0d425287f6
4
- data.tar.gz: 2ae7b141f4b7fca4d37c3bf95a9f86d26ac8685b
2
+ SHA256:
3
+ metadata.gz: 6942a3c49b753679c8a0e5f3822792ef6ff48eb9d4e053ef912f71e27a445fa2
4
+ data.tar.gz: 0a7721a4baf81d4655c76d264cc2a2a62358b9f4a1129441e8c9ae3bb6d1a42a
5
5
  SHA512:
6
- metadata.gz: b8c7815f485ee0b1d293bc9e42a7f13d73a7c42cee38e5027394091e30040c50fc3631d1e0bc3ad9d5c17e7a106a2dd5946cdbe2080bb07a582f4f44180fdf38
7
- data.tar.gz: c6c9ff8509a21c8d287b505f1c6e17b157c0adf61318b73326722885d7f17b044f1d46341a297c14cb63e8c7e7fbcada3a8220245ee31e5f659d48f3462eb766
6
+ metadata.gz: 304c20becfe0d4b891577ff79450b6160f66d9472b572ffc64c8ea9f60854cb687e4c447e9931936a53fbc54cc307256d3b73e656334f0a8a8e2c08f017def80
7
+ data.tar.gz: ec5669b731a1835a6dbde5a259b2f90a6ab418152dde5778a74d2c2024fa136f7249c52a1975629c6ca9047a300dee9759b6163759c2c9fd318fc37bde7f5531
data/bin/kubeautoanalyzer CHANGED
@@ -17,6 +17,7 @@
17
17
  options.insecure = false
18
18
  options.context = false
19
19
  options.nosslverify = false
20
+ options.dump_config = false
20
21
 
21
22
  opts = OptionParser.new do |opts|
22
23
  opts.banner = "Kubernetes Auto Analyzer #{KubeAutoAnalyzer::VERSION}"
@@ -28,6 +29,10 @@
28
29
  options.config_file = file
29
30
  end
30
31
 
32
+ opts.on("-d", "--dump [DUMP]", "Dump cluster config into report") do |dump|
33
+ options.dump_config = true
34
+ end
35
+
31
36
  opts.on("--context [CONTEXT]", "context to use from kubeconfig") do |context|
32
37
  options.context = context
33
38
  end
@@ -2,6 +2,7 @@ module KubeAutoAnalyzer
2
2
  attr_accessor :execute
3
3
  require "kube_auto_analyzer/version"
4
4
  require "kube_auto_analyzer/api_checks/master_node"
5
+ require "kube_auto_analyzer/api_checks/config_dumper"
5
6
  require "kube_auto_analyzer/reporting"
6
7
  require "kube_auto_analyzer/agent_checks/file_checks"
7
8
  require "kube_auto_analyzer/agent_checks/process_checks"
@@ -117,6 +118,9 @@ module KubeAutoAnalyzer
117
118
  check_kubelet_process
118
119
  check_amicontained
119
120
  end
121
+ if @options.dump_config
122
+ dump_config
123
+ end
120
124
  if @options.html_report
121
125
  html_report
122
126
  end
@@ -0,0 +1,30 @@
1
+ module KubeAutoAnalyzer
2
+ def self.dump_config
3
+ @log.debug("Entering the config dumper module")
4
+ target = @options.target_server
5
+ @log.debug("dumping the config for #{target}")
6
+ @results[target][:config] = Hash.new
7
+ pods = @client.get_pods
8
+ docker_images = Array.new
9
+ #Specific requirement here in that it's useful to know what Docker images are in use on the cluster.
10
+ pods.each do |pod|
11
+ docker_images << pod.status[:containerStatuses][0][:image]
12
+ end
13
+ @log.debug("logged #{docker_images.length} docker images")
14
+ @results[target][:config][:docker_images] = docker_images.uniq
15
+
16
+ @results[target][:config][:pod_info] = Array.new
17
+
18
+ #Lets record some information about each pod
19
+ pods.each do |pod|
20
+ currpod = Hash.new
21
+ currpod[:name] = pod.metadata[:name]
22
+ currpod[:namespace] = pod.metadata[:namespace]
23
+ currpod[:service_account] = pod.spec[:serviceAccount]
24
+ currpod[:host_ip] = pod[:status][:hostIP]
25
+ currpod[:pod_ip] = pod[:status][:podIP]
26
+ @results[target][:config][:pod_info] << currpod
27
+ end
28
+
29
+ end
30
+ end
@@ -259,6 +259,27 @@ module KubeAutoAnalyzer
259
259
  @results[@options.target_server]['evidence'].each do |area, output|
260
260
  @html_report_file.puts "<tr><td>#{area}</td><td>#{output}</td></tr>"
261
261
  end
262
+ @html_report_file.puts "</table>"
263
+
264
+ #Only show this section if we were asked to dump the config
265
+ if @options.dump_config
266
+ @html_report_file.puts "<br><br>"
267
+ @html_report_file.puts "<br><br><h2>Cluster Config Information</h2>"
268
+ @html_report_file.puts "<table><thead><tr><th>Docker Images In Use</th></tr></thead>"
269
+ @results[@options.target_server][:config][:docker_images].each do |image|
270
+ @html_report_file.puts "<tr><td>#{image}</td></tr>"
271
+ end
272
+ @html_report_file.puts "</table>"
273
+ @html_report_file.puts "<br><br>"
274
+ @html_report_file.puts "<table><thead><tr><th>Pod Name</th><th>Namespace</th><th>Service Account</th><th>Host IP</th><th>Pod IP</th></tr></thead>"
275
+ @results[@options.target_server][:config][:pod_info].each do |pod|
276
+ @html_report_file.puts "<tr><td>#{pod[:name]}</td><td>#{pod[:namespace]}</td><td>#{pod[:service_account]}</td><td>#{pod[:host_ip]}</td><td>#{pod[:pod_ip]}</td></tr>"
277
+ end
278
+ @html_report_file.puts "</table>"
279
+ @html_report_file.puts "<br><br>"
280
+ end
281
+
282
+
262
283
  #Close the master Node Div
263
284
  @html_report_file.puts "</table></div>"
264
285
  if @options.agent_checks
@@ -331,7 +352,7 @@ module KubeAutoAnalyzer
331
352
  @html_report_file.puts '<br><h3>External Unauthenticated Access to the Kubelet</h3>'
332
353
  @html_report_file.puts "<table><thead><tr><th>Node IP Address</th><th>Result</th></thead>"
333
354
  @results[@options.target_server]['vulns']['unauth_kubelet'].each do |node, result|
334
- unless (result =~ /Forbidden/ || result =~ /Not Open/)
355
+ unless (result =~ /Forbidden/ || result =~ /Not Open/ || result =~ /Unauthorized/)
335
356
  output = "Vulnerable"
336
357
  else
337
358
  output = result
@@ -1,3 +1,3 @@
1
1
  module KubeAutoAnalyzer
2
- VERSION = "0.0.13"
2
+ VERSION = "0.0.14"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kube_auto_analyzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rory McCune
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-08 00:00:00.000000000 Z
11
+ date: 2018-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -67,6 +67,7 @@ files:
67
67
  - lib/kube_auto_analyzer.rb
68
68
  - lib/kube_auto_analyzer/agent_checks/file_checks.rb
69
69
  - lib/kube_auto_analyzer/agent_checks/process_checks.rb
70
+ - lib/kube_auto_analyzer/api_checks/config_dumper.rb
70
71
  - lib/kube_auto_analyzer/api_checks/master_node.rb
71
72
  - lib/kube_auto_analyzer/data-logo.b64
72
73
  - lib/kube_auto_analyzer/js_files/chartkick.js
@@ -99,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
100
  version: '0'
100
101
  requirements: []
101
102
  rubyforge_project:
102
- rubygems_version: 2.4.8
103
+ rubygems_version: 2.7.7
103
104
  signing_key:
104
105
  specification_version: 4
105
106
  summary: A Gem which provides a script and class analyze the security of a Kubernetes