sqreen 1.18.1-java → 1.18.2-java

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/CHANGELOG.md +6 -0
  3. data/README.md +1 -1
  4. data/Rakefile +1 -1
  5. data/lib/sqreen-alt.rb +3 -0
  6. data/lib/sqreen.rb +1 -1
  7. data/lib/sqreen/actions.rb +2 -2
  8. data/lib/sqreen/agent.rb +1 -1
  9. data/lib/sqreen/attack_detected.html +1 -1
  10. data/lib/sqreen/backport.rb +3 -0
  11. data/lib/sqreen/backport/original_name.rb +3 -0
  12. data/lib/sqreen/binding_accessor.rb +1 -1
  13. data/lib/sqreen/call_countable.rb +1 -1
  14. data/lib/sqreen/callback_tree.rb +1 -1
  15. data/lib/sqreen/callbacks.rb +1 -1
  16. data/lib/sqreen/capped_queue.rb +2 -1
  17. data/lib/sqreen/condition_evaluator.rb +1 -1
  18. data/lib/sqreen/conditionable.rb +1 -1
  19. data/lib/sqreen/configuration.rb +1 -1
  20. data/lib/sqreen/context.rb +1 -1
  21. data/lib/sqreen/deliveries/batch.rb +1 -1
  22. data/lib/sqreen/deliveries/simple.rb +1 -1
  23. data/lib/sqreen/dependency.rb +1 -1
  24. data/lib/sqreen/dependency/callback.rb +1 -1
  25. data/lib/sqreen/dependency/detector.rb +1 -1
  26. data/lib/sqreen/dependency/hook.rb +1 -1
  27. data/lib/sqreen/dependency/hook_point.rb +1 -1
  28. data/lib/sqreen/dependency/new_relic.rb +1 -1
  29. data/lib/sqreen/dependency/rack.rb +1 -1
  30. data/lib/sqreen/dependency/rails.rb +1 -1
  31. data/lib/sqreen/dependency/sentry.rb +1 -1
  32. data/lib/sqreen/dependency/sinatra.rb +1 -1
  33. data/lib/sqreen/encoding_sanitizer.rb +3 -0
  34. data/lib/sqreen/event.rb +1 -1
  35. data/lib/sqreen/events/attack.rb +1 -1
  36. data/lib/sqreen/events/remote_exception.rb +1 -1
  37. data/lib/sqreen/events/request_record.rb +1 -1
  38. data/lib/sqreen/exception.rb +13 -1
  39. data/lib/sqreen/frameworks.rb +1 -1
  40. data/lib/sqreen/frameworks/generic.rb +1 -1
  41. data/lib/sqreen/frameworks/rails.rb +2 -1
  42. data/lib/sqreen/frameworks/rails3.rb +1 -1
  43. data/lib/sqreen/frameworks/request_recorder.rb +2 -1
  44. data/lib/sqreen/frameworks/sinatra.rb +1 -1
  45. data/lib/sqreen/frameworks/sqreen_test.rb +1 -1
  46. data/lib/sqreen/instrumentation.rb +1 -1
  47. data/lib/sqreen/js/execjs_adapter.rb +3 -0
  48. data/lib/sqreen/js/js_service.rb +3 -0
  49. data/lib/sqreen/js/mini_racer_adapter.rb +3 -0
  50. data/lib/sqreen/log.rb +1 -1
  51. data/lib/sqreen/metrics.rb +1 -1
  52. data/lib/sqreen/metrics/average.rb +1 -1
  53. data/lib/sqreen/metrics/base.rb +1 -1
  54. data/lib/sqreen/metrics/binning.rb +2 -2
  55. data/lib/sqreen/metrics/collect.rb +1 -1
  56. data/lib/sqreen/metrics/sum.rb +1 -1
  57. data/lib/sqreen/metrics_store.rb +1 -1
  58. data/lib/sqreen/middleware.rb +1 -1
  59. data/lib/sqreen/mono_time.rb +3 -0
  60. data/lib/sqreen/payload_creator.rb +1 -1
  61. data/lib/sqreen/performance_notifications.rb +1 -1
  62. data/lib/sqreen/performance_notifications/binned_metrics.rb +2 -2
  63. data/lib/sqreen/performance_notifications/log.rb +1 -1
  64. data/lib/sqreen/performance_notifications/log_performance.rb +1 -1
  65. data/lib/sqreen/performance_notifications/metrics.rb +1 -1
  66. data/lib/sqreen/performance_notifications/newrelic.rb +1 -1
  67. data/lib/sqreen/remote_command.rb +2 -1
  68. data/lib/sqreen/rule_attributes.rb +1 -1
  69. data/lib/sqreen/rule_callback.rb +1 -1
  70. data/lib/sqreen/rules.rb +1 -1
  71. data/lib/sqreen/rules_callbacks.rb +2 -1
  72. data/lib/sqreen/rules_callbacks/binding_accessor_matcher.rb +1 -1
  73. data/lib/sqreen/rules_callbacks/binding_accessor_metrics.rb +1 -1
  74. data/lib/sqreen/rules_callbacks/blacklist_ips.rb +1 -1
  75. data/lib/sqreen/rules_callbacks/count_http_codes.rb +1 -1
  76. data/lib/sqreen/rules_callbacks/crawler_user_agent_matches.rb +1 -1
  77. data/lib/sqreen/rules_callbacks/crawler_user_agent_matches_metrics.rb +1 -1
  78. data/lib/sqreen/rules_callbacks/custom_error.rb +1 -1
  79. data/lib/sqreen/rules_callbacks/devise_auth_track.rb +3 -0
  80. data/lib/sqreen/rules_callbacks/devise_signup_track.rb +3 -0
  81. data/lib/sqreen/rules_callbacks/execjs.rb +1 -1
  82. data/lib/sqreen/rules_callbacks/headers_insert.rb +1 -1
  83. data/lib/sqreen/rules_callbacks/inspect_rule.rb +1 -1
  84. data/lib/sqreen/rules_callbacks/matcher_rule.rb +1 -1
  85. data/lib/sqreen/rules_callbacks/not_found.rb +74 -0
  86. data/lib/sqreen/rules_callbacks/rails_parameters.rb +1 -1
  87. data/lib/sqreen/rules_callbacks/record_request_context.rb +1 -1
  88. data/lib/sqreen/rules_callbacks/reflected_xss.rb +1 -1
  89. data/lib/sqreen/rules_callbacks/regexp_rule.rb +1 -1
  90. data/lib/sqreen/rules_callbacks/run_req_start_actions.rb +2 -2
  91. data/lib/sqreen/rules_callbacks/run_user_actions.rb +2 -2
  92. data/lib/sqreen/rules_callbacks/sdk_auth_track.rb +3 -0
  93. data/lib/sqreen/rules_callbacks/sdk_signup_track.rb +3 -0
  94. data/lib/sqreen/rules_callbacks/shell_env.rb +1 -1
  95. data/lib/sqreen/rules_callbacks/url_matches.rb +1 -1
  96. data/lib/sqreen/rules_callbacks/user_agent_matches.rb +1 -1
  97. data/lib/sqreen/rules_callbacks/waf.rb +43 -2
  98. data/lib/sqreen/rules_signature.rb +1 -1
  99. data/lib/sqreen/runner.rb +1 -1
  100. data/lib/sqreen/runtime_infos.rb +1 -1
  101. data/lib/sqreen/safe_json.rb +1 -1
  102. data/lib/sqreen/sdk.rb +1 -1
  103. data/lib/sqreen/serializer.rb +1 -1
  104. data/lib/sqreen/session.rb +1 -1
  105. data/lib/sqreen/shared_storage.rb +1 -1
  106. data/lib/sqreen/shared_storage23.rb +1 -1
  107. data/lib/sqreen/trie.rb +3 -0
  108. data/lib/sqreen/version.rb +3 -2
  109. data/lib/sqreen/web_server.rb +1 -1
  110. data/lib/sqreen/web_server/generic.rb +1 -1
  111. data/lib/sqreen/web_server/passenger.rb +1 -1
  112. data/lib/sqreen/web_server/puma.rb +1 -1
  113. data/lib/sqreen/web_server/rainbows.rb +1 -1
  114. data/lib/sqreen/web_server/thin.rb +1 -1
  115. data/lib/sqreen/web_server/unicorn.rb +1 -1
  116. data/lib/sqreen/web_server/webrick.rb +1 -1
  117. data/lib/sqreen/worker.rb +1 -1
  118. metadata +8 -6
