Sha256: 027107a30659d90027dec8e9fcb05b8a97369971ad7946cb1528d57881c94a69

Contents?: true

Size: 1.96 KB

Versions: 19

Compression:

Stored size: 1.96 KB

Contents

module Dawn
  module Kb
    module ComboCheck
      include BasicCheck

      attr_reader   :checks
      attr_accessor :options
      attr_reader   :vulnerable_checks


      def initialize(options={})
        super(options)
        @vuln_if_all_fails = true
        @vuln_if_all_fails = options[:vuln_if_all_fails] unless options[:vuln_if_all_fails].nil?
        @checks = options[:checks]
        @vulnerable_checks = []
        @options = options
      end

      def vuln?
        ret = true
        at_least_one = false
        @checks.each do |check|
          check_vuln = false
          check.detected_ruby   = @options[:detected_ruby]    if check.kind == Dawn::KnowledgeBase::RUBY_VERSION_CHECK
          check.dependencies    = @options[:dependencies]     if check.kind == Dawn::KnowledgeBase::DEPENDENCY_CHECK
          check.root_dir        = @options[:root_dir]         if check.kind == Dawn::KnowledgeBase::PATTERN_MATCH_CHECK
          check.debug           = self.debug

          check_vuln = check.vuln? if check.respond_to?(:vuln?)

          ret = ret && check_vuln
          at_least_one = true if check_vuln
          @evidences << check.evidences if check_vuln
          @vulnerable_checks << check if check_vuln
          raise "A check class doesn't respond to vuln? in combo (#{check.class})" unless check.respond_to?(:vuln?)
        end

        dump_status
        debug_me("combo_check: is_vulnerable_if_all_checks_fail = #{@vuln_if_all_fails}, RET = #{ret}, at_least_one= #{at_least_one}")
        return ret if @vuln_if_all_fails
        return at_least_one unless @vuln_if_all_fails
      end

      def dump_status
        @checks.each do |check|
          debug_me("check name is #{check.name} and vulnerable status is #{check.status}")
        end

        true
      end

      def self.find_vulnerable_checks_by_class(list=[], klass=Object)
        list.each do |l|
          return l if l.instance_of?(klass)
        end
        nil
      end

    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
dawnscanner-1.6.9 lib/dawn/kb/combo_check.rb
dawnscanner-1.6.8 lib/dawn/kb/combo_check.rb
dawnscanner-1.6.7 lib/dawn/kb/combo_check.rb
dawnscanner-1.6.6 lib/dawn/kb/combo_check.rb
dawnscanner-1.6.5 lib/dawn/kb/combo_check.rb
dawnscanner-1.6.4 lib/dawn/kb/combo_check.rb
dawnscanner-1.6.3 lib/dawn/kb/combo_check.rb
dawnscanner-1.6.2 lib/dawn/kb/combo_check.rb
dawnscanner-1.6.1 lib/dawn/kb/combo_check.rb
dawnscanner-1.6.0 lib/dawn/kb/combo_check.rb
dawnscanner-1.5.2 lib/dawn/kb/combo_check.rb
dawnscanner-1.5.1 lib/dawn/kb/combo_check.rb
dawnscanner-1.5.0 lib/dawn/kb/combo_check.rb
dawnscanner-1.4.2 lib/dawn/kb/combo_check.rb
dawnscanner-1.4.1 lib/dawn/kb/combo_check.rb
dawnscanner-1.4.0 lib/dawn/kb/combo_check.rb
dawnscanner-1.3.5 lib/dawn/kb/combo_check.rb
dawnscanner-1.3.1 lib/dawn/kb/combo_check.rb
dawnscanner-1.3.0 lib/dawn/kb/combo_check.rb