tcell_agent 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/bin/tcell_agent +10 -2
  3. data/lib/tcell_agent.rb +3 -3
  4. data/lib/tcell_agent/agent.rb +42 -52
  5. data/lib/tcell_agent/agent/event_processor.rb +129 -162
  6. data/lib/tcell_agent/agent/fork_pipe_manager.rb +57 -62
  7. data/lib/tcell_agent/agent/policy_manager.rb +83 -104
  8. data/lib/tcell_agent/agent/policy_types.rb +24 -29
  9. data/lib/tcell_agent/agent/route_manager.rb +36 -46
  10. data/lib/tcell_agent/agent/static_agent.rb +19 -21
  11. data/lib/tcell_agent/api.rb +23 -28
  12. data/lib/tcell_agent/appsensor/injections_reporter.rb +7 -11
  13. data/lib/tcell_agent/authlogic.rb +7 -7
  14. data/lib/tcell_agent/cmdi.rb +22 -23
  15. data/lib/tcell_agent/config/unknown_options.rb +71 -69
  16. data/lib/tcell_agent/configuration.rb +187 -191
  17. data/lib/tcell_agent/devise.rb +13 -15
  18. data/lib/tcell_agent/hooks/login_fraud.rb +1 -1
  19. data/lib/tcell_agent/instrumentation.rb +120 -124
  20. data/lib/tcell_agent/logger.rb +29 -45
  21. data/lib/tcell_agent/patches.rb +5 -5
  22. data/lib/tcell_agent/policies/dataloss_policy.rb +263 -288
  23. data/lib/tcell_agent/policies/http_redirect_policy.rb +25 -37
  24. data/lib/tcell_agent/policies/http_tx_policy.rb +48 -52
  25. data/lib/tcell_agent/policies/login_fraud_policy.rb +15 -20
  26. data/lib/tcell_agent/policies/policy.rb +0 -2
  27. data/lib/tcell_agent/policies/rust_policies.rb +24 -29
  28. data/lib/tcell_agent/rails.rb +2 -3
  29. data/lib/tcell_agent/rails/auth/authlogic.rb +2 -2
  30. data/lib/tcell_agent/rails/auth/devise.rb +2 -2
  31. data/lib/tcell_agent/rails/auth/doorkeeper.rb +2 -2
  32. data/lib/tcell_agent/rails/better_ip.rb +12 -16
  33. data/lib/tcell_agent/rails/csrf_exception.rb +4 -7
  34. data/lib/tcell_agent/rails/dlp.rb +208 -107
  35. data/lib/tcell_agent/rails/dlp/process_request.rb +37 -47
  36. data/lib/tcell_agent/rails/dlp_handler.rb +9 -11
  37. data/lib/tcell_agent/rails/js_agent_insert.rb +11 -14
  38. data/lib/tcell_agent/rails/middleware/body_filter_middleware.rb +8 -7
  39. data/lib/tcell_agent/rails/middleware/context_middleware.rb +4 -5
  40. data/lib/tcell_agent/rails/middleware/global_middleware.rb +5 -8
  41. data/lib/tcell_agent/rails/middleware/headers_middleware.rb +24 -27
  42. data/lib/tcell_agent/rails/on_start.rb +5 -5
  43. data/lib/tcell_agent/rails/responses.rb +7 -9
  44. data/lib/tcell_agent/rails/routes.rb +62 -81
  45. data/lib/tcell_agent/rails/routes/grape.rb +25 -30
  46. data/lib/tcell_agent/rails/routes/route_id.rb +9 -14
  47. data/lib/tcell_agent/rails/settings_reporter.rb +44 -33
  48. data/lib/tcell_agent/rails/tcell_body_proxy.rb +15 -18
  49. data/lib/tcell_agent/routes/table.rb +31 -33
  50. data/lib/tcell_agent/rust/{libtcellagent-1.3.0.dylib → libtcellagent-1.3.1.dylib} +0 -0
  51. data/lib/tcell_agent/rust/{libtcellagent-1.3.0.so → libtcellagent-1.3.1.so} +0 -0
  52. data/lib/tcell_agent/rust/{libtcellagent-alpine-1.3.0.so → libtcellagent-alpine-1.3.1.so} +0 -0
  53. data/lib/tcell_agent/rust/models.rb +32 -37
  54. data/lib/tcell_agent/rust/tcellagent-1.3.1.dll +0 -0
  55. data/lib/tcell_agent/rust/whisperer.rb +101 -104
  56. data/lib/tcell_agent/sensor_events/app_config.rb +7 -7
  57. data/lib/tcell_agent/sensor_events/appsensor_event.rb +26 -27
  58. data/lib/tcell_agent/sensor_events/appsensor_meta_event.rb +20 -88
  59. data/lib/tcell_agent/sensor_events/command_injection.rb +52 -80
  60. data/lib/tcell_agent/sensor_events/discovery.rb +27 -27
  61. data/lib/tcell_agent/sensor_events/dlp.rb +50 -56
  62. data/lib/tcell_agent/sensor_events/honeytokens.rb +9 -9
  63. data/lib/tcell_agent/sensor_events/metrics.rb +20 -21
  64. data/lib/tcell_agent/sensor_events/patches.rb +10 -12
  65. data/lib/tcell_agent/sensor_events/sensor.rb +32 -36
  66. data/lib/tcell_agent/sensor_events/server_agent.rb +130 -127
  67. data/lib/tcell_agent/sensor_events/util/sanitizer_utilities.rb +60 -80
  68. data/lib/tcell_agent/sensor_events/util/utils.rb +3 -5
  69. data/lib/tcell_agent/servers/passenger.rb +5 -9
  70. data/lib/tcell_agent/servers/puma.rb +18 -27
  71. data/lib/tcell_agent/servers/rails_server.rb +5 -9
  72. data/lib/tcell_agent/servers/thin.rb +2 -4
  73. data/lib/tcell_agent/servers/unicorn.rb +18 -27
  74. data/lib/tcell_agent/servers/webrick.rb +2 -4
  75. data/lib/tcell_agent/settings_reporter.rb +126 -0
  76. data/lib/tcell_agent/sinatra.rb +24 -26
  77. data/lib/tcell_agent/start_background_thread.rb +21 -142
  78. data/lib/tcell_agent/system_info.rb +4 -3
  79. data/lib/tcell_agent/tcell_context.rb +150 -0
  80. data/lib/tcell_agent/userinfo.rb +3 -3
  81. data/lib/tcell_agent/utils/io.rb +19 -24
  82. data/lib/tcell_agent/utils/params.rb +9 -15
  83. data/lib/tcell_agent/utils/queue_with_timeout.rb +26 -32
  84. data/lib/tcell_agent/utils/strings.rb +4 -6
  85. data/lib/tcell_agent/version.rb +1 -1
  86. data/spec/lib/tcell_agent/agent/policy_manager_spec.rb +5 -5
  87. data/spec/lib/tcell_agent/agent/static_agent_spec.rb +7 -7
  88. data/spec/lib/tcell_agent/cmdi_spec.rb +21 -21
  89. data/spec/lib/tcell_agent/hooks/login_fraud_spec.rb +29 -24
  90. data/spec/lib/tcell_agent/instrumentation_spec.rb +4 -4
  91. data/spec/lib/tcell_agent/patches_spec.rb +8 -8
  92. data/spec/lib/tcell_agent/policies/appsensor_policy_spec.rb +23 -23
  93. data/spec/lib/tcell_agent/policies/patches_policy_spec.rb +2 -2
  94. data/spec/lib/tcell_agent/rails/csrf_exception_spec.rb +69 -0
  95. data/spec/lib/tcell_agent/rails/dlp_spec.rb +1039 -0
  96. data/spec/lib/tcell_agent/rails/js_agent_insert_spec.rb +271 -0
  97. data/spec/lib/tcell_agent/rails/logger_spec.rb +5 -5
  98. data/spec/lib/tcell_agent/rails/middleware/appsensor_middleware_spec.rb +3 -3
  99. data/spec/lib/tcell_agent/rails/middleware/dlp_middleware_spec.rb +4 -4
  100. data/spec/lib/tcell_agent/rails/middleware/global_middleware_spec.rb +5 -5
  101. data/spec/lib/tcell_agent/rails/middleware/redirect_middleware_spec.rb +1 -1
  102. data/spec/lib/tcell_agent/rails/middleware/tcell_body_proxy_spec.rb +11 -8
  103. data/spec/lib/tcell_agent/rails/responses_spec.rb +2 -2
  104. data/spec/lib/tcell_agent/rails/routes/grape_spec.rb +2 -2
  105. data/spec/lib/tcell_agent/rails/routes/route_id_spec.rb +1 -1
  106. data/spec/lib/tcell_agent/rails/routes/routes_spec.rb +4 -4
  107. data/spec/lib/tcell_agent/rust/models_spec.rb +83 -75
  108. data/spec/lib/tcell_agent/rust/whisperer_spec.rb +14 -14
  109. data/spec/lib/tcell_agent/sensor_events/appsensor_meta_event_spec.rb +19 -70
  110. data/spec/lib/tcell_agent/sensor_events/sessions_metric_spec.rb +1 -1
  111. data/spec/lib/tcell_agent/settings_reporter_spec.rb +162 -0
  112. data/spec/lib/tcell_agent/tcell_context_spec.rb +154 -0
  113. data/spec/spec_helper.rb +5 -0
  114. metadata +18 -10
  115. data/lib/tcell_agent/appsensor/meta_data.rb +0 -132
  116. data/lib/tcell_agent/patches/meta_data.rb +0 -59
  117. data/lib/tcell_agent/rust/tcellagent-1.3.0.dll +0 -0
  118. data/spec/lib/tcell_agent/appsensor/meta_data_spec.rb +0 -71
