pwn 0.4.510 → 0.4.513

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/README.md +2 -2
  4. data/lib/pwn/plugins/owasp_zap.rb +1 -1
  5. data/lib/pwn/reports/sast.rb +9 -8
  6. data/lib/pwn/sast/amqp_connect_as_guest.rb +8 -7
  7. data/lib/pwn/sast/apache_file_system_util_api.rb +8 -7
  8. data/lib/pwn/sast/aws.rb +8 -7
  9. data/lib/pwn/sast/banned_function_calls_c.rb +8 -7
  10. data/lib/pwn/sast/base64.rb +8 -7
  11. data/lib/pwn/sast/beef_hook.rb +8 -7
  12. data/lib/pwn/sast/cmd_execution_java.rb +8 -7
  13. data/lib/pwn/sast/cmd_execution_python.rb +8 -7
  14. data/lib/pwn/sast/cmd_execution_ruby.rb +8 -7
  15. data/lib/pwn/sast/cmd_execution_scala.rb +8 -7
  16. data/lib/pwn/sast/csrf.rb +8 -7
  17. data/lib/pwn/sast/deserial_java.rb +8 -7
  18. data/lib/pwn/sast/emoticon.rb +8 -7
  19. data/lib/pwn/sast/eval.rb +8 -7
  20. data/lib/pwn/sast/factory.rb +8 -7
  21. data/lib/pwn/sast/http_authorization_header.rb +8 -7
  22. data/lib/pwn/sast/inner_html.rb +8 -7
  23. data/lib/pwn/sast/keystore.rb +8 -7
  24. data/lib/pwn/sast/location_hash.rb +8 -7
  25. data/lib/pwn/sast/log4j.rb +8 -7
  26. data/lib/pwn/sast/logger.rb +8 -7
  27. data/lib/pwn/sast/outer_html.rb +8 -7
  28. data/lib/pwn/sast/password.rb +8 -7
  29. data/lib/pwn/sast/pom_version.rb +13 -10
  30. data/lib/pwn/sast/port.rb +8 -7
  31. data/lib/pwn/sast/private_key.rb +8 -7
  32. data/lib/pwn/sast/redirect.rb +8 -7
  33. data/lib/pwn/sast/redos.rb +8 -7
  34. data/lib/pwn/sast/shell.rb +8 -7
  35. data/lib/pwn/sast/signature.rb +8 -7
  36. data/lib/pwn/sast/sql.rb +8 -7
  37. data/lib/pwn/sast/ssl.rb +8 -7
  38. data/lib/pwn/sast/sudo.rb +8 -7
  39. data/lib/pwn/sast/task_tag.rb +8 -7
  40. data/lib/pwn/sast/throw_errors.rb +8 -7
  41. data/lib/pwn/sast/token.rb +8 -7
  42. data/lib/pwn/sast/version.rb +8 -7
  43. data/lib/pwn/sast/window_location_hash.rb +8 -7
  44. data/lib/pwn/version.rb +1 -1
  45. data/spec/lib/pwn/sast/amqp_connect_as_guest_spec.rb +3 -3
  46. data/spec/lib/pwn/sast/apache_file_system_util_api_spec.rb +3 -3
  47. data/spec/lib/pwn/sast/aws_spec.rb +3 -3
  48. data/spec/lib/pwn/sast/banned_function_calls_c_spec.rb +3 -3
  49. data/spec/lib/pwn/sast/base64_spec.rb +3 -3
  50. data/spec/lib/pwn/sast/beef_hook_spec.rb +3 -3
  51. data/spec/lib/pwn/sast/cmd_execution_java_spec.rb +3 -3
  52. data/spec/lib/pwn/sast/cmd_execution_python_spec.rb +3 -3
  53. data/spec/lib/pwn/sast/cmd_execution_ruby_spec.rb +3 -3
  54. data/spec/lib/pwn/sast/cmd_execution_scala_spec.rb +3 -3
  55. data/spec/lib/pwn/sast/csrf_spec.rb +3 -3
  56. data/spec/lib/pwn/sast/deserial_java_spec.rb +3 -3
  57. data/spec/lib/pwn/sast/emoticon_spec.rb +3 -3
  58. data/spec/lib/pwn/sast/eval_spec.rb +3 -3
  59. data/spec/lib/pwn/sast/factory_spec.rb +3 -3
  60. data/spec/lib/pwn/sast/http_authorization_header_spec.rb +3 -3
  61. data/spec/lib/pwn/sast/inner_html_spec.rb +3 -3
  62. data/spec/lib/pwn/sast/keystore_spec.rb +3 -3
  63. data/spec/lib/pwn/sast/location_hash_spec.rb +3 -3
  64. data/spec/lib/pwn/sast/log4j_spec.rb +3 -3
  65. data/spec/lib/pwn/sast/logger_spec.rb +3 -3
  66. data/spec/lib/pwn/sast/password_spec.rb +3 -3
  67. data/spec/lib/pwn/sast/pom_version_spec.rb +3 -3
  68. data/spec/lib/pwn/sast/port_spec.rb +3 -3
  69. data/spec/lib/pwn/sast/private_key_spec.rb +3 -3
  70. data/spec/lib/pwn/sast/redirect_spec.rb +3 -3
  71. data/spec/lib/pwn/sast/redos_spec.rb +3 -3
  72. data/spec/lib/pwn/sast/shell_spec.rb +3 -3
  73. data/spec/lib/pwn/sast/signature_spec.rb +3 -3
  74. data/spec/lib/pwn/sast/sql_spec.rb +3 -3
  75. data/spec/lib/pwn/sast/ssl_spec.rb +3 -3
  76. data/spec/lib/pwn/sast/sudo_spec.rb +3 -3
  77. data/spec/lib/pwn/sast/task_tag_spec.rb +3 -3
  78. data/spec/lib/pwn/sast/throw_errors_spec.rb +3 -3
  79. data/spec/lib/pwn/sast/token_spec.rb +3 -3
  80. data/spec/lib/pwn/sast/version_spec.rb +3 -3
  81. data/spec/lib/pwn/sast/window_location_hash_spec.rb +3 -3
  82. metadata +10 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0caa8625d5bcbe7d423eca4644c94dbc753d295922c29c1008947360a22abf8e
