Skip to content

Commit 7780fe9

Browse files
authored
Merge pull request #14435 from asgerf/ruby/port-synced-queries
JS/Ruby: desync two queries and port the Ruby version to ConfigSig-style
2 parents 7a98afe + 89bd00a commit 7780fe9

File tree

5 files changed

+40
-24
lines changed

5 files changed

+40
-24
lines changed

config/identical-files.json

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -498,22 +498,6 @@
498498
"ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll",
499499
"python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll"
500500
],
501-
"TaintedFormatStringQuery Ruby/JS": [
502-
"javascript/ql/lib/semmle/javascript/security/dataflow/TaintedFormatStringQuery.qll",
503-
"ruby/ql/lib/codeql/ruby/security/TaintedFormatStringQuery.qll"
504-
],
505-
"TaintedFormatStringCustomizations Ruby/JS": [
506-
"javascript/ql/lib/semmle/javascript/security/dataflow/TaintedFormatStringCustomizations.qll",
507-
"ruby/ql/lib/codeql/ruby/security/TaintedFormatStringCustomizations.qll"
508-
],
509-
"HttpToFileAccessQuery JS/Ruby": [
510-
"javascript/ql/lib/semmle/javascript/security/dataflow/HttpToFileAccessQuery.qll",
511-
"ruby/ql/lib/codeql/ruby/security/HttpToFileAccessQuery.qll"
512-
],
513-
"HttpToFileAccessCustomizations JS/Ruby": [
514-
"javascript/ql/lib/semmle/javascript/security/dataflow/HttpToFileAccessCustomizations.qll",
515-
"ruby/ql/lib/codeql/ruby/security/HttpToFileAccessCustomizations.qll"
516-
],
517501
"Typo database": [
518502
"javascript/ql/src/Expressions/TypoDatabase.qll",
519503
"ql/ql/src/codeql_ql/style/TypoDatabase.qll"

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)