dawnscanner 1.2.99
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +4 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +19 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +8 -0
- data/Changelog.md +412 -0
- data/Gemfile +4 -0
- data/KnowledgeBase.md +213 -0
- data/LICENSE.txt +22 -0
- data/README.md +354 -0
- data/Rakefile +250 -0
- data/Roadmap.md +59 -0
- data/bin/dawn +210 -0
- data/certs/paolo_at_codesake_dot_com.pem +21 -0
- data/checksum/.placeholder +0 -0
- data/checksum/codesake-dawn-1.1.0.gem.sha512 +1 -0
- data/checksum/codesake-dawn-1.1.0.rc1.gem.sha512 +1 -0
- data/checksum/codesake-dawn-1.1.1.gem.sha512 +1 -0
- data/checksum/codesake-dawn-1.1.2.gem.sha512 +1 -0
- data/checksum/codesake-dawn-1.1.3.gem.sha512 +1 -0
- data/checksum/codesake-dawn-1.2.0.gem.sha512 +1 -0
- data/checksum/codesake-dawn-1.2.99.gem.sha512 +1 -0
- data/dawnscanner.gemspec +43 -0
- data/doc/codesake-dawn.yaml.sample +26 -0
- data/doc/dawn_1_0_announcement.md +139 -0
- data/doc/dawn_1_1_announcement.md +67 -0
- data/doc/dawn_1_2_announcement.md +69 -0
- data/features/dawn_complains_about_an_incorrect_command_line.feature.disabled +21 -0
- data/features/dawn_scan_a_secure_sinatra_app.feature.disabled +31 -0
- data/features/dawn_scan_a_vulnerable_sinatra_app.feature.disabled +36 -0
- data/features/step_definition/dawn_steps.rb +19 -0
- data/features/support/env.rb +1 -0
- data/lib/codesake-dawn.rb +12 -0
- data/lib/codesake/dawn/core.rb +175 -0
- data/lib/codesake/dawn/engine.rb +380 -0
- data/lib/codesake/dawn/gemfile_lock.rb +12 -0
- data/lib/codesake/dawn/kb/basic_check.rb +228 -0
- data/lib/codesake/dawn/kb/combo_check.rb +64 -0
- data/lib/codesake/dawn/kb/cve_2004_0755.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2004_0983.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2005_1992.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2005_2337.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2006_1931.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2006_2582.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2006_3694.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2006_4112.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2006_5467.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2006_6303.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2006_6852.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2006_6979.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2007_0469.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2007_5162.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2007_5379.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2007_5380.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2007_5770.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2007_6077.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2007_6612.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2008_1145.rb +40 -0
- data/lib/codesake/dawn/kb/cve_2008_1891.rb +40 -0
- data/lib/codesake/dawn/kb/cve_2008_2376.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2008_2662.rb +35 -0
- data/lib/codesake/dawn/kb/cve_2008_2663.rb +34 -0
- data/lib/codesake/dawn/kb/cve_2008_2664.rb +35 -0
- data/lib/codesake/dawn/kb/cve_2008_2725.rb +33 -0
- data/lib/codesake/dawn/kb/cve_2008_3655.rb +39 -0
- data/lib/codesake/dawn/kb/cve_2008_3657.rb +39 -0
- data/lib/codesake/dawn/kb/cve_2008_3790.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2008_3905.rb +38 -0
- data/lib/codesake/dawn/kb/cve_2008_4094.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2008_4310.rb +103 -0
- data/lib/codesake/dawn/kb/cve_2008_5189.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2008_7248.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2009_4078.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2009_4124.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2009_4214.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2010_1330.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2010_2489.rb +62 -0
- data/lib/codesake/dawn/kb/cve_2010_3933.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2011_0188.rb +69 -0
- data/lib/codesake/dawn/kb/cve_2011_0446.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2011_0447.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2011_0739.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2011_0995.rb +63 -0
- data/lib/codesake/dawn/kb/cve_2011_1004.rb +36 -0
- data/lib/codesake/dawn/kb/cve_2011_1005.rb +33 -0
- data/lib/codesake/dawn/kb/cve_2011_2197.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2011_2686.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2011_2705.rb +34 -0
- data/lib/codesake/dawn/kb/cve_2011_2929.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2011_2930.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2011_2931.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2011_2932.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2011_3009.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2011_3186.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2011_3187.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2011_4319.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2011_4815.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2011_5036.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2012_1098.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2012_1099.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_1241.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_2139.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2012_2140.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_2660.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2012_2661.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_2671.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2012_2694.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2012_2695.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_3424.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2012_3463.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_3464.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_3465.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2012_4464.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_4466.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_4481.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2012_4522.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_5370.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_5371.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_5380.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2012_6109.rb +27 -0
- data/lib/codesake/dawn/kb/cve_2012_6134.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2012_6496.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2012_6497.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_0155.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2013_0156.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_0162.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_0175.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_0183.rb +27 -0
- data/lib/codesake/dawn/kb/cve_2013_0184.rb +27 -0
- data/lib/codesake/dawn/kb/cve_2013_0233.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_0256.rb +61 -0
- data/lib/codesake/dawn/kb/cve_2013_0262.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_0263.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_0269.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_0276.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_0277.rb +27 -0
- data/lib/codesake/dawn/kb/cve_2013_0284.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_0285.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_0333.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_1607.rb +27 -0
- data/lib/codesake/dawn/kb/cve_2013_1655.rb +67 -0
- data/lib/codesake/dawn/kb/cve_2013_1656.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_1756.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_1800.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_1801.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_1802.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_1812.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_1821.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_1854.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_1855.rb +27 -0
- data/lib/codesake/dawn/kb/cve_2013_1856.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_1857.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_1875.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_1898.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_1911.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_1933.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_1947.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_1948.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_2065.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2013_2090.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_2105.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_2119.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_2512.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_2513.rb +27 -0
- data/lib/codesake/dawn/kb/cve_2013_2516.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_2615.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_2616.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_2617.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_3221.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_4164.rb +32 -0
- data/lib/codesake/dawn/kb/cve_2013_4203.rb +27 -0
- data/lib/codesake/dawn/kb/cve_2013_4389.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_4413.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_4457.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2013_4478.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_4479.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_4489.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_4491.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_4492.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2013_4562.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_4593.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2013_5647.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2013_5671.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2013_6414.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2013_6415.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_6416.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2013_6417.rb +31 -0
- data/lib/codesake/dawn/kb/cve_2013_6421.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_6459.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2013_6460.rb +55 -0
- data/lib/codesake/dawn/kb/cve_2013_6461.rb +59 -0
- data/lib/codesake/dawn/kb/cve_2013_7086.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2014_0036.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2014_0080.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2014_0081.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2014_0082.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2014_0130.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2014_1233.rb +29 -0
- data/lib/codesake/dawn/kb/cve_2014_1234.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2014_2322.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2014_2525.rb +61 -0
- data/lib/codesake/dawn/kb/cve_2014_2538.rb +28 -0
- data/lib/codesake/dawn/kb/cve_2014_3482.rb +30 -0
- data/lib/codesake/dawn/kb/cve_2014_3483.rb +29 -0
- data/lib/codesake/dawn/kb/dependency_check.rb +86 -0
- data/lib/codesake/dawn/kb/deprecation_check.rb +40 -0
- data/lib/codesake/dawn/kb/not_revised_code.rb +24 -0
- data/lib/codesake/dawn/kb/operating_system_check.rb +98 -0
- data/lib/codesake/dawn/kb/osvdb_105971.rb +31 -0
- data/lib/codesake/dawn/kb/osvdb_108530.rb +29 -0
- data/lib/codesake/dawn/kb/osvdb_108563.rb +30 -0
- data/lib/codesake/dawn/kb/osvdb_108569.rb +30 -0
- data/lib/codesake/dawn/kb/osvdb_108570.rb +29 -0
- data/lib/codesake/dawn/kb/owasp_ror_cheatsheet.rb +41 -0
- data/lib/codesake/dawn/kb/owasp_ror_cheatsheet/check_for_backup_files.rb +22 -0
- data/lib/codesake/dawn/kb/owasp_ror_cheatsheet/check_for_safe_redirect_and_forward.rb +59 -0
- data/lib/codesake/dawn/kb/owasp_ror_cheatsheet/command_injection.rb +30 -0
- data/lib/codesake/dawn/kb/owasp_ror_cheatsheet/csrf.rb +31 -0
- data/lib/codesake/dawn/kb/owasp_ror_cheatsheet/mass_assignment_in_model.rb +35 -0
- data/lib/codesake/dawn/kb/owasp_ror_cheatsheet/security_related_headers.rb +38 -0
- data/lib/codesake/dawn/kb/owasp_ror_cheatsheet/sensitive_files.rb +31 -0
- data/lib/codesake/dawn/kb/owasp_ror_cheatsheet/session_stored_in_database.rb +33 -0
- data/lib/codesake/dawn/kb/pattern_match_check.rb +129 -0
- data/lib/codesake/dawn/kb/ruby_version_check.rb +91 -0
- data/lib/codesake/dawn/kb/simpleform_xss_20131129.rb +30 -0
- data/lib/codesake/dawn/kb/version_check.rb +418 -0
- data/lib/codesake/dawn/knowledge_base.rb +513 -0
- data/lib/codesake/dawn/padrino.rb +82 -0
- data/lib/codesake/dawn/rails.rb +17 -0
- data/lib/codesake/dawn/railtie.rb +9 -0
- data/lib/codesake/dawn/reporter.rb +280 -0
- data/lib/codesake/dawn/sinatra.rb +129 -0
- data/lib/codesake/dawn/tasks.rb +27 -0
- data/lib/codesake/dawn/utils.rb +21 -0
- data/lib/codesake/dawn/version.rb +28 -0
- data/lib/tasks/codesake-dawn_tasks.rake +1 -0
- data/spec/lib/dawn/codesake_core_spec.rb +9 -0
- data/spec/lib/dawn/codesake_knowledgebase_spec.rb +940 -0
- data/spec/lib/dawn/codesake_padrino_engine_disabled.rb +45 -0
- data/spec/lib/dawn/codesake_rails_engine_disabled.rb +12 -0
- data/spec/lib/dawn/codesake_sinatra_engine_disabled.rb +128 -0
- data/spec/lib/kb/codesake_cve_2013_0175_spec.rb +35 -0
- data/spec/lib/kb/codesake_cve_2013_4457_spec.rb +41 -0
- data/spec/lib/kb/codesake_dependency_version_check_spec.rb +76 -0
- data/spec/lib/kb/codesake_deprecation_check_spec.rb +56 -0
- data/spec/lib/kb/codesake_ruby_version_check_spec.rb +40 -0
- data/spec/lib/kb/codesake_version_check_spec.rb +165 -0
- data/spec/lib/kb/cve_2011_2705_spec.rb +35 -0
- data/spec/lib/kb/cve_2011_2930_spec.rb +31 -0
- data/spec/lib/kb/cve_2011_3009_spec.rb +25 -0
- data/spec/lib/kb/cve_2011_3187_spec.rb +24 -0
- data/spec/lib/kb/cve_2011_4319_spec.rb +44 -0
- data/spec/lib/kb/cve_2011_5036_spec.rb +95 -0
- data/spec/lib/kb/cve_2012_1098_spec.rb +36 -0
- data/spec/lib/kb/cve_2012_2139_spec.rb +20 -0
- data/spec/lib/kb/cve_2012_2671_spec.rb +23 -0
- data/spec/lib/kb/cve_2012_6109_spec.rb +112 -0
- data/spec/lib/kb/cve_2013_0162_spec.rb +23 -0
- data/spec/lib/kb/cve_2013_0183_spec.rb +54 -0
- data/spec/lib/kb/cve_2013_0184_spec.rb +115 -0
- data/spec/lib/kb/cve_2013_0256_spec.rb +34 -0
- data/spec/lib/kb/cve_2013_0262_spec.rb +44 -0
- data/spec/lib/kb/cve_2013_0263_spec.rb +11 -0
- data/spec/lib/kb/cve_2013_1607_spec.rb +15 -0
- data/spec/lib/kb/cve_2013_1655_spec.rb +31 -0
- data/spec/lib/kb/cve_2013_1756_spec.rb +23 -0
- data/spec/lib/kb/cve_2013_2090_spec.rb +15 -0
- data/spec/lib/kb/cve_2013_2105_spec.rb +11 -0
- data/spec/lib/kb/cve_2013_2119_spec.rb +27 -0
- data/spec/lib/kb/cve_2013_2512_spec.rb +15 -0
- data/spec/lib/kb/cve_2013_2513_spec.rb +15 -0
- data/spec/lib/kb/cve_2013_2516_spec.rb +15 -0
- data/spec/lib/kb/cve_2013_4203_spec.rb +15 -0
- data/spec/lib/kb/cve_2013_4413_spec.rb +16 -0
- data/spec/lib/kb/cve_2013_4489_spec.rb +63 -0
- data/spec/lib/kb/cve_2013_4593_spec.rb +16 -0
- data/spec/lib/kb/cve_2013_5647_spec.rb +19 -0
- data/spec/lib/kb/cve_2013_5671_spec.rb +27 -0
- data/spec/lib/kb/cve_2013_6416_spec.rb +31 -0
- data/spec/lib/kb/cve_2013_6459_spec.rb +15 -0
- data/spec/lib/kb/cve_2013_7086_spec.rb +22 -0
- data/spec/lib/kb/cve_2014_0036_spec.rb +15 -0
- data/spec/lib/kb/cve_2014_0080_spec.rb +28 -0
- data/spec/lib/kb/cve_2014_0081_spec.rb +68 -0
- data/spec/lib/kb/cve_2014_0082_spec.rb +52 -0
- data/spec/lib/kb/cve_2014_0130_spec.rb +19 -0
- data/spec/lib/kb/cve_2014_1233_spec.rb +15 -0
- data/spec/lib/kb/cve_2014_1234_spec.rb +16 -0
- data/spec/lib/kb/cve_2014_2322_spec.rb +15 -0
- data/spec/lib/kb/cve_2014_2538_spec.rb +15 -0
- data/spec/lib/kb/cve_2014_3482_spec.rb +15 -0
- data/spec/lib/kb/cve_2014_3483_spec.rb +23 -0
- data/spec/lib/kb/osvdb_105971_spec.rb +15 -0
- data/spec/lib/kb/osvdb_108530_spec.rb +22 -0
- data/spec/lib/kb/osvdb_108563_spec.rb +18 -0
- data/spec/lib/kb/osvdb_108569_spec.rb +17 -0
- data/spec/lib/kb/osvdb_108570_spec.rb +17 -0
- data/spec/lib/kb/owasp_ror_cheatsheet_disabled.rb +56 -0
- data/spec/spec_helper.rb +11 -0
- data/support/bootstrap.js +2027 -0
- data/support/bootstrap.min.css +9 -0
- data/support/codesake.css +63 -0
- metadata +659 -0
- metadata.gz.sig +0 -0
@@ -0,0 +1,228 @@
|
|
1
|
+
require 'cvss'
|
2
|
+
|
3
|
+
module Codesake
|
4
|
+
module Dawn
|
5
|
+
module Kb
|
6
|
+
module BasicCheck
|
7
|
+
|
8
|
+
include Codesake::Dawn::Utils
|
9
|
+
|
10
|
+
attr_reader :name
|
11
|
+
attr_reader :cve
|
12
|
+
attr_reader :osvdb
|
13
|
+
attr_reader :cvss
|
14
|
+
attr_reader :cwe
|
15
|
+
attr_reader :owasp
|
16
|
+
attr_reader :release_date
|
17
|
+
attr_reader :applies
|
18
|
+
attr_reader :kind
|
19
|
+
attr_reader :message
|
20
|
+
attr_reader :remediation
|
21
|
+
attr_reader :aux_links
|
22
|
+
attr_reader :mitigated
|
23
|
+
|
24
|
+
# This is the ruby version used by the target application. set in
|
25
|
+
# Engine class around line #107
|
26
|
+
attr_accessor :ruby_version
|
27
|
+
|
28
|
+
# This is an array of ruby versions that lead a parcitular version to
|
29
|
+
# be exploitable.
|
30
|
+
# In example, consider CVE-2013-1655, the Puppet rubygem version
|
31
|
+
# vulnerability can be exploited only if ruby version is 1.9.3 or
|
32
|
+
# higher
|
33
|
+
attr_reader :ruby_vulnerable_versions
|
34
|
+
|
35
|
+
# The framework target version
|
36
|
+
attr_reader :target_version
|
37
|
+
# The versions of the framework that fixes the vulnerability
|
38
|
+
attr_reader :fixes_version
|
39
|
+
|
40
|
+
# Vulnerability evidences
|
41
|
+
attr_reader :evidences
|
42
|
+
|
43
|
+
# Check status. Returns the latest vuln? call result
|
44
|
+
attr_reader :status
|
45
|
+
|
46
|
+
# Put the check in debug mode
|
47
|
+
attr_accessor :debug
|
48
|
+
|
49
|
+
# This is a flag for the security check family. Valid values are:
|
50
|
+
# + generic_check
|
51
|
+
# + code_quality
|
52
|
+
# + cve_bulletin
|
53
|
+
# + code_style
|
54
|
+
# + owasp_ror_cheatsheet
|
55
|
+
# + owasp_top_10_n (where n is a number between 1 and 10)
|
56
|
+
attr_accessor :check_family
|
57
|
+
ALLOWED_FAMILIES = [:generic_check, :code_quality, :cve_bulletin, :code_style, :owasp_ror_cheatsheet, :owasp_top_10_1, :owasp_top_10_2, :owasp_top_10_3, :owasp_top_10_4, :owasp_top_10_5, :owasp_top_10_6, :owasp_top_10_7, :owasp_top_10_8, :owasp_top_10_9, :owasp_top_10_10]
|
58
|
+
|
59
|
+
# This is the check severity level. It tells how dangerous is the
|
60
|
+
# vulnerability for you application.
|
61
|
+
#
|
62
|
+
# Valid values are:
|
63
|
+
# + :critical
|
64
|
+
# + :high
|
65
|
+
# + :medium
|
66
|
+
# + :low
|
67
|
+
# + :info
|
68
|
+
# + :none
|
69
|
+
attr_accessor :severity
|
70
|
+
|
71
|
+
# This is the check priority level. It tells how fast you should
|
72
|
+
# mitigate the vulnerability.
|
73
|
+
#
|
74
|
+
# Valid values are:
|
75
|
+
# + :critical
|
76
|
+
# + :high
|
77
|
+
# + :medium
|
78
|
+
# + :low
|
79
|
+
# + :info
|
80
|
+
# + :none
|
81
|
+
attr_accessor :priority
|
82
|
+
|
83
|
+
def initialize(options={})
|
84
|
+
@applies = []
|
85
|
+
@ruby_version = ""
|
86
|
+
@ruby_vulnerable_versions = []
|
87
|
+
|
88
|
+
@name = options[:name]
|
89
|
+
@cvss = options[:cvss]
|
90
|
+
@cwe = options[:cwe]
|
91
|
+
@cve = options[:cve]
|
92
|
+
@osvdb = options[:osvdb]
|
93
|
+
@owasp = options[:owasp]
|
94
|
+
@release_date = options[:release_date]
|
95
|
+
@applies = options[:applies] unless options[:applies].nil?
|
96
|
+
@kind = options[:kind]
|
97
|
+
@message = options[:message]
|
98
|
+
@remediation = options[:mitigation]
|
99
|
+
@aux_links = options[:aux_links]
|
100
|
+
|
101
|
+
@target_version = options[:target_version]
|
102
|
+
@fixes_version = options[:fixes_version]
|
103
|
+
@ruby_version = options[:ruby_version]
|
104
|
+
|
105
|
+
@evidences = []
|
106
|
+
@evidences = options[:evidences] unless options[:evidences].nil?
|
107
|
+
@mitigated = false
|
108
|
+
@status = false
|
109
|
+
@debug = false
|
110
|
+
@severity = :none
|
111
|
+
@priority = :none
|
112
|
+
@check_family = :generic_check
|
113
|
+
|
114
|
+
@severity = options[:severity] unless options[:severity].nil?
|
115
|
+
@priority = options[:priority] unless options[:priority].nil?
|
116
|
+
@check_family = options[:check_family] unless options[:check_family].nil?
|
117
|
+
|
118
|
+
# FIXME.20140325
|
119
|
+
#
|
120
|
+
# I don't want to manually fix 150+ ruby files to add something I can
|
121
|
+
# deal here
|
122
|
+
@check_family = :cve if !options[:name].nil? && options[:name].start_with?('CVE-')
|
123
|
+
|
124
|
+
if $logger.nil?
|
125
|
+
require 'codesake-commons'
|
126
|
+
$logger = Codesake::Commons::Logging.instance
|
127
|
+
$logger.helo "dawn-basic-check", Codesake::Dawn::VERSION
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def self.families
|
132
|
+
return ALLOWED_FAMILIES.map { |x| x.to_s }
|
133
|
+
end
|
134
|
+
|
135
|
+
def family=(item)
|
136
|
+
if ! ALLOWED_FAMILIES.find_index(item.to_sym).nil?
|
137
|
+
instance_variable_set(:@check_family, item.to_sym)
|
138
|
+
return item
|
139
|
+
else
|
140
|
+
$logger.err("invalid check family: #{item}")
|
141
|
+
instance_variable_set(:@check_family, :generic_check)
|
142
|
+
return @family
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
def family
|
147
|
+
return "CVE bulletin" if @check_family == :cve
|
148
|
+
return "Ruby coding style" if @check_family == :code_style
|
149
|
+
return "Ruby code quality check" if @check_family == :code_quality
|
150
|
+
return "Owasp Ruby on Rails cheatsheet" if @check_family == :owasp_ror_cheatsheet
|
151
|
+
return "Owasp Top 10" if @check_family.to_s.start_with?('owasp_top_10')
|
152
|
+
return "Unknown"
|
153
|
+
end
|
154
|
+
|
155
|
+
def priority
|
156
|
+
return (@priority == :none)? "unknown" : @priority.to_s
|
157
|
+
end
|
158
|
+
def severity
|
159
|
+
return @severity.to_s unless @severity == :none
|
160
|
+
|
161
|
+
# if not set and if cvss is available, than use CVSS
|
162
|
+
unless self.cvss.nil?
|
163
|
+
|
164
|
+
score = Cvss::Engine.new.score(self.cvss)
|
165
|
+
case score
|
166
|
+
when 10
|
167
|
+
return "critical"
|
168
|
+
when 7..9
|
169
|
+
return "high"
|
170
|
+
when 4..6
|
171
|
+
return "medium"
|
172
|
+
when 2..3
|
173
|
+
return "low"
|
174
|
+
when 0..1
|
175
|
+
return "info"
|
176
|
+
else
|
177
|
+
return "unknown"
|
178
|
+
end
|
179
|
+
else
|
180
|
+
return "unknown"
|
181
|
+
end
|
182
|
+
|
183
|
+
# if not set, no cvss available just return unknown
|
184
|
+
return "unknown"
|
185
|
+
end
|
186
|
+
|
187
|
+
def applies_to?(name)
|
188
|
+
! @applies.find_index(name).nil?
|
189
|
+
end
|
190
|
+
def cve_link
|
191
|
+
"http://cve.mitre.org/cgi-bin/cvename.cgi?name=#{@name}"
|
192
|
+
end
|
193
|
+
def nvd_link
|
194
|
+
"http://web.nvd.nist.gov/view/vuln/detail?vulnId=#{@name}"
|
195
|
+
end
|
196
|
+
def rubysec_advisories_link
|
197
|
+
"http://www.rubysec.com/advisories/#{@name}/"
|
198
|
+
end
|
199
|
+
def osvdb_link
|
200
|
+
"http://osvdb.org/show/osvdb/#{@osvdb}"
|
201
|
+
end
|
202
|
+
|
203
|
+
def cvss_score
|
204
|
+
return Cvss::Engine.new.score(self.cvss) unless self.cvss.nil?
|
205
|
+
" "
|
206
|
+
end
|
207
|
+
|
208
|
+
def mitigated?
|
209
|
+
self.mitigated
|
210
|
+
end
|
211
|
+
|
212
|
+
# Performs a self check against some core values from being not nil
|
213
|
+
#
|
214
|
+
# @return an Array with attributes with a nil value
|
215
|
+
def lint
|
216
|
+
ret = []
|
217
|
+
ret << :cve if @cve.nil?
|
218
|
+
ret << :osvdb if @osvdb.nil?
|
219
|
+
ret << :cvss if @cvss.nil?
|
220
|
+
ret << :severity if @severity == :none
|
221
|
+
ret << :priority if @priority == :none
|
222
|
+
|
223
|
+
ret
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Codesake
|
2
|
+
module Dawn
|
3
|
+
module Kb
|
4
|
+
module ComboCheck
|
5
|
+
include BasicCheck
|
6
|
+
|
7
|
+
attr_reader :checks
|
8
|
+
attr_accessor :options
|
9
|
+
attr_reader :vulnerable_checks
|
10
|
+
|
11
|
+
|
12
|
+
def initialize(options={})
|
13
|
+
super(options)
|
14
|
+
@vuln_if_all_fails = true
|
15
|
+
@vuln_if_all_fails = options[:vuln_if_all_fails] unless options[:vuln_if_all_fails].nil?
|
16
|
+
@checks = options[:checks]
|
17
|
+
@vulnerable_checks = []
|
18
|
+
@options = options
|
19
|
+
end
|
20
|
+
|
21
|
+
def vuln?
|
22
|
+
ret = true
|
23
|
+
at_least_one = false
|
24
|
+
@checks.each do |check|
|
25
|
+
check_vuln = false
|
26
|
+
check.detected_ruby = @options[:detected_ruby] if check.kind == Codesake::Dawn::KnowledgeBase::RUBY_VERSION_CHECK
|
27
|
+
check.dependencies = @options[:dependencies] if check.kind == Codesake::Dawn::KnowledgeBase::DEPENDENCY_CHECK
|
28
|
+
check.root_dir = @options[:root_dir] if check.kind == Codesake::Dawn::KnowledgeBase::PATTERN_MATCH_CHECK
|
29
|
+
check.debug = self.debug
|
30
|
+
|
31
|
+
check_vuln = check.vuln? if check.respond_to?(:vuln?)
|
32
|
+
|
33
|
+
ret = ret && check_vuln
|
34
|
+
at_least_one = true if check_vuln
|
35
|
+
@evidences << check.evidences if check_vuln
|
36
|
+
@vulnerable_checks << check if check_vuln
|
37
|
+
raise "A check class doesn't respond to vuln? in combo (#{check.class})" unless check.respond_to?(:vuln?)
|
38
|
+
end
|
39
|
+
|
40
|
+
dump_status
|
41
|
+
debug_me("combo_check: is_vulnerable_if_all_checks_fail = #{@vuln_if_all_fails}, RET = #{ret}, at_least_one= #{at_least_one}")
|
42
|
+
return ret if @vuln_if_all_fails
|
43
|
+
return at_least_one unless @vuln_if_all_fails
|
44
|
+
end
|
45
|
+
|
46
|
+
def dump_status
|
47
|
+
@checks.each do |check|
|
48
|
+
debug_me("check name is #{check.name} and vulnerable status is #{check.status}")
|
49
|
+
end
|
50
|
+
|
51
|
+
true
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.find_vulnerable_checks_by_class(list=[], klass=Object)
|
55
|
+
list.each do |l|
|
56
|
+
return l if l.instance_of?(klass)
|
57
|
+
end
|
58
|
+
nil
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Codesake
|
2
|
+
module Dawn
|
3
|
+
module Kb
|
4
|
+
# Automatically created with rake on 2014-01-06
|
5
|
+
class CVE_2004_0755
|
6
|
+
include RubyVersionCheck
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
message = "The FileStore capability in CGI::Session for Ruby before 1.8.1, and possibly PStore, creates files with insecure permissions, which can allow local users to steal session information and hijack sessions."
|
10
|
+
|
11
|
+
super({
|
12
|
+
:name=>"CVE-2004-0755",
|
13
|
+
:cvss=>"AV:L/AC:L/Au:N/C:P/I:N/A:N",
|
14
|
+
:release_date => Date.new(2004, 10, 20),
|
15
|
+
:cwe=>"",
|
16
|
+
:owasp=>"A9",
|
17
|
+
:applies=>["rails", "sinatra", "padrino"],
|
18
|
+
:kind=>Codesake::Dawn::KnowledgeBase::RUBY_VERSION_CHECK,
|
19
|
+
:message=>message,
|
20
|
+
:mitigation=>"Upgrade your ruby interpreter",
|
21
|
+
:aux_links=>["http://xforce.iss.net/xforce/xfdb/16996"]
|
22
|
+
})
|
23
|
+
|
24
|
+
self.safe_rubies = [{:engine=>"ruby", :version=>"1.8.999", :patchlevel=>"p0"}, {:engine=>"ruby", :version=>"1.6.999", :patchlevel=>"p0"}]
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Codesake
|
2
|
+
module Dawn
|
3
|
+
module Kb
|
4
|
+
# Automatically created with rake on 2014-01-06
|
5
|
+
class CVE_2004_0983
|
6
|
+
include RubyVersionCheck
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
message = "The CGI module in Ruby 1.6 before 1.6.8, and 1.8 before 1.8.2, allows remote attackers to cause a denial of service (infinite loop and CPU consumption) via a certain HTTP request."
|
10
|
+
super({
|
11
|
+
:name=>"CVE-2004-0983",
|
12
|
+
:cvss=>"AV:N/AC:L/Au:N/C:N/I:N/A:P",
|
13
|
+
:release_date => Date.new(2005, 03, 01),
|
14
|
+
:cwe=>"",
|
15
|
+
:owasp=>"A9",
|
16
|
+
:applies=>["rails", "sinatra", "padrino"],
|
17
|
+
:kind=>Codesake::Dawn::KnowledgeBase::RUBY_VERSION_CHECK,
|
18
|
+
:message=>message,
|
19
|
+
:mitigation=>"Upgrade your ruby interpreter",
|
20
|
+
:aux_links=>["http://xforce.iss.net/xforce/xfdb/17985"]
|
21
|
+
})
|
22
|
+
|
23
|
+
self.safe_rubies = [{:engine=>"ruby", :version=>"1.8.3", :patchlevel=>"p0"}, {:engine=>"ruby", :version=>"1.6.7", :patchlevel=>"p0"}]
|
24
|
+
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Codesake
|
2
|
+
module Dawn
|
3
|
+
module Kb
|
4
|
+
# Automatically created with rake on 2014-01-06
|
5
|
+
class CVE_2005_1992
|
6
|
+
include RubyVersionCheck
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
message = "The XMLRPC server in utils.rb for the ruby library (libruby) 1.8 sets an invalid default value that prevents \"security protection\" using handlers, which allows remote attackers to execute arbitrary commands."
|
10
|
+
|
11
|
+
super({
|
12
|
+
:name=>"CVE-2005-1992",
|
13
|
+
:cvss=>"AV:N/AC:L/Au:N/C:P/I:P/A:P",
|
14
|
+
:release_date => Date.new(2005, 06, 20),
|
15
|
+
:cwe=>"",
|
16
|
+
:owasp=>"A9",
|
17
|
+
:applies=>["rails", "sinatra", "padrino"],
|
18
|
+
:kind=>Codesake::Dawn::KnowledgeBase::RUBY_VERSION_CHECK,
|
19
|
+
:message=>message,
|
20
|
+
:mitigation=>"Upgrade your ruby interpreter",
|
21
|
+
:aux_links=>["http://www2.ruby-lang.org/en/20050701.html"]
|
22
|
+
})
|
23
|
+
|
24
|
+
self.safe_rubies = [{:engine=>"ruby", :version=>"1.8.999", :patchlevel=>"p0"}]
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Codesake
|
2
|
+
module Dawn
|
3
|
+
module Kb
|
4
|
+
# Automatically created with rake on 2014-01-06
|
5
|
+
class CVE_2005_2337
|
6
|
+
include RubyVersionCheck
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
message="Ruby 1.6.x up to 1.6.8, 1.8.x up to 1.8.2, and 1.9.0 development up to 2005-09-01 allows attackers to bypass safe level and taint flag protections and execute disallowed code when Ruby processes a program through standard input (stdin)."
|
10
|
+
super({
|
11
|
+
:name=>"CVE-2005-2337",
|
12
|
+
:cvss=>"AV:N/AC:L/Au:N/C:P/I:P/A:P",
|
13
|
+
:release_date => Date.new(2005, 10, 07),
|
14
|
+
:cwe=>"",
|
15
|
+
:owasp=>"A9",
|
16
|
+
:applies=>["rails", "sinatra", "padrino"],
|
17
|
+
:kind=>Codesake::Dawn::KnowledgeBase::RUBY_VERSION_CHECK,
|
18
|
+
:message=>message,
|
19
|
+
:mitigation=>"Upgrade your ruby interpreter",
|
20
|
+
:aux_links=>["http://www.ruby-lang.org/en/20051003.html"]
|
21
|
+
})
|
22
|
+
|
23
|
+
self.safe_rubies = [
|
24
|
+
{:engine=>"ruby", :version=>"1.6.8", :patchlevel=>"p0"},
|
25
|
+
{:engine=>"ruby", :version=>"1.8.3", :patchlevel=>"p0"},
|
26
|
+
]
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Codesake
|
2
|
+
module Dawn
|
3
|
+
module Kb
|
4
|
+
# Automatically created with rake on 2014-01-06
|
5
|
+
class CVE_2006_1931
|
6
|
+
include RubyVersionCheck
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
message = "The HTTP/XMLRPC server in Ruby before 1.8.2 uses blocking sockets, which allows attackers to cause a denial of service (blocked connections) via a large amount of data."
|
10
|
+
super({
|
11
|
+
:name=>"CVE-2006-1931",
|
12
|
+
:cvss=>"AV:N/AC:L/Au:N/C:N/I:N/A:P",
|
13
|
+
:release_date => Date.new(2005, 06, 20),
|
14
|
+
:cwe=>"",
|
15
|
+
:owasp=>"A9",
|
16
|
+
:applies=>["rails", "sinatra", "padrino"],
|
17
|
+
:kind=>Codesake::Dawn::KnowledgeBase::RUBY_VERSION_CHECK,
|
18
|
+
:message=>message,
|
19
|
+
:mitigation=>"Upgrade your ruby interpreter",
|
20
|
+
:aux_links=>["http://www.securityfocus.com/bid/17645"]
|
21
|
+
})
|
22
|
+
|
23
|
+
self.safe_rubies = [
|
24
|
+
{:engine=>"ruby", :version=>"1.8.3", :patchlevel=>"p0"},
|
25
|
+
{:engine=>"ruby", :version=>"1.6.8", :patchlevel=>"p0"}
|
26
|
+
]
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|