@@ -1,5 +1,5 @@
1
- # Copyright (c) 2018 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/mono_time'
5
5
  require 'sqreen/metrics/base'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/metrics/base'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/metrics/base'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/exception'
5
5
  require 'sqreen/metrics'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  module Sqreen
5
5
  class Middleware
@@ -1,3 +1,6 @@
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
1
4
  module Sqreen
2
5
  has_mono_time = begin
3
6
  Process.clock_gettime Process::CLOCK_MONOTONIC
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/runtime_infos'
5
5
  require 'sqreen/events/remote_exception'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/mono_time'
5
5
 
@@ -1,5 +1,5 @@
1
- # Copyright (c) 2018 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/performance_notifications'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/performance_notifications'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/performance_notifications'
5
5
  require 'sqreen/performance_notifications/log'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/performance_notifications'
5
5
  require 'sqreen/performance_notifications/log'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/performance_notifications'
5
5
  require 'sqreen/performance_notifications/log'
@@ -1,5 +1,6 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
3
4
  require 'sqreen/log'
4
5
  require 'sqreen/events/remote_exception'
5
6
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  module Sqreen
5
5
  module Rules
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/callbacks'
5
5
  require 'sqreen/context'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/log'
5
5
  require 'sqreen/rule_attributes'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rules_callbacks/regexp_rule'
