puppet-sec-lint 0.5.0 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 809fba20ed858642afb88163e0d10a7cbb16bdba42034cc7ee64c6759e972818
4
- data.tar.gz: aa3f199ba26370c45544219bd7ac6da577bda1bc1de505f3402078335005c8e2
3
+ metadata.gz: de8d812ebe096356c84e2f0ba54fb8effa01ec07935d70124c2cd04766ead9bc
4
+ data.tar.gz: 4e65a3e555ea7bd6cae034f8825ec01a976f74512c2912215ff6faaa0b6bea93
5
5
  SHA512:
6
- metadata.gz: 6927190fd45bac7c13952d2ce47a182655edc2d82cbd072dc662bf33e370dfc6f964e35b0f82a05ed194cf87eb4e76121453f5f7381afac7bb702679e198ead6
7
- data.tar.gz: 3f69d79d76380a44c118e5dadeed7efdd32308453fe65815258a9539a1dc642f8daa24907fb131b2293fed5adc3617f0eb9a8f6776b0ee5dce4e8e76b5595fdf
6
+ metadata.gz: 72bbb6d1a9c43615a668fd6bb74ea822e72efefb37ebc5d6a9544c088e83d16b528b9b75e133dbbbdc84966d15e85299de36f690105631708c8a2dcca5cfa04e
7
+ data.tar.gz: c392222a6cbf95db27ada9b2068a1851810967afbd08df9c10948bea3adb375b828010abe1034f5f0c157ab4336de1679fed20e967f9c750c0be15e3474ede0b
data/Gemfile.lock CHANGED
@@ -1,7 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- puppet-sec-lint (0.1.2)
4
+ puppet-sec-lint (0.5.2)
5
+ inifile (~> 3.0.0)
6
+ launchy (~> 2.5.0)
7
+ minitest (~> 5.0)
8
+ puppet-lint (~> 2.4, >= 2.4.2)
9
+ rack (~> 2.2.3)
10
+ rake (~> 13.0)
11
+ thin (~> 1.8.0)
5
12
 
6
13
  GEM
7
14
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Puppet linter focused on finding security vulnerabilities in code.
4
4
 
5
+ ![puppet-sec-lint console execution](docs/images/puppet-sec-lint_console.png)
6
+
5
7
  ## Installation
6
8
 
7
9
  Install the Ruby gem:
