Skip to content

Commit dad0275

Browse files
committed
Update dataflow library in LogInjection.ql
1 parent d855b00 commit dad0275

File tree

8 files changed

+24
-109
lines changed

8 files changed

+24
-109
lines changed

javascript/frameworks/cap/lib/advanced_security/javascript/frameworks/cap/CAPLogInjectionQuery.qll

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,19 @@ class CdsLogSink extends DataFlow::Node {
4343
}
4444
}
4545

46-
class CAPLogInjectionConfiguration extends LogInjectionConfiguration {
47-
override predicate isSource(DataFlow::Node start) {
48-
super.isSource(start)
46+
module CAPLogInjectionConfiguration implements DataFlow::ConfigSig {
47+
predicate isSource(DataFlow::Node start) {
48+
LogInjectionConfig::isSource(start)
4949
or
5050
start instanceof RemoteFlowSource
5151
}
5252

53-
override predicate isBarrier(DataFlow::Node node) {
53+
predicate isBarrier(DataFlow::Node node) {
5454
exists(HandlerParameterData handlerParameterData |
5555
node = handlerParameterData and
5656
not handlerParameterData.getType() = ["cds.String", "cds.LargeString"]
5757
)
5858
}
5959

60-
override predicate isSink(DataFlow::Node end) { end instanceof CdsLogSink }
60+
predicate isSink(DataFlow::Node end) { end instanceof CdsLogSink }
6161
}

javascript/frameworks/cap/src/loginjection/LogInjection.ql

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@
1111
*/
1212

1313
import javascript
14-
import DataFlow::PathGraph
1514
import advanced_security.javascript.frameworks.cap.dataflow.DataFlow
1615
import advanced_security.javascript.frameworks.cap.CAPLogInjectionQuery
1716

18-
from CAPLogInjectionConfiguration config, DataFlow::PathNode source, DataFlow::PathNode sink
19-
where config.hasFlowPath(source, sink)
17+
module CAPLogInjectionConfigurationFlow = TaintTracking::Global<CAPLogInjectionConfiguration>;
18+
19+
import CAPLogInjectionConfigurationFlow::PathGraph
20+
21+
from
22+
CAPLogInjectionConfigurationFlow::PathNode source, CAPLogInjectionConfigurationFlow::PathNode sink
23+
where CAPLogInjectionConfigurationFlow::flowPath(source, sink)
2024
select sink.getNode(), source, sink, "Log entry depends on a $@.", source.getNode(),
2125
"user-provided value"
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
WARNING: module 'PathGraph' has been deprecated and may be removed in future (LogInjection.ql:14,8-27)
2-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,43-61)
3-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,70-88)
4-
nodes
51
edges
2+
nodes
3+
subpaths
64
#select
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
WARNING: module 'PathGraph' has been deprecated and may be removed in future (LogInjection.ql:14,8-27)
2-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,43-61)
3-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,70-88)
4-
nodes
51
edges
2+
nodes
3+
subpaths
64
#select
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
WARNING: module 'PathGraph' has been deprecated and may be removed in future (LogInjection.ql:14,8-27)
2-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,43-61)
3-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,70-88)
4-
nodes
51
edges
2+
nodes
3+
subpaths
64
#select
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,4 @@
1-
WARNING: module 'PathGraph' has been deprecated and may be removed in future (LogInjection.ql:14,8-27)
2-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,43-61)
3-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,70-88)
4-
nodes
5-
| srv/service2.js:7:15:7:31 | { messageToPass } |
6-
| srv/service2.js:7:15:7:42 | messageToPass |
7-
| srv/service2.js:7:17:7:29 | messageToPass |
8-
| srv/service2.js:7:35:7:42 | msg.data |
9-
| srv/service2.js:7:35:7:42 | msg.data |
10-
| srv/service2.js:9:32:9:44 | messageToPass |
11-
| srv/service2.js:9:32:9:44 | messageToPass |
121
edges
13-
| srv/service2.js:7:15:7:31 | { messageToPass } | srv/service2.js:7:17:7:29 | messageToPass |
14-
| srv/service2.js:7:15:7:42 | messageToPass | srv/service2.js:9:32:9:44 | messageToPass |
15-
| srv/service2.js:7:15:7:42 | messageToPass | srv/service2.js:9:32:9:44 | messageToPass |
16-
| srv/service2.js:7:17:7:29 | messageToPass | srv/service2.js:7:15:7:42 | messageToPass |
17-
| srv/service2.js:7:35:7:42 | msg.data | srv/service2.js:7:15:7:31 | { messageToPass } |
18-
| srv/service2.js:7:35:7:42 | msg.data | srv/service2.js:7:15:7:31 | { messageToPass } |
2+
nodes
3+
subpaths
194
#select
20-
| srv/service2.js:9:32:9:44 | messageToPass | srv/service2.js:7:35:7:42 | msg.data | srv/service2.js:9:32:9:44 | messageToPass | Log entry depends on a $@. | srv/service2.js:7:35:7:42 | msg.data | user-provided value |
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,4 @@
1-
WARNING: module 'PathGraph' has been deprecated and may be removed in future (LogInjection.ql:14,8-27)
2-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,43-61)
3-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,70-88)
4-
nodes
5-
| srv/service1.js:7:19:7:35 | { messageToPass } |
6-
| srv/service1.js:7:19:7:46 | messageToPass |
7-
| srv/service1.js:7:21:7:33 | messageToPass |
8-
| srv/service1.js:7:39:7:46 | req.data |
9-
| srv/service1.js:7:39:7:46 | req.data |
10-
| srv/service1.js:9:36:9:52 | { messageToPass } |
11-
| srv/service1.js:9:38:9:50 | messageToPass |
12-
| srv/service2.js:6:29:6:31 | msg |
13-
| srv/service2.js:7:15:7:31 | { messageToPass } |
14-
| srv/service2.js:7:15:7:42 | messageToPass |
15-
| srv/service2.js:7:17:7:29 | messageToPass |
16-
| srv/service2.js:7:35:7:37 | msg |
17-
| srv/service2.js:7:35:7:42 | msg.data |
18-
| srv/service2.js:9:32:9:44 | messageToPass |
19-
| srv/service2.js:9:32:9:44 | messageToPass |
201
edges
21-
| srv/service1.js:7:19:7:35 | { messageToPass } | srv/service1.js:7:21:7:33 | messageToPass |
22-
| srv/service1.js:7:19:7:46 | messageToPass | srv/service1.js:9:38:9:50 | messageToPass |
23-
| srv/service1.js:7:21:7:33 | messageToPass | srv/service1.js:7:19:7:46 | messageToPass |
24-
| srv/service1.js:7:39:7:46 | req.data | srv/service1.js:7:19:7:35 | { messageToPass } |
25-
| srv/service1.js:7:39:7:46 | req.data | srv/service1.js:7:19:7:35 | { messageToPass } |
26-
| srv/service1.js:9:36:9:52 | { messageToPass } | srv/service2.js:6:29:6:31 | msg |
27-
| srv/service1.js:9:38:9:50 | messageToPass | srv/service1.js:9:36:9:52 | { messageToPass } |
28-
| srv/service2.js:6:29:6:31 | msg | srv/service2.js:7:35:7:37 | msg |
29-
| srv/service2.js:7:15:7:31 | { messageToPass } | srv/service2.js:7:17:7:29 | messageToPass |
30-
| srv/service2.js:7:15:7:42 | messageToPass | srv/service2.js:9:32:9:44 | messageToPass |
31-
| srv/service2.js:7:15:7:42 | messageToPass | srv/service2.js:9:32:9:44 | messageToPass |
32-
| srv/service2.js:7:17:7:29 | messageToPass | srv/service2.js:7:15:7:42 | messageToPass |
33-
| srv/service2.js:7:35:7:37 | msg | srv/service2.js:7:35:7:42 | msg.data |
34-
| srv/service2.js:7:35:7:42 | msg.data | srv/service2.js:7:15:7:31 | { messageToPass } |
2+
nodes
3+
subpaths
354
#select
36-
| srv/service2.js:9:32:9:44 | messageToPass | srv/service1.js:7:39:7:46 | req.data | srv/service2.js:9:32:9:44 | messageToPass | Log entry depends on a $@. | srv/service1.js:7:39:7:46 | req.data | user-provided value |
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,4 @@
1-
WARNING: module 'PathGraph' has been deprecated and may be removed in future (LogInjection.ql:14,8-27)
2-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,43-61)
3-
WARNING: type 'PathNode' has been deprecated and may be removed in future (LogInjection.ql:18,70-88)
4-
nodes
5-
| srv/service1.js:7:19:7:35 | { messageToPass } |
6-
| srv/service1.js:7:19:7:46 | messageToPass |
7-
| srv/service1.js:7:21:7:33 | messageToPass |
8-
| srv/service1.js:7:39:7:46 | req.data |
9-
| srv/service1.js:7:39:7:46 | req.data |
10-
| srv/service1.js:9:36:9:52 | { messageToPass } |
11-
| srv/service1.js:9:38:9:50 | messageToPass |
12-
| srv/service2.js:6:29:6:31 | msg |
13-
| srv/service2.js:7:15:7:31 | { messageToPass } |
14-
| srv/service2.js:7:15:7:42 | messageToPass |
15-
| srv/service2.js:7:17:7:29 | messageToPass |
16-
| srv/service2.js:7:35:7:37 | msg |
17-
| srv/service2.js:7:35:7:42 | msg.data |
18-
| srv/service2.js:7:35:7:42 | msg.data |
19-
| srv/service2.js:9:32:9:44 | messageToPass |
20-
| srv/service2.js:9:32:9:44 | messageToPass |
211
edges
22-
| srv/service1.js:7:19:7:35 | { messageToPass } | srv/service1.js:7:21:7:33 | messageToPass |
23-
| srv/service1.js:7:19:7:46 | messageToPass | srv/service1.js:9:38:9:50 | messageToPass |
24-
| srv/service1.js:7:21:7:33 | messageToPass | srv/service1.js:7:19:7:46 | messageToPass |
25-
| srv/service1.js:7:39:7:46 | req.data | srv/service1.js:7:19:7:35 | { messageToPass } |
26-
| srv/service1.js:7:39:7:46 | req.data | srv/service1.js:7:19:7:35 | { messageToPass } |
27-
| srv/service1.js:9:36:9:52 | { messageToPass } | srv/service2.js:6:29:6:31 | msg |
28-
| srv/service1.js:9:38:9:50 | messageToPass | srv/service1.js:9:36:9:52 | { messageToPass } |
29-
| srv/service2.js:6:29:6:31 | msg | srv/service2.js:7:35:7:37 | msg |
30-
| srv/service2.js:7:15:7:31 | { messageToPass } | srv/service2.js:7:17:7:29 | messageToPass |
31-
| srv/service2.js:7:15:7:42 | messageToPass | srv/service2.js:9:32:9:44 | messageToPass |
32-
| srv/service2.js:7:15:7:42 | messageToPass | srv/service2.js:9:32:9:44 | messageToPass |
33-
| srv/service2.js:7:17:7:29 | messageToPass | srv/service2.js:7:15:7:42 | messageToPass |
34-
| srv/service2.js:7:35:7:37 | msg | srv/service2.js:7:35:7:42 | msg.data |
35-
| srv/service2.js:7:35:7:42 | msg.data | srv/service2.js:7:15:7:31 | { messageToPass } |
36-
| srv/service2.js:7:35:7:42 | msg.data | srv/service2.js:7:15:7:31 | { messageToPass } |
2+
nodes
3+
subpaths
374
#select
38-
| srv/service2.js:9:32:9:44 | messageToPass | srv/service1.js:7:39:7:46 | req.data | srv/service2.js:9:32:9:44 | messageToPass | Log entry depends on a $@. | srv/service1.js:7:39:7:46 | req.data | user-provided value |
39-
| srv/service2.js:9:32:9:44 | messageToPass | srv/service2.js:7:35:7:42 | msg.data | srv/service2.js:9:32:9:44 | messageToPass | Log entry depends on a $@. | srv/service2.js:7:35:7:42 | msg.data | user-provided value |

0 commit comments

Comments
 (0)