@@ -6,7 +6,6 @@ require 'tcell_agent/logger'
6
6
 
7
7
  module TCellAgent
8
8
  module Policies
9
-
10
9
  class HttpRedirectPolicy < Policy
11
10
  attr_accessor :policy_id, :enabled, :whitelist, :block, :data_scheme_allowed
12
11
 
@@ -19,7 +18,7 @@ module TCellAgent
19
18
  end
20
19
 
21
20
  def suspicious_redirect?(host, current_host)
22
- if (!(host) || host == "" || host == current_host)
21
+ if !host || host == '' || host == current_host
23
22
  # local redirect
24
23
  return false
25
24
  end
@@ -33,22 +32,18 @@ module TCellAgent
33
32
  true
34
33
  end
35
34
 
36
- def enforce(target_uri, request_uri, current_path, method, route_id, status_code, remote_addr, hmac_session_id=nil)
35
+ def enforce(target_uri, request_uri, current_path, method, route_id, status_code, remote_addr, hmac_session_id = nil)
37
36
  return nil unless @enabled
38
37
 
39
38
  current_host = URI.parse(request_uri).host
40
- if target_uri.downcase.start_with?("data:")
41
- if @data_scheme_allowed
42
- return nil
43
- end
39
+ if target_uri.downcase.start_with?('data:')
40
+ return nil if @data_scheme_allowed
44
41
 
