Skip to content

Commit 89bd00a

Browse files
committed
Ruby: port queries to ConfigSig-style
1 parent 6df919a commit 89bd00a

File tree

4 files changed

+40
-8
lines changed

4 files changed

+40
-8
lines changed

ruby/ql/lib/codeql/ruby/security/HttpToFileAccessQuery.qll

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,23 @@ private import HttpToFileAccessCustomizations::HttpToFileAccess
1111
/**
1212
* A taint tracking configuration for writing user-controlled data to files.
1313
*/
14-
class Configuration extends TaintTracking::Configuration {
14+
module HttpToFileAccessConfig implements DataFlow::ConfigSig {
15+
predicate isSource(DataFlow::Node source) { source instanceof Source }
16+
17+
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
18+
19+
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
20+
}
21+
22+
/**
23+
* Taint tracking for writing user-controlled data to files.
24+
*/
25+
module HttpToFileAccessFlow = TaintTracking::Global<HttpToFileAccessConfig>;
26+
27+
/**
28+
* DEPRECATED. Use the `HttpToFileAccessFlow` module instead.
29+
*/
30+
deprecated class Configuration extends TaintTracking::Configuration {
1531
Configuration() { this = "HttpToFileAccess" }
1632

1733
override predicate isSource(DataFlow::Node source) { source instanceof Source }

ruby/ql/lib/codeql/ruby/security/TaintedFormatStringQuery.qll

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,23 @@ private import TaintedFormatStringCustomizations::TaintedFormatString
1313
/**
1414
* A taint-tracking configuration for format injections.
1515
*/
16-
class Configuration extends TaintTracking::Configuration {
16+
module TaintedFormatStringConfig implements DataFlow::ConfigSig {
17+
predicate isSource(DataFlow::Node source) { source instanceof Source }
18+
19+
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
20+
21+
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
22+
}
23+
24+
/**
25+
* Taint-tracking for format injections.
26+
*/
27+
module TaintedFormatStringFlow = TaintTracking::Global<TaintedFormatStringConfig>;
28+
29+
/**
30+
* DEPRECATED. Use the `TaintedFormatStringFlow` module instead.
31+
*/
32+
deprecated class Configuration extends TaintTracking::Configuration {
1733
Configuration() { this = "TaintedFormatString" }
1834

1935
override predicate isSource(DataFlow::Node source) { source instanceof Source }

ruby/ql/src/queries/security/cwe-134/TaintedFormatString.ql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
import codeql.ruby.AST
1414
import codeql.ruby.DataFlow
1515
import codeql.ruby.security.TaintedFormatStringQuery
16-
import DataFlow::PathGraph
16+
import TaintedFormatStringFlow::PathGraph
1717

18-
from Configuration cfg, DataFlow::PathNode source, DataFlow::PathNode sink
19-
where cfg.hasFlowPath(source, sink)
18+
from TaintedFormatStringFlow::PathNode source, TaintedFormatStringFlow::PathNode sink
19+
where TaintedFormatStringFlow::flowPath(source, sink)
2020
select sink.getNode(), source, sink, "Format string depends on a $@.", source.getNode(),
2121
"user-provided value"

ruby/ql/src/queries/security/cwe-912/HttpToFileAccess.ql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313

1414
import codeql.ruby.AST
1515
import codeql.ruby.DataFlow
16-
import codeql.ruby.DataFlow::DataFlow::PathGraph
1716
import codeql.ruby.security.HttpToFileAccessQuery
17+
import HttpToFileAccessFlow::PathGraph
1818

19-
from Configuration cfg, DataFlow::PathNode source, DataFlow::PathNode sink
20-
where cfg.hasFlowPath(source, sink)
19+
from HttpToFileAccessFlow::PathNode source, HttpToFileAccessFlow::PathNode sink
20+
where HttpToFileAccessFlow::flowPath(source, sink)
2121
select sink.getNode(), source, sink, "Write to file system depends on $@.", source.getNode(),
2222
"untrusted data"

0 commit comments

Comments
 (0)