Skip to content

Commit 2b5887a

Browse files
committed
Convert Flask path-injection sanitizer to MaD
I confirmed that without this sanitizer a test fails.
1 parent 3126354 commit 2b5887a

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
extensions:
2+
- addsTo:
3+
pack: codeql/python-all
4+
extensible: barrierModel
5+
data:
6+
- ['flask', 'Member[send_from_directory].Argument[1,filename:]', 'path-injection']

python/ql/lib/semmle/python/frameworks/Flask.qll

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -631,17 +631,6 @@ module Flask {
631631
}
632632
}
633633

634-
/**
635-
* To exclude `filename` argument to `flask.send_from_directory` as a path-injection sink.
636-
*/
637-
private class FlaskSendFromDirectoryCallFilenameSanitizer extends PathInjection::Sanitizer {
638-
FlaskSendFromDirectoryCallFilenameSanitizer() {
639-
this = any(FlaskSendFromDirectoryCall c).getArg(1)
640-
or
641-
this = any(FlaskSendFromDirectoryCall c).getArgByName("filename")
642-
}
643-
}
644-
645634
/**
646635
* A call to `flask.send_file`.
647636
*

python/ql/lib/semmle/python/security/dataflow/PathInjectionCustomizations.qll

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,11 @@ module PathInjection {
9898

9999
/** DEPRECATED: Use ConstCompareAsSanitizerGuard instead. */
100100
deprecated class StringConstCompareAsSanitizerGuard = ConstCompareAsSanitizerGuard;
101+
102+
/**
103+
* A sanitizer defined via models-as-data with kind "path-injection".
104+
*/
105+
class SanitizerFromModel extends Sanitizer {
106+
SanitizerFromModel() { ModelOutput::barrierNode(this, "path-injection") }
107+
}
101108
}

0 commit comments

Comments
 (0)