contrast-agent 3.12.2 → 3.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +0 -1
  3. data/.gitignore +1 -1
  4. data/.simplecov +1 -1
  5. data/Rakefile +31 -0
  6. data/ext/build_funchook.rb +0 -2
  7. data/ext/cs__assess_fiber_track/cs__assess_fiber_track.c +2 -8
  8. data/ext/cs__assess_fiber_track/cs__assess_fiber_track.h +0 -1
  9. data/ext/cs__assess_string_interpolation26/cs__assess_string_interpolation26.c +1 -6
  10. data/ext/cs__assess_yield_track/cs__assess_yield_track.c +1 -5
  11. data/ext/cs__assess_yield_track/cs__assess_yield_track.h +0 -1
  12. data/ext/cs__common/cs__common.c +24 -0
  13. data/ext/cs__common/cs__common.h +3 -0
  14. data/ext/cs__common/extconf.rb +0 -14
  15. data/ext/extconf_common.rb +0 -28
  16. data/lib/contrast.rb +3 -1
  17. data/lib/contrast/agent.rb +14 -2
  18. data/lib/contrast/agent/assess/contrast_event.rb +28 -167
  19. data/lib/contrast/agent/assess/events/source_event.rb +3 -7
  20. data/lib/contrast/agent/assess/policy/dynamic_source_factory.rb +1 -1
  21. data/lib/contrast/agent/assess/policy/policy_node.rb +4 -98
  22. data/lib/contrast/agent/assess/policy/propagation_method.rb +1 -2
  23. data/lib/contrast/agent/assess/policy/propagation_node.rb +5 -1
  24. data/lib/contrast/agent/assess/policy/propagator/base.rb +1 -1
  25. data/lib/contrast/agent/assess/policy/propagator/insert.rb +1 -4
  26. data/lib/contrast/agent/assess/policy/propagator/match_data.rb +9 -1
  27. data/lib/contrast/agent/assess/policy/propagator/remove.rb +6 -11
  28. data/lib/contrast/agent/assess/policy/propagator/select.rb +4 -4
  29. data/lib/contrast/agent/assess/policy/propagator/split.rb +2 -2
  30. data/lib/contrast/agent/assess/policy/propagator/substitution.rb +4 -4
  31. data/lib/contrast/agent/assess/policy/propagator/trim.rb +6 -10
  32. data/lib/contrast/agent/assess/policy/source_method.rb +1 -2
  33. data/lib/contrast/agent/assess/policy/trigger_method.rb +1 -9
  34. data/lib/contrast/agent/assess/policy/trigger_node.rb +16 -4
  35. data/lib/contrast/agent/assess/properties.rb +4 -382
  36. data/lib/contrast/agent/assess/property/evented.rb +78 -0
  37. data/lib/contrast/agent/assess/property/tagged.rb +339 -0
  38. data/lib/contrast/agent/assess/rule/provider/hardcoded_value_rule.rb +2 -20
  39. data/lib/contrast/agent/assess/tag.rb +27 -12
  40. data/lib/contrast/agent/at_exit_hook.rb +3 -1
  41. data/lib/contrast/agent/exclusion_matcher.rb +2 -2
  42. data/lib/contrast/agent/inventory/policy/datastores.rb +0 -1
  43. data/lib/contrast/agent/middleware.rb +2 -14
  44. data/lib/contrast/agent/patching/policy/patch.rb +1 -1
  45. data/lib/contrast/agent/patching/policy/policy.rb +3 -3
  46. data/lib/contrast/agent/patching/policy/policy_node.rb +2 -2
  47. data/lib/contrast/agent/protect/policy/rule_applicator.rb +2 -2
  48. data/lib/contrast/agent/protect/rule/base.rb +19 -31
  49. data/lib/contrast/agent/protect/rule/base_service.rb +1 -1
  50. data/lib/contrast/agent/protect/rule/http_method_tampering.rb +2 -7
  51. data/lib/contrast/agent/protect/rule/xxe.rb +1 -0
  52. data/lib/contrast/agent/reaction_processor.rb +3 -3
  53. data/lib/contrast/agent/request.rb +92 -331
  54. data/lib/contrast/agent/request_context.rb +15 -15
  55. data/lib/contrast/agent/request_handler.rb +1 -1
  56. data/lib/contrast/agent/response.rb +2 -14
  57. data/lib/contrast/agent/scope.rb +1 -1
  58. data/lib/contrast/agent/service_heartbeat.rb +7 -9
  59. data/lib/contrast/agent/static_analysis.rb +1 -1
  60. data/lib/contrast/agent/thread_watcher.rb +49 -0
  61. data/lib/contrast/agent/version.rb +1 -1
  62. data/lib/contrast/agent/worker_thread.rb +24 -0
  63. data/lib/contrast/api.rb +3 -5
  64. data/lib/contrast/api/communication.rb +20 -0
  65. data/lib/contrast/api/communication/connection_status.rb +41 -0
  66. data/lib/contrast/api/communication/messaging_queue.rb +79 -0
  67. data/lib/contrast/{utils/service_response_util.rb → api/communication/response_processor.rb} +9 -18
  68. data/lib/contrast/api/communication/service_lifecycle.rb +61 -0
  69. data/lib/contrast/api/communication/socket.rb +45 -0
  70. data/lib/contrast/api/communication/socket_client.rb +76 -0
  71. data/lib/contrast/api/communication/speedracer.rb +111 -0
  72. data/lib/contrast/api/communication/tcp_socket.rb +31 -0
  73. data/lib/contrast/api/communication/unix_socket.rb +27 -0
  74. data/lib/contrast/api/decorators.rb +10 -0
  75. data/lib/contrast/api/decorators/address.rb +60 -0
  76. data/lib/contrast/api/decorators/application_settings.rb +7 -3
  77. data/lib/contrast/api/decorators/application_update.rb +0 -9
  78. data/lib/contrast/api/decorators/http_request.rb +139 -0
  79. data/lib/contrast/api/decorators/message.rb +75 -0
  80. data/lib/contrast/api/decorators/rasp_rule_sample.rb +28 -0
  81. data/lib/contrast/api/decorators/route_coverage.rb +57 -0
  82. data/lib/contrast/api/decorators/trace_event.rb +99 -0
  83. data/lib/contrast/api/decorators/trace_event_object.rb +57 -0
  84. data/lib/contrast/api/decorators/trace_event_signature.rb +46 -0
  85. data/lib/contrast/api/decorators/trace_taint_range.rb +51 -0
  86. data/lib/contrast/api/decorators/trace_taint_range_tags.rb +109 -0
  87. data/lib/contrast/api/decorators/user_input.rb +40 -0
  88. data/lib/contrast/components/app_context.rb +0 -7
  89. data/lib/contrast/components/config.rb +4 -9
  90. data/lib/contrast/components/interface.rb +1 -1
  91. data/lib/contrast/components/settings.rb +0 -6
  92. data/lib/contrast/extension/assess.rb +0 -1
  93. data/lib/contrast/extension/assess/assess_extension.rb +1 -2
  94. data/lib/contrast/extension/assess/fiber.rb +1 -1
  95. data/lib/contrast/extension/assess/string.rb +1 -1
  96. data/lib/contrast/extension/inventory.rb +0 -1
  97. data/lib/contrast/framework/base_support.rb +0 -23
  98. data/lib/contrast/framework/manager.rb +0 -9
  99. data/lib/contrast/framework/rails/patch/action_controller_live_buffer.rb +1 -3
  100. data/lib/contrast/framework/rails/patch/assess_configuration.rb +3 -4
  101. data/lib/contrast/framework/rails/support.rb +3 -32
  102. data/lib/contrast/framework/sinatra/patch/base.rb +1 -1
  103. data/lib/contrast/framework/sinatra/support.rb +11 -22
  104. data/lib/contrast/funchook/funchook.rb +45 -0
  105. data/lib/contrast/logger/application.rb +1 -1
  106. data/lib/contrast/logger/format.rb +51 -0
  107. data/lib/contrast/logger/log.rb +8 -2
  108. data/lib/contrast/utils/assess/tracking_util.rb +45 -20
  109. data/lib/contrast/utils/hash_digest.rb +11 -2
  110. data/lib/contrast/utils/invalid_configuration_util.rb +1 -17
  111. data/lib/contrast/utils/inventory_util.rb +2 -7
  112. data/lib/contrast/utils/object_share.rb +0 -1
  113. data/lib/contrast/utils/os.rb +16 -4
  114. data/lib/contrast/utils/stack_trace_utils.rb +0 -1
  115. data/lib/contrast/utils/tag_util.rb +1 -1
  116. data/lib/contrast/utils/thread_tracker.rb +1 -14
  117. data/lib/contrast/utils/timer.rb +1 -17
  118. data/ruby-agent.gemspec +4 -4
  119. metadata +48 -72
  120. data/funchook/Makefile +0 -29
  121. data/funchook/autom4te.cache/output.0 +0 -4964
  122. data/funchook/autom4te.cache/requests +0 -77
  123. data/funchook/autom4te.cache/traces.0 +0 -361
  124. data/funchook/config.log +0 -651
  125. data/funchook/config.status +0 -1015
  126. data/funchook/configure +0 -4964
  127. data/funchook/src/Makefile +0 -70
  128. data/funchook/src/config.h +0 -101
  129. data/funchook/src/config.h.in +0 -100
  130. data/funchook/src/decoder.o +0 -0
  131. data/funchook/src/distorm.o +0 -0
  132. data/funchook/src/funchook.o +0 -0
  133. data/funchook/src/funchook_io.o +0 -0
  134. data/funchook/src/funchook_syscall.o +0 -0
  135. data/funchook/src/funchook_unix.o +0 -0
  136. data/funchook/src/funchook_x86.o +0 -0
  137. data/funchook/src/instructions.o +0 -0
  138. data/funchook/src/insts.o +0 -0
  139. data/funchook/src/libfunchook.dylib +0 -0
  140. data/funchook/src/mnemonics.o +0 -0
  141. data/funchook/src/operands.o +0 -0
  142. data/funchook/src/os_func.o +0 -0
  143. data/funchook/src/os_func_unix.o +0 -0
  144. data/funchook/src/prefix.o +0 -0
  145. data/funchook/src/printf_base.o +0 -0
  146. data/funchook/src/textdefs.o +0 -0
  147. data/funchook/src/wstring.o +0 -0
  148. data/funchook/test/Makefile +0 -43
  149. data/funchook/test/funchook_test +0 -0
  150. data/funchook/test/libfunchook_test.so +0 -0
  151. data/funchook/test/libfunchook_test.so.dSYM/Contents/Info.plist +0 -20
  152. data/funchook/test/libfunchook_test.so.dSYM/Contents/Resources/DWARF/libfunchook_test.so +0 -0
  153. data/funchook/test/test_main.o +0 -0
  154. data/funchook/test/x86_64_test.o +0 -0
  155. data/lib/contrast/agent/assess/adjusted_span.rb +0 -27
  156. data/lib/contrast/agent/socket_client.rb +0 -134
  157. data/lib/contrast/api/connection_status.rb +0 -49
  158. data/lib/contrast/api/socket.rb +0 -43
  159. data/lib/contrast/api/speedracer.rb +0 -188
  160. data/lib/contrast/api/tcp_socket.rb +0 -29
  161. data/lib/contrast/api/unix_socket.rb +0 -25
  162. data/lib/contrast/framework/sinatra/application_helper.rb +0 -51
  163. data/lib/contrast/framework/view_technologies_descriptor.rb +0 -21
  164. data/lib/contrast/internal_exception.rb +0 -8
  165. data/lib/contrast/utils/cache.rb +0 -58
  166. data/lib/contrast/utils/service_sender_util.rb +0 -167
  167. data/lib/contrast/utils/sinatra_helper.rb +0 -49