45
- target_host = target_uri.split(",")[0]
42
+ target_host = target_uri.split(',')[0]
46
43
 
47
44
  else
48
45
  target_host = URI.parse(target_uri).host
49
- if !self.suspicious_redirect?(target_host, current_host)
50
- return nil
51
- end
46
+ return nil unless suspicious_redirect?(target_host, current_host)
52
47
  end
53
48
 
54
49
  begin
@@ -61,48 +56,41 @@ module TCellAgent
61
56
  status_code,
62
57
  remote_addr,
63
58
  hmac_session_id,
64
- nil)
59
+ nil
60
+ )
65
61
 
66
62
  TCellAgent.send_event(event)
67
63
  rescue StandardError => ie
68
64
  TCellAgent.logger.error("uncaught exception while creating redirect event: #{ie.message}")
69
65
  end
70
66
 
71
- if @block
72
- return "/"
73
- else
74
- return nil
75
- end
67
+ return '/' if @block
68
+
69
+ nil
76
70
  end
77
71
 
78
72
  def self.from_json(policy_json)
79
- if (!policy_json)
80
- return nil
81
- end
73
+ return nil unless policy_json
82
74
 
83
75
  http_redirect_policy = HttpRedirectPolicy.new
84
- if policy_json.has_key?("policy_id")
85
- http_redirect_policy.policy_id = policy_json["policy_id"]
86
- else
87
- raise "Policy ID missing"
88
- end
76
+ http_redirect_policy.policy_id = policy_json['policy_id']
77
+ raise 'Policy ID missing' unless http_redirect_policy.policy_id
89
78
 