4
- data.tar.gz: d8c8b64f30fc2ce1fffaf61946d72707b7c4cca1f42b47e6d87fabbd2c994846
3
+ metadata.gz: 1169e57fa12d1e0274c2c67d2970cbeb4fadcbab56cf06ddc3cd52bf3871b952
4
+ data.tar.gz: 33721901ad464045c79c006fd54843d459ed7ebbf41a9ee5c4795fc354cf7d59
5
5
  SHA512:
6
- metadata.gz: f731fdd40c62f92fe9c0ccddf06e3deef886ef58253b41bc89a62c71c55795da25521bba2c32c92c89a0a0fe5264269d8c303cadb51d6c5f5a3605683ec49f3e
7
- data.tar.gz: daaa0bdec63ee6169d601d22353930f6a41937ab3091bc79657ff49bf789492d7ab619339cc2d76a169f623697438807ab3e032b7f55be8e060e2827fe150ec5
6
+ metadata.gz: a15f3517c53b04b1ea2b5e07a548d2f1591eef2ebd02707e7ec727d859662695f95edaf4764cfc719b9e70a750ed3ae60694c95bfdf81ed1ecd16dac0bd5a0ce
7
+ data.tar.gz: d49d46cf9e7b86e611b56445dca9b08823abe846f5cd13100a332d200ade4f304c170c55bc5ebacd30a45c7d8e296bf418d412999467200b68abbc360f74e31b
data/Gemfile CHANGED
@@ -11,14 +11,14 @@ gemspec
11
11
  # In some circumstances custom flags are passed to gems in order
12
12
  # to build appropriately. Defer to ./reinstall_pwn_gemset.sh
13
13
  # to review these custom flags (e.g. pg, serialport, etc).
14
- gem 'activesupport', '7.0.3'
14
+ gem 'activesupport', '7.0.3.1'
15
15
  gem 'anemone', '0.7.2'
16
16
  gem 'authy', '3.0.1'
17
17
  gem 'aws-sdk', '3.1.0'
18
18
  gem 'bettercap', '1.6.2'
19
19
  gem 'brakeman', '5.2.3'
20
20
  gem 'bson', '4.15.0'
21
- gem 'bundler', '>=2.3.17'
21
+ gem 'bundler', '>=2.3.18'
22
22
  gem 'bundler-audit', '0.9.1'
23
23
  gem 'bunny', '2.19.0'