@@ -44,29 +44,13 @@ module Contrast
44
44
  activity = Contrast::Api::Dtm::Activity.new
45
45
  activity.findings << finding
46
46
 
47
- # If assess is enabled, we can just send the activity
48
- if APP_CONTEXT.ready?
49
- build_tags(activity)
50
- Contrast::Utils::ServiceSenderUtil.push_to_ready_queue activity
51
- # Otherwise, if the Agent isn't ready, we have to queue the messages
52
- # until we know the starting state.
53
- else
54
- Contrast::Utils::ServiceSenderUtil.add_to_assess_messages activity
55
- end
47
+ Contrast::Agent.messaging_queue.send_event_eventually(activity)
56
48
  rescue StandardError => e
57
49
  logger.error('Unable to build a finding', e, rule: rule_id)
58
50
  end
59
51
 
60
52
  private
61
53
 
62
- # This seems silly to pull out, but we can ONLY call this in the case
63
- # where we have a configuration. Doing otherwise results in a bad error
64
- # case where we try to do other things, like logging, which behave
65
- # strangely without a config
66
- def build_tags activity
67
- activity.finding_tags = Contrast::Utils::StringUtils.force_utf8(ASSESS.tags)
68
- end
69
-
70
54
  def file_snippet file_path, call_location
