Skip to content

Commit 2c06394

Browse files
committed
Python: Move experimental CookieInjection to new dataflow API
1 parent 2c41270 commit 2c06394

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

python/ql/src/experimental/Security/CWE-614/CookieInjection.ql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ import semmle.python.dataflow.new.DataFlow
1515
import experimental.semmle.python.Concepts
1616
import experimental.semmle.python.CookieHeader
1717
import experimental.semmle.python.security.injection.CookieInjection
18-
import DataFlow::PathGraph
18+
import CookieInjectionFlow::PathGraph
1919

2020
from
21-
CookieInjectionFlowConfig config, DataFlow::PathNode source, DataFlow::PathNode sink,
21+
CookieInjectionFlow::PathNode source, CookieInjectionFlow::PathNode sink,
2222
string insecure
2323
where
24-
config.hasFlowPath(source, sink) and
24+
CookieInjectionFlow::flowPath(source, sink) and
2525
if exists(sink.getNode().(CookieSink))
2626
then insecure = ",and its " + sink.getNode().(CookieSink).getFlag() + " flag is not properly set."
2727
else insecure = "."

python/ql/src/experimental/semmle/python/security/injection/CookieInjection.qll

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@ class CookieSink extends DataFlow::Node {
2929
/**
3030
* A taint-tracking configuration for detecting Cookie injections.
3131
*/
32-
class CookieInjectionFlowConfig extends TaintTracking::Configuration {
33-
CookieInjectionFlowConfig() { this = "CookieInjectionFlowConfig" }
32+
private module CookieInjectionConfig implements DataFlow::ConfigSig {
33+
predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
3434

35-
override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
36-
37-
override predicate isSink(DataFlow::Node sink) {
35+
predicate isSink(DataFlow::Node sink) {
3836
exists(Cookie c | sink in [c.getNameArg(), c.getValueArg()])
3937
}
4038
}
39+
40+
/** Global taint-tracking for detecting "Cookie injections" vulnerabilities. */
41+
module CookieInjectionFlow = TaintTracking::Global<CookieInjectionConfig>;

0 commit comments

Comments
 (0)