90
- if policy_json.has_key?("data")
91
- policy_data_json = policy_json["data"]
92
- http_redirect_policy.enabled = policy_data_json.fetch("enabled", false)
93
- http_redirect_policy.block = policy_data_json.fetch("block", false)
94
- http_redirect_policy.data_scheme_allowed = policy_data_json.fetch("data_scheme_allowed", false)
79
+ policy_data_json = policy_json['data']
80
+ return http_redirect_policy unless policy_data_json
95
81
 
96
- http_redirect_policy.whitelist = []
97
- policy_data_json.fetch("whitelist", []).each do |regex_pattern|
98
- escaped = Regexp.escape(regex_pattern).gsub('\*','.*?')
99
- http_redirect_policy.whitelist.push(Regexp.new("^#{escaped}$", Regexp::IGNORECASE))
100
- end
82
+ http_redirect_policy.enabled = policy_data_json.fetch('enabled', false)
83
+ http_redirect_policy.block = policy_data_json.fetch('block', false)
84
+ http_redirect_policy.data_scheme_allowed = policy_data_json.fetch('data_scheme_allowed', false)
85
+
86
+ http_redirect_policy.whitelist = []
87
+ policy_data_json.fetch('whitelist', []).each do |regex_pattern|
88
+ escaped = Regexp.escape(regex_pattern).gsub('\*', '.*?')
89
+ http_redirect_policy.whitelist.push(Regexp.new("^#{escaped}$", Regexp::IGNORECASE))
101
90
  end
102
91
 
103
- return http_redirect_policy
92
+ http_redirect_policy
104
93
  end
105
94
  end
106
-
107
95
  end
108
96
  end
@@ -1,64 +1,60 @@
1
- #{}"http-tx": {
1
+ # {}"http-tx": {
2
2
  # "policy_id":"afh023",
3
3
  # "types": {
4
4
  # "firehose": { enabled: true },
5
- #{}"auth_framework_only": {enabled: true},
6
- #{}"{}structure": {enabled: true },
7
- #{}"fingerprint": {enabled: true }
8
- #}
9
- #},
5
+ # {}"auth_framework_only": {enabled: true},
6
+ # {}"{}structure": {enabled: true },
7
+ # {}"fingerprint": {enabled: true }
8
+ # }
9
+ # },
10
10
 
11
11
  require 'tcell_agent/policies/policy'
12
12
 
13
-
14
13
  module TCellAgent
15
- module Policies
16
- class HttpTxPolicy < Policy
17
- attr_accessor :policy_id
18
- attr_accessor :firehose
19
- attr_accessor :auth_framework
20
- attr_accessor :profile
21
- attr_accessor :fingerprint
14
+ module Policies
15
+ class HttpTxPolicy < Policy
16
+ attr_accessor :policy_id, :firehose, :auth_framework, :profile, :fingerprint
17
+
18
+ def initialize
19
+ @firehose = { 'enabled' => false, 'lite' => false }
20
+ @auth_framework = { 'enabled' => false, 'lite' => false }
21
+ @profile = { 'enabled' => false }
22
+ @fingerprint = { 'enabled' => false, 'hmacUserAgent' => false, 'hmacUserId' => false, 'sampling' => nil }
23
+ end
24
+
25
+ def self.from_json(policy_json)
26
+ return nil unless policy_json
27
+ http_tx_policy = HttpTxPolicy.new
22
28
 