71
55
  idx = call_location&.lineno
72
56
  if file_path && idx && File.exist?(file_path)
@@ -18,11 +18,10 @@ module Contrast
18
18
  AC_TYPE_DB = 'db'
19
19
  # TeamServer only accepts certain values for FlowMap Services.
20
20
  # DO NOT CHANGE THIS
21
- DATABASE = 'Database'
22
21
  ADAPTER = 'adapter'
23
22
  HOST = 'host'
24
23
  PORT = 'port'
25
- DATABASE_LOWER = 'database'
24
+ DATABASE = 'database'
26
25
  DEFAULT = 'default'
27
26
  LOCALHOST = 'localhost'
28
27
 
@@ -42,7 +41,6 @@ module Contrast
42
41
  arr = build_from_db_config(hash_or_str)
43
42
  return unless arr&.any?
44
43
 
45
- activity_or_update.technologies[DATABASE] = true
46
44
  arr.each do |a|
47
45
  next unless a
48
46
 
@@ -51,9 +49,6 @@ module Contrast
51
49
  else
52
50
  activity_or_update.components << a
53
51
  end
54
- next if a.vendor.empty?
55
-
56
- activity_or_update.technologies[a.vendor] = true
57
52
  end
58
53
  rescue StandardError => e
59
54
  logger.error('Unable to append db config', e)
