Class: ContainerFilesystemDiff

Inherits:
Dockscan::Modules::AuditModule show all
Defined in:
lib/dockscan/modules/audit/container-filesystem-diff.rb

Instance Attribute Summary

Attributes inherited from Dockscan::Modules::AuditModule

#scandata

Instance Method Summary collapse

Methods inherited from Dockscan::Modules::AuditModule

#idcontainer

Methods inherited from Dockscan::Modules::GenericModule

inherited, modules

Instance Method Details

#check(dockercheck) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dockscan/modules/audit/container-filesystem-diff.rb', line 7

def check(dockercheck)

	limit=5
	sp=Dockscan::Scan::Plugin.new
	si=Dockscan::Scan::Issue.new
	si.title="Container have higher number of changed files"
	si.description="Container have high number of changed files which is not recommended practice.\nThis is not recommended for production as data can be lost. It can also mean successful break in attempt."
	si.solution="It is recommended to have minimal number of changed files inside container and do not store data inside container. It is recommended to use volumes."
	si.severity=4 # Low
	si.risk = { "cvss" => 3.2 } 
	sp.vuln=si	
	sp.output=""
	if scandata.key?("GetContainers") and not scandata["GetContainers"].obj.empty?
		sp.state="run"
		scandata["GetContainers"].obj.each do |container|
			begin
				ps=container.changes
				if ps.count > limit then
					sp.state="vulnerable"
					allch = ''
					ps.each do |change|
						allch << change["Path"] << "\n"
					end
					sp.output << idcontainer(container) << " has more than #{limit} file changes: #{ps.count}\n"
					sp.output << allch
					sp.output << "\n"
				end
			rescue
			end
		end
	end
	return sp
end

#infoObject



3
4
5
# File 'lib/dockscan/modules/audit/container-filesystem-diff.rb', line 3

def info
	return 'This plugin checks for filesystem differences'
end