Skip to content

Commit 4d1684e

Browse files
committed
Ruby: configsig rb/overly-permissive-file
1 parent b6d12f8 commit 4d1684e

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

ruby/ql/src/queries/security/cwe-732/WeakFilePermissions.ql

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import codeql.ruby.AST
1414
import codeql.ruby.Concepts
1515
import codeql.ruby.DataFlow
16-
import DataFlow::PathGraph
1716
import codeql.ruby.ApiGraphs
1817

1918
bindingset[p]
@@ -47,22 +46,25 @@ class PermissivePermissionsExpr extends Expr {
4746
}
4847
}
4948

50-
class PermissivePermissionsConfig extends DataFlow::Configuration {
51-
PermissivePermissionsConfig() { this = "PermissivePermissionsConfig" }
52-
53-
override predicate isSource(DataFlow::Node source) {
49+
private module PermissivePermissionsConfig implements DataFlow::ConfigSig {
50+
predicate isSource(DataFlow::Node source) {
5451
source.asExpr().getExpr() instanceof PermissivePermissionsExpr
5552
}
5653

57-
override predicate isSink(DataFlow::Node sink) {
54+
predicate isSink(DataFlow::Node sink) {
5855
exists(FileSystemPermissionModification mod | mod.getAPermissionNode() = sink)
5956
}
6057
}
6158

59+
private module PermissivePermissionsFlow = DataFlow::Global<PermissivePermissionsConfig>;
60+
61+
private import PermissivePermissionsFlow::PathGraph
62+
6263
from
63-
DataFlow::PathNode source, DataFlow::PathNode sink, PermissivePermissionsConfig conf,
64+
PermissivePermissionsFlow::PathNode source, PermissivePermissionsFlow::PathNode sink,
6465
FileSystemPermissionModification mod
65-
where conf.hasFlowPath(source, sink) and mod.getAPermissionNode() = sink.getNode()
66+
where
67+
PermissivePermissionsFlow::flowPath(source, sink) and mod.getAPermissionNode() = sink.getNode()
6668
select source.getNode(), source, sink,
6769
"This overly permissive mask used in $@ allows read or write access to others.", mod,
6870
mod.toString()

0 commit comments

Comments
 (0)