@@ -76,7 +71,7 @@ module Contrast
76
71
  ac.remote_host = host_from_hash(hash)
77
72
  ac.remote_port = port_from_hash(hash)
78
73
  ac.type = AC_TYPE_DB
79
- ac.url = hash[:database] || hash[DATABASE_LOWER] || DEFAULT
74
+ ac.url = hash[:database] || hash[DATABASE] || DEFAULT
80
75
  [ac]
81
76
  end
82
77
 
@@ -30,7 +30,6 @@ module Contrast
30
30
  SEMICOLON = ';'
31
31
  SINGLE_QUOTE = '\''
32
32
  SLASH = '/'
33
- SPACE = ' '
34
33
  UNDERSCORE = '_'
35
34
  DOUBLE_UNDERSCORE = '__'
36
35
  AT = '@'
@@ -1,23 +1,35 @@
1
1
  # Copyright (c) 2020 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
2
2
  # frozen_string_literal: true
3
3
 
4
+ cs__scoped_require 'contrast/components/interface'
5
+
4
6
  module Contrast
5
7
  module Utils
6
8
  # Simple utility used to make OS calls and determine state. For that state
7
9
  # which will not change at runtime, such as the operating system, the
8
10
  # Utility memozies to avoid multiple lookups.
9
11
  module OS
12
+ include Contrast::Components::Interface
13
+ access_component :scope
14
+
10
15
  class << self
11
16
  def running?
12
- process = `ps aux | grep contrast-servic[e]`
13
- process != ''
17
+ result = false
18
+ with_contrast_scope do
19
+ process = `ps aux | grep contrast-servic[e]`
20
+ processes = process.split("\n")
21
+ result = !processes.empty? && processes.any? { |process_descriptor| !process_descriptor.include?('grep') }
22
+ end
23
+ result
14
24
  end
15
25
 
16
26
  # check if service was killed and is a zombie process
17
27
  # returns an array of zombie process PIDs as strings; empty array if there are none
18
28
  def zombie_pids
19
- zombie_pid_list = `ps aux | grep contrast-servic[e] | grep Z | awk '{print $2}'` # retrieve pid of service processes
20
- zombie_pid_list.split("\n")
29
+ with_contrast_scope do
30
+ zombie_pid_list = `ps aux | grep contrast-servic[e] | grep Z | awk '{print $2}'` # retrieve pid of service processes
31
+ zombie_pid_list.split("\n")
32
+ end
21
33
  end
22
34
  end
23
35
  end
@@ -3,7 +3,6 @@
3
3
 
4
4
  cs__scoped_require 'contrast/utils/object_share'
5
5
  cs__scoped_require 'contrast/api'
6
- cs__scoped_require 'contrast/utils/cache'
7
6
 
8
7
  module Contrast
9
8
  module Utils
@@ -114,7 +114,7 @@ module Contrast
114
114
  arr.each do |existing|
115
115
  break unless existing.start_idx < new_element.start_idx
116
116
 
117
- if existing.overlaps?(new_element)
117
+ if existing.overlaps?(new_element.start_idx, new_element.end_idx)
118
118
  existing.merge(new_element)
119
119
  return # rubocop:disable Lint/NonLocalExitFromIterator
120
120
  end
@@ -5,15 +5,12 @@ module Contrast
5
5
  module Utils
6
6
  # ThreadTracker allows tracking of singleton objects across threads
7
7
  class ThreadTracker
8
- def initialize logger = nil
9
- @logger = logger
10
- end
8
+ def initialize; end
11
9
 
12
10
  # Note about Ruby -- thread#[] is fiber-local,
13
11
  # #thread_variables is not.
14
12
 
15
13
  def get key, default = nil
16
- log(key)
17
14
  Thread.current[key] || default
18
15
  end
19
16
 