24
24
  gem 'colorize', '0.8.1'
@@ -42,7 +42,7 @@ gem 'net-ldap', '0.17.1'
42
42
  gem 'net-openvpn', '0.8.7'
43
43
  gem 'net-smtp', '0.3.1'
44
44
  gem 'nexpose', '7.3.0'
45
- gem 'nokogiri', '1.13.6'
45
+ gem 'nokogiri', '1.13.7'
46
46
  gem 'oily_png', '1.2.1'
47
47
  gem 'os', '1.1.4'
48
48
  gem 'packetfu', '1.1.13'
@@ -67,7 +67,7 @@ gem 'ruby-nmap', '0.10.0'
67
67
  gem 'ruby-saml', '1.14.0'
68
68
  gem 'rvm', '1.11.3.9'
69
69
  gem 'savon', '2.12.1'
70
- gem 'selenium-devtools', '0.103.0'
70
+ gem 'selenium-devtools', '0.103.1'
71
71
  gem 'serialport', '1.3.2'
72
72
  gem 'sinatra', '2.2.0'
73
73
  gem 'slack-ruby-client', '1.1.0'
data/README.md CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.1.2@pwn
37
37
  $ rvm list gemsets
38
38
  $ gem install --verbose pwn
39
39
  $ pwn
40
- pwn[v0.4.510]:001 >>> PWN.help
40
+ pwn[v0.4.513]:001 >>> PWN.help
41
41
  ```
42
42
 
43
43
  [![Installing the pwn Security Automation Framework](https://raw.githubusercontent.com/0dayInc/pwn/master/documentation/pwn_install.png)](https://youtu.be/G7iLUY4FzsI)
@@ -52,7 +52,7 @@ $ rvm use ruby-3.1.2@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.4.510]:001 >>> PWN.help
55
+ pwn[v0.4.513]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
@@ -475,7 +475,7 @@ module PWN
475
475
  zap_obj = opts[:zap_obj]
476
476
  unless zap_obj.nil?
477
477
  pid = zap_obj[:pid]
478
- File.unlink(zap_obj[:stdout_log])
478
+ # File.unlink(zap_obj[:stdout_log]) if File.exist?(zap_obj[:stdout_log])
479
479
 
480
480
  Process.kill('TERM', pid)
481
481
  end
@@ -101,7 +101,7 @@ module PWN
101
101
  <div>
102
102
  <b>Toggle Column(s):</b>&nbsp;
103
103
  <a class="toggle-vis" data-column="1" href="#">Timestamp</a>&nbsp;|&nbsp;
104
- <a class="toggle-vis" data-column="2" href="#">Test Case / Security Requirements</a>&nbsp;|&nbsp;
104
+ <a class="toggle-vis" data-column="2" href="#">Test Case / Security References</a>&nbsp;|&nbsp;
105
105
  <a class="toggle-vis" data-column="3" href="#">Path</a>&nbsp;|&nbsp;
106
106
  <a class="toggle-vis" data-column="4" href="#">Line#, Formatted Content, &amp; Last Committed By</a>&nbsp;|&nbsp;
107
107
  <a class="toggle-vis" data-column="5" href="#">Raw Content</a>&nbsp;|&nbsp;
@@ -115,7 +115,7 @@ module PWN
115
115
  <tr>
116
116
  <th>#</th>
117
117
  <th>Timestamp</th>
118
- <th>Test Case / Security Requirements</th>
118
+ <th>Test Case / Security References</th>
119
119
  <th>Path</th>
120
120
  <th>Line#, Formatted Content, &amp; Last Committed By</th>
121
121
  <th>Raw Content</th>
@@ -170,7 +170,7 @@ module PWN
170
170
  "render": $.fn.dataTable.render.text()
171
171
  },
172
172
  {
173
- "data": "security_requirements",
173
+ "data": "security_references",
174
174
  "render": function (data, type, row, meta) {
175
175
  var sast_dirname = data['sast_module'].split('::')[0].toLowerCase() + '/' + data['sast_module'].split('::')[1].toLowerCase();
176
176
  var sast_module = data['sast_module'].split('::')[2];
@@ -182,12 +182,13 @@ module PWN
182
182
  {
183
183
  "data": "filename",
184
184
  "render": function (data, type, row, meta) {
185
- for (var i = 0; i < data.length; i++) {
186
- line_entry_uri = data[i]['git_repo_root_uri'] + '/' + data[i]['entry'];
185
+ line_entry_uri = htmlEntityEncode(
186
+ data['git_repo_root_uri'] + '/' + data['entry']
187
+ );
187
188
 
188
- return '<table class="squish"><tr class="highlighted"><td style="width:150px;" align="left"><a href="' + htmlEntityEncode(line_entry_uri) + '" target="_blank">' + htmlEntityEncode(data[i]['entry']) + '</a></td></tr></table>';
189
+ file = htmlEntityEncode(data['entry']);
189
190
 
190
- }
191
+ return '<table class="squish"><tr class="highlighted"><td style="width:150px;" align="left"><a href="' + line_entry_uri + '" target="_blank">' + file + '</a></td></tr></table>';
191
192
  }
192
193
  },
193
194
  {
@@ -202,7 +203,7 @@ module PWN
202
203
 
203
204
  var bug_comment = 'Timestamp: ' + row.timestamp + '\n' +
204
205
  'Test Case: http://' + window.location.hostname + ':8808/doc_root/pwn-0.1.0/' +
205
- row.security_requirements['sast_module'].replace(/::/g, "/") + '\n' +
206
+ row.security_references['sast_module'].replace(/::/g, "/") + '\n' +
206
207
  'Source Code Impacted: ' + $("<div/>").html(filename_link).text() + '\n\n' +
207
208
  'Test Case Request:\n' +
208
209
  $("<div/>").html(row.test_case_filter.replace(/\s{2,}/g, " ")).text() + '\n\n' +
@@ -25,7 +25,6 @@ module PWN
25
25
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
26
26
  if File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/
27
27
  line_no_and_contents_arr = []
28
- filename_arr = []
29
28
  entry_beautified = false
30
29
 
31
30
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -50,8 +49,8 @@ module PWN
50
49
 
51
50
  hash_line = {
52
51
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
53
- security_requirements: security_requirements,
54
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
52
+ security_references: security_references,
53
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
55
54
  line_no_and_contents: '',
56
55
  raw_content: str,
57
56
  test_case_filter: test_case_filter
@@ -79,9 +78,11 @@ module PWN
79
78
  else
80
79
  author = 'N/A'
81
80
  end
82
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
83
- contents: contents,
84
- author: author)
81
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
82
+ line_no: line_no,
83
+ contents: contents,
84
+ author: author
85
+ )
85
86
  current_count += 2
86
87
  end
87
88
  result_arr.push(hash_line)
@@ -105,7 +106,7 @@ module PWN
105
106
  # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
106
107
  # Determine the level of Testing Coverage w/ PWN.
107
108
 
108
- public_class_method def self.security_requirements
109
+ public_class_method def self.security_references
109
110
  {
110
111
  sast_module: self,
111
112
  section: 'ACCOUNT MANAGEMENT',
@@ -24,7 +24,6 @@ module PWN
24
24
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
25
25
  if File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/
26
26
  line_no_and_contents_arr = []
27
- filename_arr = []
28
27
  entry_beautified = false
29
28
 
30
29
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -49,8 +48,8 @@ module PWN
49
48
 
50
49
  hash_line = {
51
50
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
52
- security_requirements: security_requirements,
53
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
51
+ security_references: security_references,
52
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
54
53
  line_no_and_contents: '',
55
54
  raw_content: str,
56
55
  test_case_filter: test_case_filter
@@ -79,9 +78,11 @@ module PWN
79
78
  else
80
79
  author = 'N/A'
81
80
  end
82
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
83
- contents: contents,
84
- author: author)
81
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
82
+ line_no: line_no,
83
+ contents: contents,
84
+ author: author
85
+ )
85
86
 
86
87
  current_count += 2
87
88
  end
@@ -106,7 +107,7 @@ module PWN
106
107
  # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
107
108
  # Determine the level of Testing Coverage w/ PWN.
108
109
 
109
- public_class_method def self.security_requirements
110
+ public_class_method def self.security_references
110
111
  {
111
112
  sast_module: self,
112
113
  section: 'INFORMATION INPUT VALIDATION',
data/lib/pwn/sast/aws.rb CHANGED
@@ -23,7 +23,6 @@ module PWN
23
23
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
24
24
  if File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/
25
25
  line_no_and_contents_arr = []
26
- filename_arr = []
27
26
  entry_beautified = false
28
27
 
29
28
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -50,8 +49,8 @@ module PWN
50
49
 
51
50
  hash_line = {
52
51
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
53
- security_requirements: security_requirements,
54
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
52
+ security_references: security_references,
53
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
55
54
  line_no_and_contents: '',
56
55
  raw_content: str,
57
56
  test_case_filter: test_case_filter
@@ -80,9 +79,11 @@ module PWN
80
79
  else
81
80
  author = 'N/A'
82
81
  end
83
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
84
- contents: contents,
85
- author: author)
82
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
83
+ line_no: line_no,
84
+ contents: contents,
85
+ author: author
86
+ )
86
87
 
87
88
  current_count += 2
88
89
  end
@@ -107,7 +108,7 @@ module PWN
107
108
  # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
108
109
  # Determine the level of Testing Coverage w/ PWN.
109
110
 
110
- public_class_method def self.security_requirements
111
+ public_class_method def self.security_references
111
112
  {
112
113
  sast_module: self,
113
114
  section: 'TRANSMISSION CONFIDENTIALITY AND INTEGRITY',
@@ -25,7 +25,6 @@ module PWN
25
25
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
26
26
  if (File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/) && (File.extname(entry) == '.c' || File.extname(entry) == '.cpp' || File.extname(entry) == '.c++' || File.extname(entry) == '.cxx' || File.extname(entry) == '.h' || File.extname(entry) == '.hpp' || File.extname(entry) == '.h++' || File.extname(entry) == '.hh' || File.extname(entry) == '.hxx' || File.extname(entry) == '.ii' || File.extname(entry) == '.ixx' || File.extname(entry) == '.ipp' || File.extname(entry) == '.inl' || File.extname(entry) == '.txx' || File.extname(entry) == '.tpp' || File.extname(entry) == '.tpl')
27
27
  line_no_and_contents_arr = []
28
- filename_arr = []
29
28
  entry_beautified = false
30
29
 
31
30
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -177,8 +176,8 @@ module PWN
177
176
 
178
177
  hash_line = {
179
178
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
180
- security_requirements: security_requirements,
181
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
179
+ security_references: security_references,
180
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
182
181
  line_no_and_contents: '',
183
182
  raw_content: str,
184
183
  test_case_filter: test_case_filter
@@ -207,9 +206,11 @@ module PWN
207
206
  else
208
207
  author = 'N/A'
209
208
  end
210
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
211
- contents: contents,
212
- author: author)
209
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
210
+ line_no: line_no,
211
+ contents: contents,
212
+ author: author
213
+ )
213
214
 
214
215
  current_count += 2
215
216
  end
@@ -234,7 +235,7 @@ module PWN
234
235
  # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
235
236
  # Determine the level of Testing Coverage w/ PWN.
236
237
 
237
- public_class_method def self.security_requirements
238
+ public_class_method def self.security_references
238
239
  {
239
240
  sast_module: self,
240
241
  section: 'INFORMATION INPUT VALIDATION',
@@ -24,7 +24,6 @@ module PWN
24
24
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
25
25
  if File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/
26
26
  line_no_and_contents_arr = []
27
- filename_arr = []
28
27
  entry_beautified = false
29
28
 
30
29
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -51,8 +50,8 @@ module PWN
51
50
 
52
51
  hash_line = {
53
52
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
54
- security_requirements: security_requirements,
55
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
53
+ security_references: security_references,
54
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
56
55
  line_no_and_contents: '',
57
56
  raw_content: str,
58
57
  test_case_filter: test_case_filter
@@ -81,9 +80,11 @@ module PWN
81
80
  else
82
81
  author = 'N/A'
83
82
  end
84
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
85
- contents: contents,
86
- author: author)
83
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
84
+ line_no: line_no,
85
+ contents: contents,
86
+ author: author
87
+ )
87
88
 
88
89
  current_count += 2
89
90
  end
@@ -105,7 +106,7 @@ module PWN
105
106
 
106
107
  # Used to dictate Security Control Requirements for a Given SAST module.
107
108
 
108
- public_class_method def self.security_requirements
109
+ public_class_method def self.security_references
109
110
  {
110
111
  sast_module: self,
111
112
  section: 'PROTECTION OF INFORMATION AT REST',
@@ -24,7 +24,6 @@ module PWN
24
24
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
25
25
  if File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/
26
26
  line_no_and_contents_arr = []
27
- filename_arr = []
28
27
  entry_beautified = false
29
28
 
30
29
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -45,8 +44,8 @@ module PWN
45
44
 
46
45
  hash_line = {
47
46
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
48
- security_requirements: security_requirements,
49
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
47
+ security_references: security_references,
48
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
50
49
  line_no_and_contents: '',
51
50
  raw_content: str,
52
51
  test_case_filter: test_case_filter
@@ -75,9 +74,11 @@ module PWN
75
74
  else
76
75
  author = 'N/A'
77
76
  end
78
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
79
- contents: contents,
80
- author: author)
77
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
78
+ line_no: line_no,
79
+ contents: contents,
80
+ author: author
81
+ )
81
82
 
82
83
  current_count += 2
83
84
  end
@@ -102,7 +103,7 @@ module PWN
102
103
  # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
103
104
  # Determine the level of Testing Coverage w/ PWN.
104
105
 
105
- public_class_method def self.security_requirements
106
+ public_class_method def self.security_references
106
107
  {
107
108
  sast_module: self,
108
109
  section: 'MALICIOUS CODE PROTECTION',
@@ -24,7 +24,6 @@ module PWN
24
24
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
25
25
  if (File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/) && File.extname(entry) == '.java'
26
26
  line_no_and_contents_arr = []
27
- filename_arr = []
28
27
  entry_beautified = false
29
28
 
30
29
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -50,8 +49,8 @@ module PWN
50
49
 
51
50
  hash_line = {
52
51
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
53
- security_requirements: security_requirements,
54
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
52
+ security_references: security_references,
53
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
55
54
  line_no_and_contents: '',
56
55
  raw_content: str,
57
56
  test_case_filter: test_case_filter
@@ -80,9 +79,11 @@ module PWN
80
79
  else
81
80
  author = 'N/A'
82
81
  end
83
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
84
- contents: contents,
85
- author: author)
82
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
83
+ line_no: line_no,
84
+ contents: contents,
85
+ author: author
86
+ )
86
87
 
87
88
  current_count += 2
88
89
  end
@@ -107,7 +108,7 @@ module PWN
107
108
  # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
108
109
  # Determine the level of Testing Coverage w/ PWN.
109
110
 
110
- public_class_method def self.security_requirements
111
+ public_class_method def self.security_references
111
112
  {
112
113
  sast_module: self,
113
114
  section: 'INFORMATION INPUT VALIDATION',
@@ -24,7 +24,6 @@ module PWN
24
24
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
25
25
  if (File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/) && (File.extname(entry) == '.py' || File.extname(entry) == '.pyc' || File.extname(entry) == '.pyo' || File.extname(entry) == '.pyd')
26
26
  line_no_and_contents_arr = []
27
- filename_arr = []
28
27
  entry_beautified = false
29
28
 
30
29
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -52,8 +51,8 @@ module PWN
52
51
 
53
52
  hash_line = {
54
53
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
55
- security_requirements: security_requirements,
56
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
54
+ security_references: security_references,
55
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
57
56
  line_no_and_contents: '',
58
57
  raw_content: str,
59
58
  test_case_filter: test_case_filter
@@ -82,9 +81,11 @@ module PWN
82
81
  else
83
82
  author = 'N/A'
84
83
  end
85
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
86
- contents: contents,
87
- author: author)
84
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
85
+ line_no: line_no,
86
+ contents: contents,
87
+ author: author
88
+ )
88
89
 
89
90
  current_count += 2
90
91
  end
@@ -109,7 +110,7 @@ module PWN
109
110
  # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
110
111
  # Determine the level of Testing Coverage w/ PWN.
111
112
 
112
- public_class_method def self.security_requirements
113
+ public_class_method def self.security_references
113
114
  {
114
115
  sast_module: self,
115
116
  section: 'INFORMATION INPUT VALIDATION',
@@ -24,7 +24,6 @@ module PWN
24
24
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
25
25
  if (File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/) && (File.extname(entry) == '.rb' || File.extname(entry) == '.rbw')
26
26
  line_no_and_contents_arr = []
27
- filename_arr = []
28
27
  entry_beautified = false
29
28
 
30
29
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -60,8 +59,8 @@ module PWN
60
59
 
61
60
  hash_line = {
62
61
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
63
- security_requirements: security_requirements,
64
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
62
+ security_references: security_references,
63
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
65
64
  line_no_and_contents: '',
66
65
  raw_content: str,
67
66
  test_case_filter: test_case_filter
@@ -90,9 +89,11 @@ module PWN
90
89
  else
91
90
  author = 'N/A'
92
91
  end
93
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
94
- contents: contents,
95
- author: author)
92
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
93
+ line_no: line_no,
94
+ contents: contents,
95
+ author: author
96
+ )
96
97
 
97
98
  current_count += 2
98
99
  end
@@ -117,7 +118,7 @@ module PWN
117
118
  # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
118
119
  # Determine the level of Testing Coverage w/ PWN.
119
120
 
120
- public_class_method def self.security_requirements
121
+ public_class_method def self.security_references
121
122
  {
122
123
  sast_module: self,
123
124
  section: 'INFORMATION INPUT VALIDATION',
@@ -24,7 +24,6 @@ module PWN
24
24
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
25
25
  if (File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/) && File.extname(entry) == '.scala'
26
26
  line_no_and_contents_arr = []
27
- filename_arr = []
28
27
  entry_beautified = false
29
28
 
30
29
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -50,8 +49,8 @@ module PWN
50
49
 
51
50
  hash_line = {
52
51
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
53
- security_requirements: security_requirements,
54
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
52
+ security_references: security_references,
53
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
55
54
  line_no_and_contents: '',
56
55
  raw_content: str,
57
56
  test_case_filter: test_case_filter
@@ -80,9 +79,11 @@ module PWN
80
79
  else
81
80
  author = 'N/A'
82
81
  end
83
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
84
- contents: contents,
85
- author: author)
82
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
83
+ line_no: line_no,
84
+ contents: contents,
85
+ author: author
86
+ )
86
87
 
87
88
  current_count += 2
88
89
  end
@@ -107,7 +108,7 @@ module PWN
107
108
  # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
108
109
  # Determine the level of Testing Coverage w/ PWN.
109
110
 
110
- public_class_method def self.security_requirements
111
+ public_class_method def self.security_references
111
112
  {
112
113
  sast_module: self,
113
114
  section: 'INFORMATION INPUT VALIDATION',
data/lib/pwn/sast/csrf.rb CHANGED
@@ -25,7 +25,6 @@ module PWN
25
25
  PWN::Plugins::FileFu.recurse_dir(dir_path: dir_path) do |entry|
26
26
  if File.file?(entry) && File.basename(entry) !~ /^pwn.+(html|json|db)$/ && File.basename(entry) !~ /\.JS-BEAUTIFIED$/
27
27
  line_no_and_contents_arr = []
28
- filename_arr = []
29
28
  entry_beautified = false
30
29
 
31
30
  if File.extname(entry) == '.js' && (`wc -l #{entry}`.split.first.to_i < 20 || entry.include?('.min.js') || entry.include?('-all.js'))