5
5
  require 'sqreen/rules_callbacks/matcher_rule'
@@ -24,6 +24,7 @@ require 'sqreen/rules_callbacks/execjs'
24
24
  require 'sqreen/rules_callbacks/binding_accessor_metrics'
25
25
  require 'sqreen/rules_callbacks/binding_accessor_matcher'
26
26
  require 'sqreen/rules_callbacks/count_http_codes'
27
+ require 'sqreen/rules_callbacks/not_found'
27
28
  require 'sqreen/rules_callbacks/crawler_user_agent_matches_metrics'
28
29
  require 'sqreen/rules_callbacks/sdk_auth_track'
29
30
  require 'sqreen/rules_callbacks/sdk_signup_track'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
  require 'sqreen/binding_accessor'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
  require 'sqreen/binding_accessor'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/trie'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_attributes'
5
5
  require 'sqreen/rule_callback'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rules_callbacks/matcher_rule'
5
5
  require 'sqreen/frameworks'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rules_callbacks/matcher_rule'
5
5
  require 'sqreen/frameworks'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
  require 'sqreen/exception'
@@ -1,3 +1,6 @@
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
1
4
  require 'sqreen/rule_attributes'
2
5
  require 'sqreen/rule_callback'
3
6
  require 'sqreen/safe_json'
@@ -1,3 +1,6 @@
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
1
4
  require 'sqreen/rule_attributes'
2
5
  require 'sqreen/rule_callback'
3
6
  require 'sqreen/safe_json'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
 
5
5
  require 'sqreen/js/js_service'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
 
@@ -0,0 +1,74 @@
1
+ require 'sqreen/rule_attributes'
2
+ require 'sqreen/rule_callback'
3
+
4
+ module Sqreen
5
+ module Rules
6
+ class NotFoundCB < RuleCB
7
+ IGNORED_EXTENSIONS = ['.css', '.gif', '.jpg', '.jpeg', '.png', '.svg', '.ico', '.webp', '.pdf', '.woff'].freeze
8
+
9
+ def post(rv, _inst, args, _budget = nil, &_block)
10
+ return if rv[0].to_i != 404
11
+
12
+ env = args[0]
13
+ ua = env['HTTP_USER_AGENT']
14
+ script_name = env['SCRIPT_NAME']
15
+ path_info = env['PATH_INFO']
16
+ verb = env['REQUEST_METHOD']
17
+ host = env['SERVER_NAME']
18
+ override = env['action_dispatch.original_path']
19
+ exception = env['action_dispatch.exception']
20
+
21
+ record_from_env(ua, script_name, path_info, verb, override, host, exception)
22
+ end
23
+
24
+ def record_from_env(ua, script_name, path_info, verb, override, host, exception)
25
+ path = path_from_variables(script_name, path_info, override)
26
+
27
+ return if extension?(path, IGNORED_EXTENSIONS)
28
+
29
+ if !override && exception && !exception.to_s.empty?
30
+ record_from_exception({ 'ua' => ua, 'verb' => verb, 'host' => host, 'script_name' => script_name, 'path_info' => path_info }, exception.exception)
31
+ end
32
+
33
+ record_event({ 'path' => path, 'ua' => ua, 'verb' => verb, 'host' => host })
34
+ end
35
+
36
+ def record_from_exception(payload, exception)
37
+ message = exception.to_s
38
+
39
+ if message && !message.empty?
40
+ override = message =~ /No route matches\s+\[[a-z]+\]\s+"(.*)"/i && $1
41
+ end
42
+ payload['path'] = path_from_variables(payload['script_name'], payload['path_info'], override)
43
+ return if extension?(payload['path'], IGNORED_EXTENSIONS)
44
+
45
+ record = payload.reject { |k, v| v.nil? || ['path_info', 'script_name'].include?(k) }
46
+ payload.delete('path') # remove added claim
47
+
48
+ record_event(record)
49
+ end
50
+
51
+ def path_from_variables(script_name, path_info, override)
52
+ path = script_name
53
+
54
+ if path.nil?
55
+ path = override || path_info
56
+ elsif override
57
+ path += override
58
+ elsif path_info
59
+ path += path_info
60
+ end
61
+
62
+ path
63
+ end
64
+
65
+ def extension?(path, extensions)
66
+ return false if path.nil?
67
+
68
+ candidate = File.extname(path).downcase
69
+
70
+ extensions.include?(candidate)
71
+ end
72
+ end
73
+ end
74
+ end
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'cgi'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
 