@@ -39,16 +36,6 @@ module Contrast
39
36
  def update_current_context context
40
37
  set(:current_context, context)
41
38
  end
42
-
43
- # logger may be nil so use this utility method instead
44
- def log key
45
- return unless @logger
46
- return unless @logger.debug?
47
-
48
- @logger.debug('Accessing object in Thread Tracker', name: key, p_id: Process.pid, thread_id: Thread.current.object_id)
49
- rescue StandardError
50
- false # NOOP
51
- end
52
39
  end
53
40
  end
54
41
  end
@@ -6,7 +6,7 @@ module Contrast
6
6
  # Timer is class that can track state about when an event starts and how long it takes
7
7
  # Also containes utility methods to get time values in milliseconds
8
8
  class Timer
9
- attr_reader :start_at, :start_ms, :events
9
+ attr_reader :start_ms, :events
10
10
 
11
11
  def initialize time = Time.now
12
12
  @start_at = time
@@ -14,22 +14,6 @@ module Contrast
14
14
  @events = {}
15
15
  end
16
16
 
17
- def elapsed label
18
- before = Time.now
19
- result = yield if block_given?
20
- events[label.to_s] = ((Time.now - before) * 1000).to_i
21
- result
22
- end
23
-
24
- def to_s
25
- pairs = events.to_a.map { |pair| "#{ pair[0] }=#{ pair[1] }ms" }
26
- start_at.strftime('%Y-%m-%d %H:%M:%S.%L') + pairs.join(Contrast::Utils::ObjectShare::SPACE)
27
- end
28
-
29
- def now_ms
30
- (Time.now.to_f * 1000).to_i
31
- end
32
-
33
17
  def self.now_ms
34
18
  (Time.now.to_f * 1000).to_i
35
19
  end
@@ -68,9 +68,9 @@ end
68
68
  # dependencies.csv in this directory to indicate that and create a
69
69
  # corresponding update to the fake gem server data in TeamServer.
70
70
  def self.add_dependencies spec
71
- spec.add_dependency 'google-protobuf', '~> 3.9.0'
72
71
  spec.add_dependency 'ougai', '~> 1.8'
73
72
  spec.add_dependency 'parser', '~> 2.6'
73
+ spec.add_dependency 'protobuf', '~> 3.10'
74
74
  spec.add_dependency 'rack', '>= 2.0', '< 3.0'
75
75
  end
76
76
 
@@ -80,7 +80,7 @@ def self.add_files spec
80
80
  # Directories used for testing:
81
81
  f.match(%r{^(spec|test)/}) ||
82
82
  # Directories used in pipelines
83
- f.match(%r{^(bin|bitbucket_scripts|internal_resources|vendor)/}) ||
83
+ f.match(%r{^(\.github|bin|internal_resources|vendor)/}) ||
84
84
  # Configuration and other files that don't belong to one directory
85
85
  f.match(/(Dockerfile)/) ||
86
86
  f.match(/(.*\.csv)/) ||
@@ -90,8 +90,8 @@ def self.add_files spec
90
90
  f.match(/(.*\.ya?ml)/)
91
91
  end
92
92
 
93
- spec.files << 'lib/contrast/api/dtm_pb.rb'
94
- spec.files << 'lib/contrast/api/settings_pb.rb'
93
+ spec.files << 'lib/contrast/api/dtm.pb.rb'
94
+ spec.files << 'lib/contrast/api/settings.pb.rb'
95
95
  spec.files += Dir['service_executables/**/*']
96
96
  spec.files += Dir['funchook/**/*']
97
97
  spec.files += Dir['shared_libraries/**/*']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contrast-agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.12.2
4
+ version: 3.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - galen.palmer@contrastsecurity.com
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: exe
14
14
  cert_chain: []
15
- date: 2020-07-08 00:00:00.000000000 Z
15
+ date: 2020-07-17 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: amazing_print
@@ -393,47 +393,47 @@ dependencies:
393
393
  - !ruby/object:Gem::Version
394
394
  version: '2.0'
395
395
  - !ruby/object:Gem::Dependency
396
- name: google-protobuf
396
+ name: ougai
397
397
  requirement: !ruby/object:Gem::Requirement
398
398
  requirements:
399
399
  - - "~>"
400
400
  - !ruby/object:Gem::Version
401
- version: 3.9.0
401
+ version: '1.8'
402
402
  type: :runtime
403
403
  prerelease: false
404
404
  version_requirements: !ruby/object:Gem::Requirement
405
405
  requirements:
406
406
  - - "~>"
407
407
  - !ruby/object:Gem::Version
