|
14 | 14 |
|
15 | 15 | import java |
16 | 16 | import semmle.code.java.dataflow.FlowSources |
17 | | -import DataFlow::PathGraph |
| 17 | +import semmle.code.java.dataflow.TaintTracking |
18 | 18 |
|
19 | 19 | class TypeShiroSubject extends RefType { |
20 | 20 | TypeShiroSubject() { this.getQualifiedName() = "org.apache.shiro.subject.Subject" } |
@@ -52,19 +52,22 @@ class WCPermissionConstruction extends ClassInstanceExpr, PermissionsConstructio |
52 | 52 | override Expr getInput() { result = this.getArgument(0) } |
53 | 53 | } |
54 | 54 |
|
55 | | -class TaintedPermissionsCheckFlowConfig extends TaintTracking::Configuration { |
56 | | - TaintedPermissionsCheckFlowConfig() { this = "TaintedPermissionsCheckFlowConfig" } |
| 55 | +private module TaintedPermissionsCheckFlowConfig implements DataFlow::ConfigSig { |
| 56 | + predicate isSource(DataFlow::Node source) { source instanceof UserInput } |
57 | 57 |
|
58 | | - override predicate isSource(DataFlow::Node source) { source instanceof UserInput } |
59 | | - |
60 | | - override predicate isSink(DataFlow::Node sink) { |
| 58 | + predicate isSink(DataFlow::Node sink) { |
61 | 59 | sink.asExpr() = any(PermissionsConstruction p).getInput() |
62 | 60 | } |
63 | 61 | } |
64 | 62 |
|
| 63 | +module TaintedPermissionsCheckFlow = TaintTracking::Make<TaintedPermissionsCheckFlowConfig>; |
| 64 | + |
| 65 | +import TaintedPermissionsCheckFlow::PathGraph |
| 66 | + |
65 | 67 | from |
66 | | - DataFlow::PathNode source, DataFlow::PathNode sink, PermissionsConstruction p, |
67 | | - TaintedPermissionsCheckFlowConfig conf |
68 | | -where sink.getNode().asExpr() = p.getInput() and conf.hasFlowPath(source, sink) |
| 68 | + TaintedPermissionsCheckFlow::PathNode source, TaintedPermissionsCheckFlow::PathNode sink, |
| 69 | + PermissionsConstruction p |
| 70 | +where |
| 71 | + sink.getNode().asExpr() = p.getInput() and TaintedPermissionsCheckFlow::hasFlowPath(source, sink) |
69 | 72 | select p, source, sink, "Permissions check depends on a $@.", source.getNode(), |
70 | 73 | "user-controlled value" |
0 commit comments