|
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