Skip to content

Commit 265922d

Browse files
committed
Adding docs.
1 parent 7db9779 commit 265922d

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* Provides classes for SSRF sinks modeled using Models as Data (MaD).
3+
*/
4+
5+
private import python
6+
private import semmle.python.Concepts
7+
private import semmle.python.ApiGraphs
8+
private import semmle.python.frameworks.data.ModelsAsData
9+
10+
/**
11+
* INTERNAL: Do not use.
12+
*
13+
* Sets up SSRF sinks as Http::Client::Request
14+
*/
15+
module SSRFMaDModel {
16+
/**
17+
* An HTTP request modeled from `ssrf` sinks, modeled using MaD.
18+
*/
19+
class SSRFSink extends Http::Client::Request::Range instanceof API::CallNode {
20+
DataFlow::Node urlArg;
21+
22+
SSRFSink() {
23+
(
24+
this.getArg(_) = urlArg
25+
or
26+
this.getArgByName(_) = urlArg
27+
) and
28+
urlArg = ModelOutput::getASinkNode("ssrf").asSink()
29+
}
30+
31+
override DataFlow::Node getAUrlPart() { result = urlArg }
32+
33+
override string getFramework() { result = "MaD" }
34+
35+
override predicate disablesCertificateValidation(
36+
DataFlow::Node disablingNode, DataFlow::Node argumentOrigin
37+
) {
38+
// NOTE: if you need to define this, you have to special case it for every possible API in MaD
39+
none()
40+
}
41+
}
42+
}

0 commit comments

Comments
 (0)