408
- version: 3.9.0
408
+ version: '1.8'
409
409
  - !ruby/object:Gem::Dependency
410
- name: ougai
410
+ name: parser
411
411
  requirement: !ruby/object:Gem::Requirement
412
412
  requirements:
413
413
  - - "~>"
414
414
  - !ruby/object:Gem::Version
415
- version: '1.8'
415
+ version: '2.6'
416
416
  type: :runtime
417
417
  prerelease: false
418
418
  version_requirements: !ruby/object:Gem::Requirement
419
419
  requirements:
420
420
  - - "~>"
421
421
  - !ruby/object:Gem::Version
422
- version: '1.8'
422
+ version: '2.6'
423
423
  - !ruby/object:Gem::Dependency
424
- name: parser
424
+ name: protobuf
425
425
  requirement: !ruby/object:Gem::Requirement
426
426
  requirements:
427
427
  - - "~>"
428
428
  - !ruby/object:Gem::Version
429
- version: '2.6'
429
+ version: '3.10'
430
430
  type: :runtime
431
431
  prerelease: false
432
432
  version_requirements: !ruby/object:Gem::Requirement
433
433
  requirements:
434
434
  - - "~>"
435
435
  - !ruby/object:Gem::Version
436
- version: '2.6'
436
+ version: '3.10'
437
437
  - !ruby/object:Gem::Dependency
438
438
  name: rack
439
439
  requirement: !ruby/object:Gem::Requirement
@@ -462,20 +462,20 @@ executables:
462
462
  - contrast_service
463
463
  extensions:
464
464
  - ext/cs__common/extconf.rb
465
- - ext/cs__assess_module/extconf.rb
466
- - ext/cs__assess_yield_track/extconf.rb
467
- - ext/cs__assess_hash/extconf.rb
468
- - ext/cs__protect_kernel/extconf.rb
469
- - ext/cs__assess_regexp/extconf.rb
470
465
  - ext/cs__assess_string_interpolation26/extconf.rb
471
- - ext/cs__assess_kernel/extconf.rb
472
466
  - ext/cs__assess_array/extconf.rb
473
467
  - ext/cs__assess_fiber_track/extconf.rb
474
- - ext/cs__assess_marshal_module/extconf.rb
468
+ - ext/cs__assess_hash/extconf.rb
475
469
  - ext/cs__assess_string/extconf.rb
470
+ - ext/cs__assess_module/extconf.rb
476
471
  - ext/cs__contrast_patch/extconf.rb
472
+ - ext/cs__protect_kernel/extconf.rb
473
+ - ext/cs__assess_regexp/extconf.rb
474
+ - ext/cs__assess_yield_track/extconf.rb
477
475
  - ext/cs__assess_basic_object/extconf.rb
476
+ - ext/cs__assess_marshal_module/extconf.rb
478
477
  - ext/cs__assess_active_record_named/extconf.rb
478
+ - ext/cs__assess_kernel/extconf.rb
479
479
  extra_rdoc_files: []
480
480
  files:
481
481
  - ".clang-format"
@@ -537,19 +537,12 @@ files:
537
537
  - ext/cs__protect_kernel/extconf.rb
538
538
  - ext/extconf_common.rb
539
539
  - funchook/LICENSE
540
- - funchook/Makefile
541
540
  - funchook/Makefile.in
542
541
  - funchook/README.md
543
542
  - funchook/appveyor.yml
544
543
  - funchook/autogen.sh
545
- - funchook/autom4te.cache/output.0
546
- - funchook/autom4te.cache/requests
547
- - funchook/autom4te.cache/traces.0
548
544
  - funchook/config.guess
549
- - funchook/config.log
550
- - funchook/config.status
551
545
  - funchook/config.sub
552
- - funchook/configure
553
546
  - funchook/configure.ac
554
547
  - funchook/distorm/COPYING
555
548
  - funchook/distorm/MANIFEST
@@ -642,56 +635,28 @@ files:
642
635
  - funchook/distorm/src/x86defs.h
643
636
  - funchook/include/funchook.h
644
637
  - funchook/install-sh
645
- - funchook/src/Makefile
646
638
  - funchook/src/Makefile.in
647
639
  - funchook/src/__strerror.h
648
- - funchook/src/config.h
649
- - funchook/src/config.h.in
650
- - funchook/src/decoder.o
651
- - funchook/src/distorm.o
652
640
  - funchook/src/funchook.c
653
- - funchook/src/funchook.o
654
641
  - funchook/src/funchook_internal.h
655
642
  - funchook/src/funchook_io.c
656
643
  - funchook/src/funchook_io.h
