sqreen 1.18.2-java → 1.18.3-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/LICENSE +3 -0
- data/lib/sqreen/actions.rb +11 -337
- data/lib/sqreen/actions/base.rb +110 -0
- data/lib/sqreen/actions/block_ip.rb +32 -0
- data/lib/sqreen/actions/block_user.rb +44 -0
- data/lib/sqreen/actions/ip_range_indexed_action_class.rb +36 -0
- data/lib/sqreen/actions/ip_ranges_index.rb +36 -0
- data/lib/sqreen/actions/redirect_ip.rb +40 -0
- data/lib/sqreen/actions/redirect_user.rb +45 -0
- data/lib/sqreen/actions/repository.rb +24 -0
- data/lib/sqreen/actions/unknown_action_type.rb +16 -0
- data/lib/sqreen/actions/user_action_class.rb +41 -0
- data/lib/sqreen/agent.rb +4 -1
- data/lib/sqreen/attack_blocked.rb +17 -0
- data/lib/sqreen/binding_accessor.rb +9 -102
- data/lib/sqreen/binding_accessor/path_elem.rb +8 -0
- data/lib/sqreen/binding_accessor/transforms.rb +107 -0
- data/lib/sqreen/capped_queue.rb +2 -0
- data/lib/sqreen/{callbacks.rb → cb.rb} +1 -53
- data/lib/sqreen/{callback_tree.rb → cb_tree.rb} +2 -2
- data/lib/sqreen/condition_evaluator.rb +22 -5
- data/lib/sqreen/configuration.rb +5 -0
- data/lib/sqreen/default_cb.rb +20 -0
- data/lib/sqreen/deferred_logger.rb +63 -0
- data/lib/sqreen/deliveries.rb +10 -0
- data/lib/sqreen/deliveries/batch.rb +7 -1
- data/lib/sqreen/deliveries/simple.rb +5 -0
- data/lib/sqreen/dependency/detector.rb +1 -1
- data/lib/sqreen/dependency/libsqreen.rb +28 -0
- data/lib/sqreen/dependency/rails.rb +4 -0
- data/lib/sqreen/dependency/sinatra.rb +47 -14
- data/lib/sqreen/error_handling_middleware.rb +30 -0
- data/lib/sqreen/event.rb +2 -0
- data/lib/sqreen/events/attack.rb +2 -0
- data/lib/sqreen/events/request_record.rb +11 -56
- data/lib/sqreen/exception.rb +9 -40
- data/lib/sqreen/formatter_with_tid.rb +45 -0
- data/lib/sqreen/framework_cb.rb +28 -0
- data/lib/sqreen/frameworks.rb +7 -0
- data/lib/sqreen/frameworks/generic.rb +20 -2
- data/lib/sqreen/frameworks/rails.rb +2 -0
- data/lib/sqreen/frameworks/request_recorder.rb +3 -0
- data/lib/sqreen/frameworks/sinatra.rb +2 -0
- data/lib/sqreen/frameworks/sqreen_test.rb +2 -0
- data/lib/sqreen/instrumentation.rb +5 -5
- data/lib/sqreen/invalid_signature_exception.rb +8 -0
- data/lib/{sqreen-alt.rb → sqreen/js.rb} +6 -1
- data/lib/sqreen/js/call_context.rb +10 -0
- data/lib/sqreen/js/context_pool.rb +60 -0
- data/lib/sqreen/js/exec_js_runnable.rb +20 -0
- data/lib/sqreen/js/execjs_adapter.rb +6 -47
- data/lib/sqreen/js/executable_js.rb +12 -0
- data/lib/sqreen/js/js_service.rb +2 -22
- data/lib/sqreen/js/js_service_adapter.rb +18 -0
- data/lib/sqreen/js/mini_racer_adapter.rb +6 -180
- data/lib/sqreen/js/mini_racer_executable_js.rb +142 -0
- data/lib/sqreen/js/thread_local_exec_js_runnable.rb +47 -0
- data/lib/sqreen/log.rb +8 -188
- data/lib/sqreen/logger.rb +83 -0
- data/lib/sqreen/metrics_store.rb +3 -11
- data/lib/sqreen/metrics_store/already_registered_metric.rb +11 -0
- data/lib/sqreen/metrics_store/unknown_metric.rb +11 -0
- data/lib/sqreen/metrics_store/unregistered_metric.rb +11 -0
- data/lib/sqreen/middleware.rb +0 -34
- data/lib/sqreen/mono_time.rb +2 -0
- data/lib/sqreen/node.rb +44 -0
- data/lib/sqreen/not_implemented_yet.rb +8 -0
- data/lib/sqreen/null_logger.rb +24 -0
- data/lib/sqreen/payload_creator.rb +2 -19
- data/lib/sqreen/payload_creator/header_section.rb +28 -0
- data/lib/sqreen/prefix.rb +33 -0
- data/lib/sqreen/rails_middleware.rb +14 -0
- data/lib/sqreen/remote_command.rb +1 -8
- data/lib/sqreen/remote_command/failure_output.rb +11 -0
- data/lib/sqreen/rules.rb +32 -2
- data/lib/sqreen/{rule_attributes.rb → rules/attrs.rb} +0 -0
- data/lib/sqreen/{rules_callbacks/sdk_auth_track.rb → rules/auth_track_cb.rb} +2 -2
- data/lib/sqreen/{rules_callbacks/binding_accessor_matcher.rb → rules/binding_accessor_matcher_cb.rb} +4 -8
- data/lib/sqreen/{rules_callbacks → rules}/binding_accessor_metrics.rb +1 -1
- data/lib/sqreen/{rules_callbacks/blacklist_ips.rb → rules/blacklist_ips_cb.rb} +3 -2
- data/lib/sqreen/{rules_callbacks → rules}/count_http_codes.rb +2 -2
- data/lib/sqreen/{rules_callbacks/crawler_user_agent_matches.rb → rules/crawler_user_agent_matches_cb.rb} +1 -1
- data/lib/sqreen/{rules_callbacks/crawler_user_agent_matches_metrics.rb → rules/crawler_user_agent_matches_metrics_cb.rb} +1 -1
- data/lib/sqreen/{rules_callbacks/custom_error.rb → rules/custom_error_cb.rb} +1 -1
- data/lib/sqreen/{rules_callbacks/devise_auth_track.rb → rules/devise_auth_track_cb.rb} +2 -2
- data/lib/sqreen/{rules_callbacks/devise_signup_track.rb → rules/devise_signup_track_cb.rb} +2 -2
- data/lib/sqreen/{rules_callbacks/execjs.rb → rules/execjs_cb.rb} +49 -50
- data/lib/sqreen/{rules_callbacks/headers_insert.rb → rules/headers_insert_cb.rb} +1 -1
- data/lib/sqreen/{rules_callbacks → rules}/matcher_rule.rb +2 -2
- data/lib/sqreen/{rules_callbacks/not_found.rb → rules/not_found_cb.rb} +2 -2
- data/lib/sqreen/{rules_callbacks/rails_parameters.rb → rules/rails_parameters_cb.rb} +1 -1
- data/lib/sqreen/{rules_callbacks → rules}/record_request_context.rb +1 -1
- data/lib/sqreen/{rules_callbacks/regexp_rule.rb → rules/regexp_rule_cb.rb} +1 -1
- data/lib/sqreen/{rule_callback.rb → rules/rule_cb.rb} +2 -2
- data/lib/sqreen/{rules_callbacks → rules}/run_req_start_actions.rb +4 -2
- data/lib/sqreen/{rules_callbacks → rules}/run_user_actions.rb +1 -1
- data/lib/sqreen/{rules_callbacks/shell_env.rb → rules/shell_env_cb.rb} +1 -1
- data/lib/sqreen/{rules_callbacks/sdk_signup_track.rb → rules/signup_track_cb.rb} +2 -2
- data/lib/sqreen/rules/update_request_context.rb +20 -0
- data/lib/sqreen/{rules_callbacks/url_matches.rb → rules/url_matches_cb.rb} +1 -1
- data/lib/sqreen/{rules_callbacks/user_agent_matches.rb → rules/user_agent_matches_cb.rb} +1 -1
- data/lib/sqreen/{rules_callbacks/waf.rb → rules/waf_cb.rb} +10 -14
- data/lib/sqreen/{rules_callbacks/reflected_xss.rb → rules/xss_cb.rb} +10 -7
- data/lib/sqreen/run_when_called_cb.rb +21 -0
- data/lib/sqreen/runtime_infos.rb +2 -9
- data/lib/sqreen/sensitive_data_redactor.rb +111 -0
- data/lib/sqreen/signature_verifier.rb +20 -0
- data/lib/sqreen/sinatra_middleware.rb +14 -0
- data/lib/sqreen/{rules_signature.rb → sqreen_signed_verifier.rb} +5 -17
- data/lib/sqreen/token_invalid_exception.rb +8 -0
- data/lib/sqreen/token_not_found_exception.rb +9 -0
- data/lib/sqreen/trie.rb +3 -64
- data/lib/sqreen/unauthorized.rb +8 -0
- data/lib/sqreen/util.rb +2 -0
- data/lib/sqreen/util/capped_array.rb +33 -0
- data/lib/sqreen/util/capped_hash.rb +39 -0
- data/lib/sqreen/util/capped_string.rb +24 -0
- data/lib/sqreen/util/capper.rb +65 -0
- data/lib/sqreen/version.rb +1 -1
- data/lib/sqreen/waf_error.rb +18 -0
- metadata +87 -35
- data/lib/sqreen/rules_callbacks.rb +0 -35
- data/lib/sqreen/rules_callbacks/inspect_rule.rb +0 -25
data/lib/sqreen/metrics_store.rb
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
2
|
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
3
|
|
|
4
|
-
require 'sqreen/exception'
|
|
5
4
|
require 'sqreen/metrics'
|
|
6
5
|
require 'sqreen/mono_time'
|
|
6
|
+
require 'sqreen/metrics_store/unknown_metric'
|
|
7
|
+
require 'sqreen/metrics_store/unregistered_metric'
|
|
8
|
+
require 'sqreen/metrics_store/already_registered_metric'
|
|
7
9
|
|
|
8
10
|
module Sqreen
|
|
9
11
|
# This store and register metrics
|
|
10
12
|
class MetricsStore
|
|
11
|
-
# When a metric is not yet created
|
|
12
|
-
class UnregisteredMetric < Sqreen::Exception
|
|
13
|
-
end
|
|
14
|
-
# When the metric is unknown
|
|
15
|
-
class UnknownMetric < Sqreen::Exception
|
|
16
|
-
end
|
|
17
|
-
# When this name as already been declared with another kind
|
|
18
|
-
class AlreadyRegisteredMetric < Sqreen::Exception
|
|
19
|
-
end
|
|
20
|
-
|
|
21
13
|
# definition keys
|
|
22
14
|
NAME_KEY = 'name'.freeze
|
|
23
15
|
KIND_KEY = 'kind'.freeze
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
|
+
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
|
+
|
|
4
|
+
require 'sqreen/exception'
|
|
5
|
+
|
|
6
|
+
module Sqreen
|
|
7
|
+
class MetricsStore
|
|
8
|
+
class AlreadyRegisteredMetric < Sqreen::Exception
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
|
+
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
|
+
|
|
4
|
+
require 'sqreen/exception'
|
|
5
|
+
|
|
6
|
+
module Sqreen
|
|
7
|
+
class MetricsStore
|
|
8
|
+
class UnknownMetric < Sqreen::Exception
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
|
+
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
|
+
|
|
4
|
+
require 'sqreen/exception'
|
|
5
|
+
|
|
6
|
+
module Sqreen
|
|
7
|
+
class MetricsStore
|
|
8
|
+
class UnregisteredMetric < Sqreen::Exception
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
data/lib/sqreen/middleware.rb
CHANGED
|
@@ -11,38 +11,4 @@ module Sqreen
|
|
|
11
11
|
@app.call(env)
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
|
-
|
|
15
|
-
class ErrorHandlingMiddleware
|
|
16
|
-
def initialize(app)
|
|
17
|
-
@app = app
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def call(env)
|
|
21
|
-
@app.call(env)
|
|
22
|
-
rescue => e
|
|
23
|
-
sqreen_attack = nil
|
|
24
|
-
if e.is_a?(Sqreen::AttackBlocked)
|
|
25
|
-
sqreen_attack = e
|
|
26
|
-
elsif e.respond_to?(:original_exception) &&
|
|
27
|
-
e.original_exception.is_a?(Sqreen::AttackBlocked)
|
|
28
|
-
sqreen_attack = e.original_exception
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
if sqreen_attack && sqreen_attack.redirect_url
|
|
32
|
-
return [303, { 'Location' => sqreen_attack.redirect_url }, ['']]
|
|
33
|
-
else
|
|
34
|
-
raise
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
class RailsMiddleware
|
|
40
|
-
def initialize(app)
|
|
41
|
-
@app = app
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def call(env)
|
|
45
|
-
@app.call(env)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
14
|
end
|
data/lib/sqreen/mono_time.rb
CHANGED
data/lib/sqreen/node.rb
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
|
+
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
|
+
|
|
4
|
+
# TODO: move to Sqreen::IP::Trie
|
|
5
|
+
|
|
6
|
+
module Sqreen
|
|
7
|
+
# bit starts at 0 (most significant)
|
|
8
|
+
Node = Struct.new(:bit, :prefix, :l, :r, :parent) do
|
|
9
|
+
def initialize(*args)
|
|
10
|
+
super
|
|
11
|
+
raise ArgumentError, 'no bit given' if bit.nil?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def empty?
|
|
15
|
+
prefix.nil?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# cover the whole tree
|
|
19
|
+
def walk(max_bits, empty_nodes = false)
|
|
20
|
+
xstack = Array.new(max_bits + 1)
|
|
21
|
+
sidx = 0 # stack index
|
|
22
|
+
xhead = self
|
|
23
|
+
xcur = xhead
|
|
24
|
+
until xcur.nil?
|
|
25
|
+
yield xcur unless xcur.empty? && !empty_nodes
|
|
26
|
+
|
|
27
|
+
if xcur.l
|
|
28
|
+
if xcur.r
|
|
29
|
+
xstack[sidx] = xcur.r
|
|
30
|
+
sidx += 1
|
|
31
|
+
end
|
|
32
|
+
xcur = xcur.l
|
|
33
|
+
elsif xcur.r
|
|
34
|
+
xcur = xcur.r
|
|
35
|
+
elsif sidx.nonzero?
|
|
36
|
+
sidx -= 1
|
|
37
|
+
xcur = xstack[sidx]
|
|
38
|
+
else
|
|
39
|
+
xcur = nil
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
|
+
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
|
+
|
|
4
|
+
require 'singleton'
|
|
5
|
+
|
|
6
|
+
module Sqreen
|
|
7
|
+
class NullLogger
|
|
8
|
+
include Singleton
|
|
9
|
+
|
|
10
|
+
def debug(_msg = nil); end
|
|
11
|
+
|
|
12
|
+
def info(_msg = nil); end
|
|
13
|
+
|
|
14
|
+
def warn(_msg = nil); end
|
|
15
|
+
|
|
16
|
+
def error(_msg = nil); end
|
|
17
|
+
|
|
18
|
+
def fatal(_msg = nil); end
|
|
19
|
+
|
|
20
|
+
def add(_severity, _msg = nil); end
|
|
21
|
+
|
|
22
|
+
def formatter=(_); end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
require 'sqreen/runtime_infos'
|
|
5
5
|
require 'sqreen/events/remote_exception'
|
|
6
|
+
require 'sqreen/payload_creator/header_section'
|
|
6
7
|
|
|
7
8
|
module Sqreen
|
|
8
9
|
# Create a payload from a given query
|
|
@@ -116,26 +117,8 @@ module Sqreen
|
|
|
116
117
|
Sqreen::RemoteException.record(e)
|
|
117
118
|
end
|
|
118
119
|
|
|
119
|
-
# object that default to call on framework header
|
|
120
|
-
class HeaderSection
|
|
121
|
-
def initialize(framework)
|
|
122
|
-
@framework = framework
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
def [](value)
|
|
126
|
-
if %w[rack_client_ip rails_client_ip ip_headers].include?(value)
|
|
127
|
-
return @framework.send(value)
|
|
128
|
-
end
|
|
129
|
-
@framework.header(value)
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
def ip_headers
|
|
133
|
-
@framework.ip_headers
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
|
|
137
120
|
def section_headers(framework)
|
|
138
|
-
HeaderSection.new(framework)
|
|
121
|
+
Sqreen::PayloadCreator::HeaderSection.new(framework)
|
|
139
122
|
end
|
|
140
123
|
end
|
|
141
124
|
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
|
+
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
|
+
|
|
4
|
+
require 'sqreen/runtime_infos'
|
|
5
|
+
require 'sqreen/events/remote_exception'
|
|
6
|
+
require 'sqreen/payload_creator/header_section'
|
|
7
|
+
|
|
8
|
+
module Sqreen
|
|
9
|
+
class PayloadCreator
|
|
10
|
+
# object that default to call on framework header
|
|
11
|
+
class HeaderSection
|
|
12
|
+
def initialize(framework)
|
|
13
|
+
@framework = framework
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def [](value)
|
|
17
|
+
if %w[rack_client_ip rails_client_ip ip_headers].include?(value)
|
|
18
|
+
return @framework.send(value)
|
|
19
|
+
end
|
|
20
|
+
@framework.header(value)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def ip_headers
|
|
24
|
+
@framework.ip_headers
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
|
+
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
|
+
|
|
4
|
+
require 'ipaddr'
|
|
5
|
+
|
|
6
|
+
# TODO: move to Sqreen::IP
|
|
7
|
+
|
|
8
|
+
module Sqreen
|
|
9
|
+
Prefix = Struct.new(:family, :bitlen, :address, :data) do # addr is integer
|
|
10
|
+
def initialize(*args)
|
|
11
|
+
super
|
|
12
|
+
raise ArgumentError, 'no family given' unless family
|
|
13
|
+
raise ArgumentError, 'no bitlen given' unless bitlen
|
|
14
|
+
raise ArgumentError, 'no address given' unless address
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def matches?(address, family)
|
|
18
|
+
raise 'family mismatch' unless family == self.family
|
|
19
|
+
shift_amount = (family == Socket::AF_INET ? 32 : 128) - bitlen
|
|
20
|
+
(address ^ self.address) >> shift_amount == 0
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def Prefix.from_str(str, data = nil)
|
|
25
|
+
ip_addr = IPAddr.new(str)
|
|
26
|
+
bitlen = if str =~ /\/(\d+)$/
|
|
27
|
+
$~[1].to_i
|
|
28
|
+
else
|
|
29
|
+
ip_addr.family == Socket::AF_INET6 ? 128 : 32
|
|
30
|
+
end
|
|
31
|
+
Prefix.new(ip_addr.family, bitlen, ip_addr.to_i, data)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
|
+
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
|
+
|
|
4
|
+
module Sqreen
|
|
5
|
+
class RailsMiddleware
|
|
6
|
+
def initialize(app)
|
|
7
|
+
@app = app
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call(env)
|
|
11
|
+
@app.call(env)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
require 'sqreen/log'
|
|
5
5
|
require 'sqreen/events/remote_exception'
|
|
6
|
+
require 'sqreen/remote_command/failure_output'
|
|
6
7
|
|
|
7
8
|
module Sqreen
|
|
8
9
|
# Execute and sanitize remote commands
|
|
@@ -21,14 +22,6 @@ module Sqreen
|
|
|
21
22
|
:performance_budget => :change_performance_budget,
|
|
22
23
|
}.freeze
|
|
23
24
|
|
|
24
|
-
# wraps output returned by a command that should also result in status: false
|
|
25
|
-
class FailureOutput
|
|
26
|
-
attr_reader :wrapped_output
|
|
27
|
-
def initialize(output)
|
|
28
|
-
@wrapped_output = output
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
25
|
attr_reader :uuid
|
|
33
26
|
|
|
34
27
|
def initialize(json_desc)
|
data/lib/sqreen/rules.rb
CHANGED
|
@@ -2,9 +2,39 @@
|
|
|
2
2
|
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
3
|
|
|
4
4
|
require 'sqreen/log'
|
|
5
|
-
require 'sqreen/
|
|
6
|
-
require 'sqreen/rules_callbacks'
|
|
5
|
+
require 'sqreen/rules/attrs'
|
|
7
6
|
|
|
7
|
+
require 'sqreen/rules/regexp_rule_cb'
|
|
8
|
+
require 'sqreen/rules/matcher_rule'
|
|
9
|
+
|
|
10
|
+
require 'sqreen/rules/record_request_context'
|
|
11
|
+
require 'sqreen/rules/update_request_context'
|
|
12
|
+
require 'sqreen/rules/rails_parameters_cb'
|
|
13
|
+
|
|
14
|
+
require 'sqreen/rules/headers_insert_cb'
|
|
15
|
+
require 'sqreen/rules/blacklist_ips_cb'
|
|
16
|
+
|
|
17
|
+
require 'sqreen/rules/shell_env_cb'
|
|
18
|
+
|
|
19
|
+
require 'sqreen/rules/url_matches_cb'
|
|
20
|
+
require 'sqreen/rules/user_agent_matches_cb'
|
|
21
|
+
require 'sqreen/rules/crawler_user_agent_matches_cb'
|
|
22
|
+
|
|
23
|
+
require 'sqreen/rules/xss_cb'
|
|
24
|
+
require 'sqreen/rules/execjs_cb'
|
|
25
|
+
|
|
26
|
+
require 'sqreen/rules/binding_accessor_metrics'
|
|
27
|
+
require 'sqreen/rules/binding_accessor_matcher_cb'
|
|
28
|
+
require 'sqreen/rules/count_http_codes'
|
|
29
|
+
require 'sqreen/rules/not_found_cb'
|
|
30
|
+
require 'sqreen/rules/crawler_user_agent_matches_metrics_cb'
|
|
31
|
+
require 'sqreen/rules/auth_track_cb'
|
|
32
|
+
require 'sqreen/rules/signup_track_cb'
|
|
33
|
+
require 'sqreen/rules/devise_auth_track_cb'
|
|
34
|
+
require 'sqreen/rules/devise_signup_track_cb'
|
|
35
|
+
|
|
36
|
+
require 'sqreen/rules/custom_error_cb'
|
|
37
|
+
require 'sqreen/rules/waf_cb'
|
|
8
38
|
|
|
9
39
|
## Rules
|
|
10
40
|
#
|
|
File without changes
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
2
|
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
3
|
|
|
4
|
-
require 'sqreen/
|
|
5
|
-
require 'sqreen/
|
|
4
|
+
require 'sqreen/rules/attrs'
|
|
5
|
+
require 'sqreen/rules/rule_cb'
|
|
6
6
|
require 'sqreen/safe_json'
|
|
7
7
|
|
|
8
8
|
module Sqreen
|
data/lib/sqreen/{rules_callbacks/binding_accessor_matcher.rb → rules/binding_accessor_matcher_cb.rb}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
2
|
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
3
|
|
|
4
|
-
require 'sqreen/
|
|
4
|
+
require 'sqreen/rules/rule_cb'
|
|
5
5
|
require 'sqreen/binding_accessor'
|
|
6
6
|
require 'sqreen/mono_time'
|
|
7
|
-
require 'sqreen/
|
|
7
|
+
require 'sqreen/rules/matcher_rule'
|
|
8
8
|
|
|
9
9
|
module Sqreen
|
|
10
10
|
module Rules
|
|
@@ -49,9 +49,7 @@ module Sqreen
|
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
def pre(inst, args, budget = nil, &_block)
|
|
52
|
-
unless budget.nil?
|
|
53
|
-
finish = budget + Sqreen.time
|
|
54
|
-
end
|
|
52
|
+
finish = budget + Sqreen.time unless budget.nil?
|
|
55
53
|
resol_cache = Hash.new do |hash, accessor|
|
|
56
54
|
hash[accessor] = accessor.resolve(binding, framework, inst, args)
|
|
57
55
|
end
|
|
@@ -62,9 +60,7 @@ module Sqreen
|
|
|
62
60
|
next unless val.respond_to?(:each)
|
|
63
61
|
next if val.respond_to?(:seek)
|
|
64
62
|
val.each do |v|
|
|
65
|
-
if !budget.nil? && Sqreen.time > finish
|
|
66
|
-
return nil
|
|
67
|
-
end
|
|
63
|
+
return nil if !budget.nil? && Sqreen.time > finish
|
|
68
64
|
next if !v.is_a?(String) || (!matcher.min_size.nil? && v.size < matcher.min_size)
|
|
69
65
|
next if v.size > MAX_LENGTH
|
|
70
66
|
next if matcher.match(v).nil?
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Copyright (c) 2015 Sqreen. All Rights Reserved.
|
|
2
2
|
# Please refer to our terms for more information: https://www.sqreen.com/terms.html
|
|
3
3
|
|
|
4
|
-
require 'sqreen/
|
|
4
|
+
require 'sqreen/rules/rule_cb'
|
|
5
5
|
require 'sqreen/binding_accessor'
|
|
6
6
|
require 'sqreen/events/remote_exception'
|
|
7
7
|
|