23
- def initialize()
24
- @firehose = {"enabled"=>false, "lite"=>false }
25
- @auth_framework = {"enabled"=>false, "lite"=>false }
26
- @profile = {"enabled"=>false }
27
- @fingerprint = {"enabled"=>false, "hmacUserAgent"=>false, "hmacUserId"=>false, "sampling"=>nil }
28
- end
29
+ http_tx_policy.policy_id = policy_json['policy_id']
30
+ raise 'Policy ID missing' unless http_tx_policy.policy_id
31
+
32
+ types = policy_json['types']
33
+ return http_tx_policy unless types
34
+
35
+ if types.key?('firehose')
36
+ http_tx_policy.firehose['enabled'] = types['firehose'].fetch('enabled', false)
37
+ http_tx_policy.firehose['lite'] = types['firehose'].fetch('lite', false)
38
+ end
29
39
 
30
- def self.from_json(policy_json)
31
- if (!policy_json)
32
- return nil
33
- end
34
- http_tx_policy = HttpTxPolicy.new
35
- if policy_json.has_key?("policy_id")
36
- http_tx_policy.policy_id = policy_json["policy_id"]
37
- else
38
- raise "Policy ID missing"
39
- end
40
- if policy_json.has_key?("types")
41
- types = policy_json["types"]
42
- if types.has_key?("firehose")
43
- http_tx_policy.firehose["enabled"] = types["firehose"].fetch("enabled", false)
44
- http_tx_policy.firehose["lite"] = types["firehose"].fetch("lite", false)
45
- end
46
- if types.has_key?("auth_framework")
47
- http_tx_policy.auth_framework["enabled"] = types["auth_framework"].fetch("enabled", false)
48
- http_tx_policy.auth_framework["lite"] = types["auth_framework"].fetch("lite", false)
49
- end
50
- if types.has_key?("profile")
51
- http_tx_policy.profile["enabled"] = types["profile"].fetch("enabled", false)
52
- end
53
- if types.has_key?("fingerprint")
54
- http_tx_policy.fingerprint["enabled"] = types["fingerprint"].fetch("enabled", false)
55
- http_tx_policy.fingerprint["hmacUserAgent"] = types["fingerprint"].fetch("hmacUserAgent", false)
56
- http_tx_policy.fingerprint["hmacUserId"] = types["fingerprint"].fetch("hmacUserId", false)
57
- http_tx_policy.fingerprint["sampling"] = types["fingerprint"].fetch("sampling", 0)
58
- end
59
- end
60
- return http_tx_policy
61
- end
40
+ if types.key?('auth_framework')
41
+ http_tx_policy.auth_framework['enabled'] = types['auth_framework'].fetch('enabled', false)
42
+ http_tx_policy.auth_framework['lite'] = types['auth_framework'].fetch('lite', false)
62
43
  end
44
+
45
+ if types.key?('profile')
46
+ http_tx_policy.profile['enabled'] = types['profile'].fetch('enabled', false)
47
+ end
48
+
49
+ if types.key?('fingerprint')
50
+ http_tx_policy.fingerprint['enabled'] = types['fingerprint'].fetch('enabled', false)
51
+ http_tx_policy.fingerprint['hmacUserAgent'] = types['fingerprint'].fetch('hmacUserAgent', false)
52
+ http_tx_policy.fingerprint['hmacUserId'] = types['fingerprint'].fetch('hmacUserId', false)
53
+ http_tx_policy.fingerprint['sampling'] = types['fingerprint'].fetch('sampling', 0)
54
+ end
55
+
56
+ http_tx_policy
57
+ end
63
58
  end