657
- - funchook/src/funchook_io.o
658
644
  - funchook/src/funchook_syscall.S
659
- - funchook/src/funchook_syscall.o
660
645
  - funchook/src/funchook_unix.c
661
- - funchook/src/funchook_unix.o
662
646
  - funchook/src/funchook_windows.c
663
647
  - funchook/src/funchook_x86.c
664
- - funchook/src/funchook_x86.o
665
- - funchook/src/instructions.o
666
- - funchook/src/insts.o
667
- - funchook/src/libfunchook.dylib
668
- - funchook/src/mnemonics.o
669
- - funchook/src/operands.o
670
648
  - funchook/src/os_func.c
671
649
  - funchook/src/os_func.h
672
- - funchook/src/os_func.o
673
650
  - funchook/src/os_func_unix.c
674
- - funchook/src/os_func_unix.o
675
651
  - funchook/src/os_func_windows.c
676
- - funchook/src/prefix.o
677
652
  - funchook/src/printf_base.c
678
653
  - funchook/src/printf_base.h
679
- - funchook/src/printf_base.o
680
- - funchook/src/textdefs.o
681
- - funchook/src/wstring.o
682
- - funchook/test/Makefile
683
654
  - funchook/test/Makefile.in
684
- - funchook/test/funchook_test
685
655
  - funchook/test/libfunchook_test.c
686
- - funchook/test/libfunchook_test.so
687
- - funchook/test/libfunchook_test.so.dSYM/Contents/Info.plist
688
- - funchook/test/libfunchook_test.so.dSYM/Contents/Resources/DWARF/libfunchook_test.so
689
656
  - funchook/test/libfunchook_test2.c
690
657
  - funchook/test/suffix.list
691
658
  - funchook/test/test_main.c
692
- - funchook/test/test_main.o
693
659
  - funchook/test/x86_64_test.S
694
- - funchook/test/x86_64_test.o
695
660
  - funchook/test/x86_test.S
696
661
  - funchook/win32/config.h
697
662
  - funchook/win32/funchook.sln
@@ -706,7 +671,6 @@ files:
706
671
  - lib/contrast.rb
707
672
  - lib/contrast/agent.rb
708
673
  - lib/contrast/agent/assess.rb
709
- - lib/contrast/agent/assess/adjusted_span.rb
710
674
  - lib/contrast/agent/assess/contrast_event.rb
711
675
  - lib/contrast/agent/assess/events/event_factory.rb
712
676
  - lib/contrast/agent/assess/events/source_event.rb
@@ -751,6 +715,8 @@ files:
751
715
  - lib/contrast/agent/assess/policy/trigger_validation/trigger_validation.rb
752
716
  - lib/contrast/agent/assess/policy/trigger_validation/xss_validator.rb
753
717
  - lib/contrast/agent/assess/properties.rb
718
+ - lib/contrast/agent/assess/property/evented.rb
719
+ - lib/contrast/agent/assess/property/tagged.rb
754
720
  - lib/contrast/agent/assess/rule.rb
755
721
  - lib/contrast/agent/assess/rule/base.rb
756
722
  - lib/contrast/agent/assess/rule/provider.rb
@@ -819,25 +785,42 @@ files:
819
785
  - lib/contrast/agent/rule_set.rb
820
786
  - lib/contrast/agent/scope.rb
821
787
  - lib/contrast/agent/service_heartbeat.rb
822
- - lib/contrast/agent/socket_client.rb
823
788
  - lib/contrast/agent/static_analysis.rb
824
789
  - lib/contrast/agent/thread.rb
790
+ - lib/contrast/agent/thread_watcher.rb
825
791
  - lib/contrast/agent/tracepoint_hook.rb
826
792
  - lib/contrast/agent/version.rb
793
+ - lib/contrast/agent/worker_thread.rb
827
794
  - lib/contrast/api.rb
828
795
  - lib/contrast/api/.gitkeep
829
- - lib/contrast/api/connection_status.rb
796
+ - lib/contrast/api/communication.rb
797
+ - lib/contrast/api/communication/connection_status.rb
798
+ - lib/contrast/api/communication/messaging_queue.rb
799
+ - lib/contrast/api/communication/response_processor.rb
800
+ - lib/contrast/api/communication/service_lifecycle.rb
801
+ - lib/contrast/api/communication/socket.rb
802
+ - lib/contrast/api/communication/socket_client.rb
803
+ - lib/contrast/api/communication/speedracer.rb
804
+ - lib/contrast/api/communication/tcp_socket.rb
805
+ - lib/contrast/api/communication/unix_socket.rb
830
806
  - lib/contrast/api/decorators.rb