@@ -1,5 +1,5 @@
1
- # Copyright (c) 2018 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
  require 'sqreen/actions'
@@ -1,5 +1,5 @@
1
- # Copyright (c) 2018 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rule_callback'
5
5
  require 'sqreen/actions'
@@ -1,3 +1,6 @@
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
1
4
  require 'sqreen/rule_attributes'
2
5
  require 'sqreen/rule_callback'
3
6
  require 'sqreen/safe_json'
@@ -1,3 +1,6 @@
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
1
4
  require 'sqreen/rule_attributes'
2
5
  require 'sqreen/rule_callback'
3
6
  require 'sqreen/safe_json'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rules_callbacks/regexp_rule'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rules_callbacks/regexp_rule'
5
5
 
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
- # Please refer to our terms for more information: https://www.sqreen.io/terms.html
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
3
 
4
4
  require 'sqreen/rules_callbacks/regexp_rule'
5
5
 
@@ -1,8 +1,12 @@
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
1
4
  require 'securerandom'
2
5
  require 'sqreen/rule_attributes'
3
6
  require 'sqreen/binding_accessor'
4
7
  require 'sqreen/rule_callback'
5
8
  require 'sqreen/safe_json'
9
+ require 'sqreen/exception'
6
10
 
7
11
  module Sqreen
8
12
  module Rules
@@ -81,9 +85,17 @@ module Sqreen
81
85
  advise_action(:raise)
82
86
  when :good
83
87
  advise_action(nil)
84
- when :timeout, :invalid_call, :invalid_rule, :invalid_flow, :no_rule
85
- Sqreen.log.warn("error from waf: #{action}")
88
+ when :timeout
89
+ Sqreen.log.debug("WAF over time budget: #{action}")
90
+ advise_action(nil)
91
+ when :invalid_call
92
+ Sqreen.log.debug("Error from waf: #{action}")
93
+ advise_action(nil)
94
+ raise Sqreen::WAFError.new(waf_rule_name, action, data, waf_args)
95
+ when :invalid_rule, :invalid_flow, :no_rule
96
+ Sqreen.log.debug("error from waf: #{action}")
86
97
  advise_action(nil)
98
+ raise Sqreen::WAFError.new(waf_rule_name, action, data)
87
99
  else
88
100
  Sqreen.log.warn("unexpected action returned from waf")
89
101
  advise_action(nil)
@@ -98,6 +110,35 @@ module Sqreen
98
110
  Sqreen.log.debug("WAF rule #{rule_name} deleted, from #<#{name}:0x#{object_id.to_s(16).rjust(16, '0')}>")
99
111
  end
100
112
  end
113
+
114
+ def record_exception(exception, infos = {}, at = Time.now.utc)
115
+ infos.merge!(exception_to_infos(exception))
116
+ super(exception, infos, at)
117
+ end
118
+
119
+ private
120
+
121
+ def exception_to_infos(e)
122
+ {
123
+ waf_rule: e.rule_name,
124
+ error_code: ERROR_CODES[e.error],
125
+ }.tap do |r|
126
+ r[:error_data] = e.data if e.data
127
+ r[:args] = e.args if e.args
128
+ end
129
+ end
130
+
131
+ ERROR_CODES = {
132
+ internal_error: -6,
133
+ timeout: -5,
134
+ invalid_call: -4,
135
+ invalud_rule: -3,
136
+ invalid_flow: -2,
137
+ no_rule: -1,
138
+ good: 0,
139
+ monitor: 1,
140
+ block: 2,
141
+ }.freeze
101
142
  end
102
143
  end
103
144
  end