File tree 4 files changed +59
-0
lines changed
lib/datadog/appsec/contrib/active_record
spec/datadog/appsec/contrib/active_record
4 files changed +59
-0
lines changed Original file line number Diff line number Diff line change @@ -9,6 +9,8 @@ module Instrumentation
9
9
module_function
10
10
11
11
def detect_sql_injection ( sql , adapter_name )
12
+ return unless AppSec . rasp_enabled?
13
+
12
14
context = AppSec . active_context
13
15
return unless context
14
16
Original file line number Diff line number Diff line change 16
16
let ( :ruleset ) { Datadog ::AppSec ::Processor ::RuleLoader . load_rules ( ruleset : :recommended , telemetry : telemetry ) }
17
17
let ( :processor ) { Datadog ::AppSec ::Processor . new ( ruleset : ruleset , telemetry : telemetry ) }
18
18
let ( :context ) { Datadog ::AppSec ::Context . new ( trace , span , processor ) }
19
+ let ( :rasp_enabled ) { true }
19
20
20
21
let ( :span ) { Datadog ::Tracing ::SpanOperation . new ( 'root' ) }
21
22
let ( :trace ) { Datadog ::Tracing ::TraceOperation . new }
54
55
55
56
Datadog ::AppSec ::Context . activate ( context )
56
57
58
+ allow ( Datadog ::AppSec ) . to receive ( :rasp_enabled? ) . and_return ( rasp_enabled )
59
+
57
60
raise_on_rails_deprecation!
58
61
end
59
62
64
67
processor . finalize
65
68
end
66
69
70
+ context 'when RASP is disabled' do
71
+ let ( :rasp_enabled ) { false }
72
+
73
+ it 'does not call waf when querying using .where' do
74
+ expect ( Datadog ::AppSec . active_context ) . not_to receive ( :run_rasp )
75
+
76
+ User . where ( name : 'Bob' ) . to_a
77
+ end
78
+
79
+ it 'does not call waf when querying using .find_by_sql' do
80
+ expect ( Datadog ::AppSec . active_context ) . not_to receive ( :run_rasp )
81
+
82
+ User . find_by_sql ( "SELECT * FROM users WHERE name = 'Bob'" ) . to_a
83
+ end
84
+ end
85
+
67
86
it 'calls waf with correct arguments when querying using .where' do
68
87
expect ( Datadog ::AppSec . active_context ) . to (
69
88
receive ( :run_rasp ) . with (
Original file line number Diff line number Diff line change 16
16
let ( :ruleset ) { Datadog ::AppSec ::Processor ::RuleLoader . load_rules ( ruleset : :recommended , telemetry : telemetry ) }
17
17
let ( :processor ) { Datadog ::AppSec ::Processor . new ( ruleset : ruleset , telemetry : telemetry ) }
18
18
let ( :context ) { Datadog ::AppSec ::Context . new ( trace , span , processor ) }
19
+ let ( :rasp_enabled ) { true }
19
20
20
21
let ( :span ) { Datadog ::Tracing ::SpanOperation . new ( 'root' ) }
21
22
let ( :trace ) { Datadog ::Tracing ::TraceOperation . new }
55
56
56
57
Datadog ::AppSec ::Context . activate ( context )
57
58
59
+ allow ( Datadog ::AppSec ) . to receive ( :rasp_enabled? ) . and_return ( rasp_enabled )
60
+
58
61
raise_on_rails_deprecation!
59
62
end
60
63
65
68
processor . finalize
66
69
end
67
70
71
+ context 'when RASP is disabled' do
72
+ let ( :rasp_enabled ) { false }
73
+
74
+ it 'does not call waf when querying using .where' do
75
+ expect ( Datadog ::AppSec . active_context ) . not_to receive ( :run_rasp )
76
+
77
+ User . where ( name : 'Bob' ) . to_a
78
+ end
79
+
80
+ it 'does not call waf when querying using .find_by_sql' do
81
+ expect ( Datadog ::AppSec . active_context ) . not_to receive ( :run_rasp )
82
+
83
+ User . find_by_sql ( "SELECT * FROM users WHERE name = 'Bob'" ) . to_a
84
+ end
85
+ end
86
+
68
87
it 'calls waf with correct arguments when querying using .where' do
69
88
expected_db_statement = if PlatformHelpers . jruby?
70
89
'SELECT "users".* FROM "users" WHERE "users"."name" = ?'
Original file line number Diff line number Diff line change 16
16
let ( :ruleset ) { Datadog ::AppSec ::Processor ::RuleLoader . load_rules ( ruleset : :recommended , telemetry : telemetry ) }
17
17
let ( :processor ) { Datadog ::AppSec ::Processor . new ( ruleset : ruleset , telemetry : telemetry ) }
18
18
let ( :context ) { Datadog ::AppSec ::Context . new ( trace , span , processor ) }
19
+ let ( :rasp_enabled ) { true }
19
20
20
21
let ( :span ) { Datadog ::Tracing ::SpanOperation . new ( 'root' ) }
21
22
let ( :trace ) { Datadog ::Tracing ::TraceOperation . new }
48
49
49
50
Datadog ::AppSec ::Context . activate ( context )
50
51
52
+ allow ( Datadog ::AppSec ) . to receive ( :rasp_enabled? ) . and_return ( rasp_enabled )
53
+
51
54
raise_on_rails_deprecation!
52
55
end
53
56
58
61
processor . finalize
59
62
end
60
63
64
+ context 'when RASP is disabled' do
65
+ let ( :rasp_enabled ) { false }
66
+
67
+ it 'does not call waf when querying using .where' do
68
+ expect ( Datadog ::AppSec . active_context ) . not_to receive ( :run_rasp )
69
+
70
+ User . where ( name : 'Bob' ) . to_a
71
+ end
72
+
73
+ it 'does not call waf when querying using .find_by_sql' do
74
+ expect ( Datadog ::AppSec . active_context ) . not_to receive ( :run_rasp )
75
+
76
+ User . find_by_sql ( "SELECT * FROM users WHERE name = 'Bob'" ) . to_a
77
+ end
78
+ end
79
+
61
80
it 'calls waf with correct arguments when querying using .where' do
62
81
expect ( Datadog ::AppSec . active_context ) . to (
63
82
receive ( :run_rasp ) . with (
You can’t perform that action at this time.
0 commit comments