807
+ - lib/contrast/api/decorators/address.rb
831
808
  - lib/contrast/api/decorators/application_settings.rb
832
809
  - lib/contrast/api/decorators/application_update.rb
810
+ - lib/contrast/api/decorators/http_request.rb
833
811
  - lib/contrast/api/decorators/input_analysis.rb
812
+ - lib/contrast/api/decorators/message.rb
813
+ - lib/contrast/api/decorators/rasp_rule_sample.rb
814
+ - lib/contrast/api/decorators/route_coverage.rb
834
815
  - lib/contrast/api/decorators/server_features.rb
835
- - lib/contrast/api/dtm_pb.rb
836
- - lib/contrast/api/settings_pb.rb
837
- - lib/contrast/api/socket.rb
838
- - lib/contrast/api/speedracer.rb
839
- - lib/contrast/api/tcp_socket.rb
840
- - lib/contrast/api/unix_socket.rb
816
+ - lib/contrast/api/decorators/trace_event.rb
817
+ - lib/contrast/api/decorators/trace_event_object.rb
818
+ - lib/contrast/api/decorators/trace_event_signature.rb
819
+ - lib/contrast/api/decorators/trace_taint_range.rb
820
+ - lib/contrast/api/decorators/trace_taint_range_tags.rb
821
+ - lib/contrast/api/decorators/user_input.rb
822
+ - lib/contrast/api/dtm.pb.rb
823
+ - lib/contrast/api/settings.pb.rb
841
824
  - lib/contrast/common_agent_configuration.rb
842
825
  - lib/contrast/components/agent.rb
843
826
  - lib/contrast/components/app_context.rb
@@ -906,13 +889,12 @@ files:
906
889
  - lib/contrast/framework/rails/rewrite/active_record_named.rb
907
890
  - lib/contrast/framework/rails/rewrite/active_record_time_zone_inherited.rb
908
891
  - lib/contrast/framework/rails/support.rb
909
- - lib/contrast/framework/sinatra/application_helper.rb
910
892
  - lib/contrast/framework/sinatra/patch/base.rb
911
893
  - lib/contrast/framework/sinatra/patch/support.rb
912
894
  - lib/contrast/framework/sinatra/support.rb
913
- - lib/contrast/framework/view_technologies_descriptor.rb
914
- - lib/contrast/internal_exception.rb
895
+ - lib/contrast/funchook/funchook.rb
915
896
  - lib/contrast/logger/application.rb
897
+ - lib/contrast/logger/format.rb
916
898
  - lib/contrast/logger/log.rb
917
899
  - lib/contrast/logger/time.rb
918
900
  - lib/contrast/security_exception.rb
@@ -921,7 +903,6 @@ files:
921
903
  - lib/contrast/utils/assess/sampling_util.rb
922
904
  - lib/contrast/utils/assess/tracking_util.rb
923
905
  - lib/contrast/utils/boolean_util.rb
924
- - lib/contrast/utils/cache.rb
925
906
  - lib/contrast/utils/class_util.rb
926
907
  - lib/contrast/utils/duck_utils.rb
927
908
  - lib/contrast/utils/env_configuration_item.rb
@@ -939,10 +920,7 @@ files:
939
920
  - lib/contrast/utils/prevent_serialization.rb
940
921
  - lib/contrast/utils/resource_loader.rb
941
922
  - lib/contrast/utils/ruby_ast_rewriter.rb
942
- - lib/contrast/utils/service_response_util.rb
943
- - lib/contrast/utils/service_sender_util.rb
944
923
  - lib/contrast/utils/sha256_builder.rb
945
- - lib/contrast/utils/sinatra_helper.rb
946
924
  - lib/contrast/utils/stack_trace_utils.rb
947
925
  - lib/contrast/utils/string_utils.rb
948
926
  - lib/contrast/utils/tag_util.rb
@@ -959,8 +937,6 @@ files:
959
937
  - service_executables/linux/contrast-service
960
938
  - service_executables/mac/contrast-service
961
939
  - shared_libraries/.gitkeep
962
- - shared_libraries/funchook.h
963
- - shared_libraries/libfunchook.dylib
964
940
  homepage: https://www.contrastsecurity.com
965
941
  licenses:
966
942
  - CONTRAST SECURITY (see license file)
@@ -988,7 +964,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
988
964
  - !ruby/object:Gem::Version
989
965
  version: '0'
990
966
  requirements: []
991
- rubygems_version: 3.0.8
967
+ rubygems_version: 3.0.3
992
968
  signing_key:
993
969
  specification_version: 4
994
970
  summary: Contrast Security's agent for rack-based applications.