59
+ end
64
60
  end
@@ -1,6 +1,5 @@
1
1
  require 'tcell_agent/policies/policy'
2
2
 
3
-
4
3
  module TCellAgent
5
4
  module Policies
6
5
  class LoginFraudPolicy < Policy
@@ -11,8 +10,9 @@ module TCellAgent
11
10
  attr_accessor :session_hijacking_metrics
12
11
 
13
12
  def initialize
14
- self.init_options
13
+ init_options
15
14
  end
15
+
16
16
  def init_options
17
17
  @policy_id = nil
18
18
  @login_success_enabled = false
@@ -25,25 +25,20 @@ module TCellAgent
25
25
  end
26
26
 
27
27
  def self.from_json(policy_json)
28
- if (!policy_json)
29
- return nil
30
- end
28
+ return nil unless policy_json
31
29
  sensor_policy = LoginFraudPolicy.new
32
- if policy_json.has_key?("policy_id")
33
- sensor_policy.policy_id = policy_json["policy_id"]
34
- else
35
- raise "Policy ID missing"
36
- end
37
- if policy_json.has_key?("data")
38
- data_json = policy_json["data"]
39
- if data_json.has_key?("options")
40
- options_json = data_json["options"]
41
- sensor_policy.login_failed_enabled = options_json.fetch("login_failed_enabled", false)
42
- sensor_policy.login_success_enabled = options_json.fetch("login_success_enabled", false)
43
- sensor_policy.session_hijacking_metrics = options_json.fetch("session_hijacking_enabled", false)
44
- end
45
- end
46
- return sensor_policy
30
+
31
+ sensor_policy.policy_id = policy_json['policy_id']
32
+ raise 'Policy ID missing' unless sensor_policy.policy_id
33
+
34
+ options_json = (policy_json['data'] || {})['options']
35
+ return sensor_policy unless options_json
36
+
37
+ sensor_policy.login_failed_enabled = options_json.fetch('login_failed_enabled', false)
38
+ sensor_policy.login_success_enabled = options_json.fetch('login_success_enabled', false)
39
+ sensor_policy.session_hijacking_metrics = options_json.fetch('session_hijacking_enabled', false)
40
+
41
+ sensor_policy
47
42
  end
48
43
  end
49
44
  end
@@ -1,8 +1,6 @@
1
1
  module TCellAgent
2
2
  module Policies
3
-
4
3
  class Policy
5
4
  end
6
-
7
5
  end
8
6
  end
@@ -6,15 +6,12 @@ require 'tcell_agent/rust/whisperer'
6
6
  require 'tcell_agent/sensor_events/command_injection'
7
7
  require 'tcell_agent/sensor_events/patches'
8
8
 
9
-
10
9
  module TCellAgent
11
10
  module Policies
12
-
13
11
  class RustPolicies < Policy
14
-
15
12
  attr_reader :appfirewall_enabled, :patches_enabled, :cmdi_enabled
16
13
 
17
- def initialize()
14
+ def initialize
18
15
  @appfirewall_enabled = false
19
16
  @patches_enabled = false
20
17
  @cmdi_enabled = false
@@ -22,11 +19,11 @@ module TCellAgent
22
19
  @jsagent_enabled = false
23
20
  @agent_ptr = nil
24
21
 
25
- whisper = TCellAgent::Rust::Whisperer.create_agent()
26
- if whisper["error"]
27
- TCellAgent.logger.error("Error initializing policies: #{whisper["error"]}")
22
+ whisper = TCellAgent::Rust::Whisperer.create_agent
23
+ if whisper['error']
24
+ TCellAgent.logger.error("Error initializing policies: #{whisper['error']}")
28
25
  else
29
- @agent_ptr = whisper["agent_ptr"]
26
+ @agent_ptr = whisper['agent_ptr']
30
27
  end
31
28
  end
32
29
 
@@ -34,17 +31,17 @@ module TCellAgent
34
31
  return if @agent_ptr.nil? || policies_json.nil? || policies_json.empty?
35
32
 
36
33
  whisper = TCellAgent::Rust::Whisperer.update_policies(@agent_ptr, policies_json)
37
- if whisper["errors"]
38
- whisper["errors"].each do |error|
34
+ if whisper['errors']
35
+ whisper['errors'].each do |error|
39
36
  TCellAgent.logger.error("Error updating policies: #{error}")
40
37
  end
41
38
  else
42
- enablements = whisper["enablements"]
43
- @appfirewall_enabled = !!enablements["appfirewall"]
44
- @patches_enabled = !!enablements["patches"]
45
- @cmdi_enabled = !!enablements["cmdi"]
46
- @headers_enabled = !!enablements["headers"]
47
- @jsagent_enabled = !!enablements["jsagentinjection"]
39
+ enablements = whisper['enablements']
40
+ @appfirewall_enabled = enablements['appfirewall']
41
+ @patches_enabled = enablements['patches']
42
+ @cmdi_enabled = enablements['cmdi']
43
+ @headers_enabled = enablements['headers']
44
+ @jsagent_enabled = enablements['jsagentinjection']
48
45
  end
49
46
  end
50
47
 
@@ -52,11 +49,11 @@ module TCellAgent
52
49
  return false unless @agent_ptr && @patches_enabled
53
50
 
54
51
  whisper = TCellAgent::Rust::Whisperer.apply_patches(@agent_ptr, appsensor_meta)
55
- if whisper["error"]
56
- TCellAgent.logger.error("Error processing patches: #{whisper["error"]}")
52
+ if whisper['error']
53
+ TCellAgent.logger.error("Error processing patches: #{whisper['error']}")
57
54
  else
58
- response = whisper["apply_response"]
59
- if response && response["status"] == "Blocked"
55
+ response = whisper['apply_response']
56
+ if response && response['status'] == 'Blocked'
60
57
  patches_event = TCellAgent::SensorEvents::PatchesEvent.new(response, appsensor_meta)
61
58
  TCellAgent.send_event(patches_event)
62
59
  return true
@@ -69,9 +66,9 @@ module TCellAgent
69
66
  def check_appfirewall_injections(appsensor_meta)
70
67
  return unless @agent_ptr && @appfirewall_enabled
71
68
 
72
- TCellAgent::Instrumentation.safe_block("AppSensor inspection") do
69
+ TCellAgent::Instrumentation.safe_block('AppSensor inspection') do
73
70
  whisper = TCellAgent::Rust::Whisperer.apply_appfirewall(@agent_ptr, appsensor_meta)
74
- TCellAgent::AppSensor::InjectionsReporter.report_and_log(whisper["apply_response"])
71
+ TCellAgent::AppSensor::InjectionsReporter.report_and_log(whisper['apply_response'])
75
72
  end
76
73
  end
77
74
 
@@ -82,15 +79,13 @@ module TCellAgent
82
79
  whisper = TCellAgent::Rust::Whisperer.apply_cmdi(
83
80
  @agent_ptr, command, tcell_context
84
81
  )
85
- apply_response = whisper.fetch("apply_response", {})
82
+ apply_response = whisper.fetch('apply_response', {})
86
83
  cmdi_event =
87
84
  TCellAgent::SensorEvents::CommandInjectionEvent.build_from_native_lib_response_and_tcell_context(apply_response,
88
85
  tcell_context)
89
- if cmdi_event
90
- TCellAgent.send_event(cmdi_event)
91
- end
86
+ TCellAgent.send_event(cmdi_event) if cmdi_event
92
87
 
93
- apply_response.fetch("blocked", false)
88
+ apply_response.fetch('blocked', false)
94
89
  end
95
90
 
96
91
  def get_headers(tcell_context)
@@ -99,7 +94,7 @@ module TCellAgent
99
94
  whisper = TCellAgent::Rust::Whisperer.get_headers(
100
95
  @agent_ptr, tcell_context
101
96
  )