@@ -39,7 +41,7 @@ Then, install the [puppet-sec-lint VSCode extension](https://marketplace.visuals
39
41
 
40
42
  Now, after that the extension is activate, it should be activated automatically when a Puppet file is opened, analyzing and displaying warnings in real time.
41
43
 
42
-
44
+ ![puppet-sec-lint console execution](docs/images/puppet-sec-lint_vscode.png)
43
45
 
44
46
  ## Development
45
47
 
data/exe/puppet-sec-lint CHANGED
@@ -9,7 +9,13 @@ require_relative '../lib/puppet-sec-lint/version'
9
9
  require_relative '../lib/visitors/configuration_visitor'
10
10
  require_relative '../lib/facades/configuration_file_facade'
11
11
 
12
- conf_page_url = "http://localhost:9292/configuration"
12
+ #get free port
13
+ loop do
14
+ $port = rand(3000..9999)
15
+ break if (Socket.tcp('localhost', port, connect_timeout: 5) { false } rescue true)
16
+ end
17
+
18
+ conf_page_url = "http://localhost:#{$port}/configuration"
13
19
 
14
20
  options = {}
15
21
  @success = true
@@ -36,6 +42,10 @@ OptionParser.new do |opts|
36
42
  opts.on("-c", "--configurations", "Open the linter rules configurations page on a browser") do |v|
37
43
  options[:configurations] = v
38
44
  end
45
+
46
+ opts.on("-p", "--port=PORT", "TCP Port open for socket communication with the language server (Default:5007)") do |port|
47
+ options[:port] = port
48
+ end
39
49
  end.parse!
40
50
 
41
51
  puts '___ _ _ ___ ___ ____ ___ ____ ____ ____ _ _ ____ _ ___ _ _ _ _ _ _ ___ ____ ____ '
@@ -66,11 +76,12 @@ end
66
76
 
67
77
  if ARGV[0].nil? || options[:configurations]
68
78
  linter_server = Thread.new {
69
- require_relative '../lib/servers/linter_server'
79
+ require_relative '../lib/servers/linter_server'
80
+ LinterServer.start($port)
70
81
  }
71
82
  language_server = Thread.new {
72
83
  require_relative '../lib/servers/language_server'
73
- LanguageServer.start
84
+ LanguageServer.start(options[:port])
74
85
  }
75
86
 
76
87
  if options[:configurations]
@@ -78,6 +89,7 @@ if ARGV[0].nil? || options[:configurations]
78
89
  Launchy.open(conf_page_url)
79
90
  else
80
91
  puts "\nLinter configurations page available at #{conf_page_url}\n\n"
92
+ puts "-----------------------------------------------------------------------"
81
93
  end
82
94
 
83
95
  linter_server.join
@@ -1,17 +1,10 @@
1
- #class path_attribute {
2
- # file { 'ssh_config_file':
3
- # path => '/etc/ssh/sshd_config',
4
- # content => 'Bad path attribute, bad.',
5
- # }
6
- #}
7
-
8
- # the following code addresses the bujjjg: https://bukkkgs.launchpad.net/keystone/+bug/1472285 .
1
+ # the following code addresses the bug: https://bugs.launchpad.net/keystone/+bug/1472285 .
9
2
 
10
3
  class consul_template::service (
11
4
  $pass = lols(3),
12
5
  $aijoijooiumihhn_password = 'pe-puppet'
13
6
  $admin = 'ceisssesrelometer',
14
- $aijoijooiumihhn_passuihiuhword = '(adiyu(guygmin',
7
+ $aijoijooiumihhn_password = '(adiyu(guygmin',
15
8
  ) {
16
9
  exec { 'network-restart':
17
10
  command => 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDM release-runner key',
@@ -21,8 +14,9 @@ class consul_template::service (
21
14
  autho => 'MDi09i09i5',
22
15
  cmd => 'virsh secret-define --file ${secret_xml} && virsh secret-set-value --secret ${rbd_secret_uuid} --base64 $(ceph auth get-key client.${user})',
23
16
  $auth_uri => 'http://127.0.0.1:5000',
24
- 'bind_address' => '0.0.0.0',
25
- passwkkkkord => 'joijoij',
17
+ address => '0.0.0.0',
18
+ user = 'admin',
19
+ password => '',
26
20
  }
27
21
  case $::osfamily {
28
22
  'RedHat': {
@@ -36,7 +30,7 @@ class consul_template::service (
36
30
  exec { 'upload-img':
37
31
  command => "/usr/bin/glance -N ${os_auth_url} -T ${os_tenant_name} -I ${os_username} -K ${os_password} add name=${img_name} is_public=${public} container_format=${container_format} disk_format=${disk_format} distro=${os_name} < /usr/share/cirros-testvm/cirros-x86_64-disk.img",
38
32
  unless => "/usr/bin/glance -N ${os_auth_url} -T ${os_tenant_name} -I ${os_username} -K ${os_password} index && (/usr/bin/glance -N ${os_auth_url} -T ${os_tenant_name} -I ${os_username} -K ${os_password} index | grep ${img_name})",
39
- kehhhuhy => "E8CC67053ED3B199",
33
+ key => "E8CC67053ED3B199",
40
34
  key_content => '-----BEGIN PGP PUBLIC KEY BLOCK-----
41
35
  Version: GnuPG v1.4.11 (GNU/Linux)
42
36
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PuppetSecLint
4
- VERSION = "0.5.0"
4
+ VERSION = "0.5.5"
5
5
  YEAR = "2021"
6
6
  AUTHOR = "Tiago Ribeiro"
7
7
  end
@@ -10,8 +10,9 @@ class LanguageServer
10
10
  ConfigurationVisitor.GenerateIDs
11
11
  ConfigurationFileFacade.LoadConfigurations
12
12
 
13
- def self.start
14
- server = TCPServer.open(5007)
13
+ def self.start(port)
14
+ port ||= 5007
15
+ server = TCPServer.open(port)
15
16
 
16
17
  loop {
17
18
  Thread.fork(server.accept) do |client|
@@ -45,6 +45,8 @@ class LinterServer
45
45
  return [200, { 'Content-Type' => 'text/plain' }, ["Changes saved successfully"]]
46
46
  end
47
47
 
48
- end
48
+ def self.start(port)
49
+ Rack::Handler::Thin.run(LinterServer.new, :Port => port)
50
+ end
49
51
 
50
- Rack::Handler::Thin.run(LinterServer.new, :Port => 9292)
52
+ end
data/lib/settings.ini ADDED
@@ -0,0 +1,39 @@
1
+ [HardCodedCredentialsRule]
2
+ HardCodedCredentialsRule-enable_configuration = true
3
+ HardCodedCredentialsRule-list_of_known_words_not_considered_in_credentials = pe-puppet,pe-webserver,pe-puppetdb,pe-postgres,pe-console-services,pe-orchestration-services,pe-ace-server,pe-bolt-server
4
+ HardCodedCredentialsRule-list_of_invalid_values_in_credentials = undefined,unset,www-data,wwwrun,www,no,yes,[],root
5
+ HardCodedCredentialsRule-regular_expression_of_words_present_in_credentials = (?-mix:user|usr|pass(word|_|$)|pwd|key|secret)
6
+ HardCodedCredentialsRule-regular_expression_of_words_not_present_in_credentials = (?-mix:gpg|path|type|buff|zone|mode|tag|header|scheme|length|guid)
7
+
8
+ [NoHTTPRule]
9
+ NoHTTPRule-enable_configuration = true
10
+ NoHTTPRule-list_of_resources_that_can_use_http = apt::source,::apt::source,wget::fetch,yumrepo,yum::,aptly::mirror,util::system_package,yum::managed_yumrepo
11
+ NoHTTPRule-list_of_keywords_for_urls = backport,key,download,uri,mirror
12
+ NoHTTPRule-regular_expression_of_a_normal_http_address = (?-mix:^http:\/\/.+)
13
+
14
+ [AdminByDefaultRule]
15
+ AdminByDefaultRule-enable_configuration = true
16
+ AdminByDefaultRule-regular_expression_of_words_present_in_credentials = (?-mix:user|usr|pass(word|_|$)|pwd)
17
+
18
+ [EmptyPasswordRule]
19
+ EmptyPasswordRule-enable_configuration = true
20
+ EmptyPasswordRule-list_of_trigger_words = pwd,password,pass
21
+ EmptyPasswordRule-regular_expression_of_password_name = (?-mix:pass(word|_|$)|pwd)
22
+
23
+ [InvalidIPAddrBindingRule]
24
+ InvalidIPAddrBindingRule-enable_configuration = true
25
+ InvalidIPAddrBindingRule-regular_expression_of_an_invalid_ip_address = (?-mix:^((http(s)?:\/\/)?0.0.0.0(:\d{1,5})?)$)
26
+
27
+ [UseWeakCryptoAlgorithmsRule]
28
+ UseWeakCryptoAlgorithmsRule-enable_configuration = true
29
+ UseWeakCryptoAlgorithmsRule-regular_expression_of_weak_crypto_algorithms = (?-mix:^(sha1|md5))
30
+
31
+ [SuspiciousCommentRule]
32
+ SuspiciousCommentRule-enable_configuration = true
33
+ SuspiciousCommentRule-list_of_trigger_words = hack,fixme,later,later2,todo,ticket,launchpad,bug,to-do
34
+ SuspiciousCommentRule-regular_expression_of_keywords_present_in_suspicious_comments = (?-mix:hack|fixme|ticket|bug|secur|debug|defect|weak)
35
+
36
+ [CyrillicHomographAttack]
37
+ CyrillicHomographAttack-enable_configuration = true
38
+ CyrillicHomographAttack-regular_expression_of_links_with_cyrillic_characters = (?-mix:^(http(s)?:\/\/)?.*\p{Cyrillic}+)
39
+
Binary file
Binary file
@@ -30,7 +30,13 @@ Gem::Specification.new do |spec|
30
30
  spec.require_paths = ["lib"]
31
31
 
32
32
  # Uncomment to register a new dependency of your gem
33
- # spec.add_dependency "example-gem", "~> 1.0"
33
+ spec.add_runtime_dependency 'puppet-lint'
34
+ spec.add_runtime_dependency 'rake'
35
+ spec.add_runtime_dependency 'minitest'
36
+ spec.add_runtime_dependency 'rack'
37
+ spec.add_runtime_dependency 'thin'
38
+ spec.add_runtime_dependency 'inifile'
39
+ spec.add_runtime_dependency 'launchy'
34
40
 
35
41
  # For more information and examples about making a new gem, checkout our
36
42
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,15 +1,113 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-sec-lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tiago Ribeiro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-06 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2021-05-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: puppet-lint
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rack
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: thin
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: inifile
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: launchy
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
13
111
  description: This is a more complete security linter for the puppet language
14
112
  email:
15
113
  - tiago7b27@gmail.com
@@ -48,8 +146,11 @@ files:
48
146
  - docs/_site/index.html
49
147
  - docs/_site/jekyll/update/2021/05/03/welcome-to-jekyll.html
50
148
  - docs/hard-coded-credentials.md
149
+ - docs/images/puppet-sec-lint_console.png
150
+ - docs/images/puppet-sec-lint_vscode.png
51
151
  - docs/index.md
52
152
  - exe/puppet-sec-lint
153
+ - file.pp
53
154
  - lib/configurations/boolean_configuration.rb
54
155
  - lib/configurations/configuration.rb
55
156
  - lib/configurations/list_configuration.rb
@@ -70,6 +171,7 @@ files:
70
171
  - lib/rules/use_weak_crypto_algorithms_rule.rb
71
172
  - lib/servers/language_server.rb
72
173
  - lib/servers/linter_server.rb
174
+ - lib/settings.ini
73
175
  - lib/sin/sin.rb
74
176
  - lib/sin/sin_type.rb
75
177
  - lib/test.txt
@@ -77,7 +179,8 @@ files:
77
179
  - lib/test3.rb
78
180
  - lib/test_new.rb
79
181
  - lib/visitors/configuration_visitor.rb
80
- - lol2.pp
182
+ - puppet-sec-lint-0.5.3.gem
183
+ - puppet-sec-lint-0.5.4.gem
81
184
  - puppet-sec-lint.gemspec
82
185
  homepage: https://github.com/TiagoR98/puppet-sec-lint
83
186
  licenses: