Class: Rules::DockerBuildArgSecrets

Inherits:
Base
  • Object
show all
Defined in:
lib/rules/docker_build_arg_secrets.rb

Instance Method Summary collapse

Instance Method Details

#check(workflow) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rules/docker_build_arg_secrets.rb', line 7

def check(workflow)
  findings = []

  workflow.lines_of(/build-args:/).each do |line_num|
    (line_num..(line_num + 20)).each do |i|
      break if i > workflow.raw_lines.length
      line = workflow.line_content(i)
      break if line&.match?(/^\s*\w+:/) && !line.match?(/^\s+["']?[A-Z_]+=/)

      if line&.match?(/secrets\./)
        findings << finding(workflow,
          line: i,
          code: line.strip,
          message: "Secret in Docker build-arg — extractable via docker history",
          fix: "Use --secret flag or RUN --mount=type=secret instead of build-arg"
        )
      end
    end
  end

  findings
end

#descriptionObject



4
# File 'lib/rules/docker_build_arg_secrets.rb', line 4

def description = "Secrets passed as Docker build-args (visible in image layers)"

#nameObject



3
# File 'lib/rules/docker_build_arg_secrets.rb', line 3

def name = "docker-build-arg-secrets"

#severityObject



5
# File 'lib/rules/docker_build_arg_secrets.rb', line 5

def severity = :high