102
- return whisper['headers'] || []
97
+ whisper['headers'] || []
103
98
  end
104
99
 
105
100
  def get_js_agent_script_tag(tcell_context)
@@ -108,7 +103,7 @@ module TCellAgent
108
103
  whisper = TCellAgent::Rust::Whisperer.get_js_agent_script_tag(
109
104
  @agent_ptr, tcell_context
110
105
  )
111
- return whisper['script_tag']
106
+ whisper['script_tag']
112
107
  end
113
108
  end
114
109
  end
@@ -17,19 +17,18 @@ require 'tcell_agent/rails/settings_reporter'
17
17
  require 'tcell_agent/rails/dlp'
18
18
  require 'tcell_agent/rails/csrf_exception'
19
19
 
20
-
21
20
  require 'tcell_agent/userinfo'
22
21
  require 'cgi'
23
22
  require 'thread'
24
23
 
25
24
  module TCellAgent
26
25
  class Railtie < Rails::Railtie
27
- initializer "tcell_agent.insert_middleware" do |app|
26
+ initializer 'tcell_agent.insert_middleware' do |app|
28
27
  app.config.to_prepare do
29
28
  require 'tcell_agent/devise' if defined?(Devise)
30
29
  require 'tcell_agent/rails/auth/devise' if defined?(Devise)
31
30
  require 'tcell_agent/authlogic' if defined?(Authlogic)
32
- require 'tcell_agent/rails/auth/authlogic' if defined?(Authlogic)
31
+ require 'tcell_agent/rails/auth/authlogic' if defined?(Authlogic)
33
32
  require 'tcell_agent/rails/auth/doorkeeper'
34
33
  end
35
34
  app.config.middleware.insert_before(0, TCellAgent::Instrumentation::Rails::Middleware::ContextMiddleware)
@@ -23,11 +23,11 @@ if TCellAgent.configuration.should_instrument_authlogic?
23
23
  user_logged_in_after = !user.nil?
24
24
 
25
25
  TCellAgent::Instrumentation.safe_block('Authlogic login info') do
26
- login_fraud_policy = TCellAgent.policy(TCellAgent::PolicyTypes::LoginFraud)
26
+ login_fraud_policy = TCellAgent.policy(TCellAgent::PolicyTypes::LOGINFRAUD)
27
27
  if login_fraud_policy && login_fraud_policy.enabled
28
28
  user_id = nil
29
29
  TCellAgent::Instrumentation.safe_block('getting userid for login form') do
30
- user_id = self.send(self.class.login_field.to_sym)
30
+ user_id = send(self.class.login_field.to_sym)
31
31
  end
32
32
 
33
33
  password = nil
@@ -22,7 +22,7 @@ if TCellAgent.configuration.should_instrument_devise? && defined?(Devise)
22
22
  password = tcell_data.password
23
23
  password ||= _get_tcell_password
24
24
 
25
- login_fraud_policy = TCellAgent.policy(TCellAgent::PolicyTypes::LoginFraud)
25
+ login_fraud_policy = TCellAgent.policy(TCellAgent::PolicyTypes::LOGINFRAUD)
26
26
  if login_fraud_policy && login_fraud_policy.login_failed_enabled
27
27
  TCellAgent.send_event(
28
28
  TCellAgent::SensorEvents::LoginFailure.new(
@@ -105,7 +105,7 @@ if TCellAgent.configuration.should_instrument_devise? && defined?(Devise)
105
105
  end
106
106
  end
107
107
 
108
- login_fraud_policy = TCellAgent.policy(TCellAgent::PolicyTypes::LoginFraud)
108
+ login_fraud_policy = TCellAgent.policy(TCellAgent::PolicyTypes::LOGINFRAUD)
109
109
  if login_fraud_policy && login_fraud_policy.login_success_enabled
110
110
  tcell_data = request.env[TCellAgent::Instrumentation::TCELL_ID]
111
111
  if tcell_data