Skip to content

Commit 9ebe59d

Browse files
committed
Python: Move UnsafeDeserialization configuration to own file
1 parent d38c48d commit 9ebe59d

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

python/ql/src/Security/CWE-502/UnsafeDeserialization.ql

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,9 @@
1212
*/
1313

1414
import python
15-
import semmle.python.dataflow.new.DataFlow
16-
import semmle.python.dataflow.new.TaintTracking
17-
import semmle.python.Concepts
18-
import semmle.python.dataflow.new.RemoteFlowSources
15+
import semmle.python.security.dataflow.UnsafeDeserialization
1916
import DataFlow::PathGraph
2017

21-
class UnsafeDeserializationConfiguration extends TaintTracking::Configuration {
22-
UnsafeDeserializationConfiguration() { this = "UnsafeDeserializationConfiguration" }
23-
24-
override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
25-
26-
override predicate isSink(DataFlow::Node sink) {
27-
exists(Decoding d |
28-
d.mayExecuteInput() and
29-
sink = d.getAnInput()
30-
)
31-
}
32-
}
33-
3418
from UnsafeDeserializationConfiguration config, DataFlow::PathNode source, DataFlow::PathNode sink
3519
where config.hasFlowPath(source, sink)
3620
select sink.getNode(), source, sink, "Deserializing of $@.", source.getNode(), "untrusted input"
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* Provides a taint-tracking configuration for reasoning about arbitrary code execution
3+
* vulnerabilities due to deserializing user-controlled data.
4+
*/
5+
6+
import python
7+
import semmle.python.dataflow.new.DataFlow
8+
import semmle.python.dataflow.new.TaintTracking
9+
import semmle.python.Concepts
10+
import semmle.python.dataflow.new.RemoteFlowSources
11+
12+
/**
13+
* A taint-tracking configuration for reasoning about arbitrary code execution
14+
* vulnerabilities due to deserializing user-controlled data.
15+
*/
16+
class UnsafeDeserializationConfiguration extends TaintTracking::Configuration {
17+
UnsafeDeserializationConfiguration() { this = "UnsafeDeserializationConfiguration" }
18+
19+
override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
20+
21+
override predicate isSink(DataFlow::Node sink) {
22+
exists(Decoding d |
23+
d.mayExecuteInput() and
24+
sink = d.getAnInput()
25+
)
26+
}
27+
}

0 commit comments

Comments
 (0)