@@ -48,8 +47,8 @@ module PWN
48
47
 
49
48
  hash_line = {
50
49
  timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%9N %z').to_s,
51
- security_requirements: security_requirements,
52
- filename: filename_arr.push(git_repo_root_uri: git_repo_root_uri, entry: entry),
50
+ security_references: security_references,
51
+ filename: { git_repo_root_uri: git_repo_root_uri, entry: entry },
53
52
  line_no_and_contents: '',
54
53
  raw_content: str,
55
54
  test_case_filter: test_case_filter
@@ -78,9 +77,11 @@ module PWN
78
77
  else
79
78
  author = 'N/A'
80
79
  end
81
- hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(line_no: line_no,
82
- contents: contents,
83
- author: author)
80
+ hash_line[:line_no_and_contents] = line_no_and_contents_arr.push(
81
+ line_no: line_no,
82
+ contents: contents,
83
+ author: author
84
+ )
84
85
 
85
86
  current_count += 2
86
87
  end
@@ -103,7 +104,7 @@ module PWN
103
104
  # to PWN Exploit & Static Code Anti-Pattern Matching Modules to
104
105
  # Determine the level of Testing Coverage w/ PWN.
105
106
 
106
- public_class_method def self.security_requirements
107
+ public_class_method def self.security_references
107
108
  {
108
109
  sast_module: self,
109
110
  section: 'MALICIOUS CODE PROTECTION',