You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
stmt.execute(query); // The argument passed to this method is a SQL injection sink.
49
+
stmt.execute(query); // The argument to this method is a SQL injection sink.
50
50
}
51
51
52
52
This can be achieved by adding the following data extension.
@@ -74,20 +74,20 @@ The first five values are used to identify the method (callable) which we are de
74
74
For most practical purposes the sixth value is not relevant.
75
75
The remaining values are used to define the **access path**, the **kind**, and the **provenance** (origin) of the sink.
76
76
77
-
- The seventh value **Argument[0]** is the access path to the first argument passed to the method, which means that this is the location of the sink.
78
-
- The eighth value **sql** is the kind of the sink. The sink kind is used to define for which queries the sink is in scope.
77
+
- The seventh value **Argument[0]** is the **access path** to the first argument passed to the method, which means that this is the location of the sink.
78
+
- The eighth value **sql** is the kind of the sink. The sink kind is used to define for which queries the sink is in scope. In this case SQL injection queries.
79
79
- The ninth value **manual** is the provenance of the sink, which is used to identify the origin of the sink.
80
80
81
81
Example: Taint source from the **java.net** package.
InputStream stream = socket.getInputStream(); // The return value of this method is a remote source.
90
+
InputStream stream = socket.getInputStream(); // The return value of this method is a remote source of taint.
91
91
return stream;
92
92
}
93
93
@@ -207,17 +207,22 @@ These are the same for both of the rows above.
207
207
208
208
For most practical purposes the sixth value is not relevant.
209
209
The remaining values are used to define the **access path**, the **kind**, and the **provenance** (origin) of the source.
210
+
210
211
- The seventh value is the access path to the **input** where data flows from.
211
212
- The eighth value **ReturnValue** is the access path to the **output** where data flows too.
212
213
213
214
For the first row the
215
+
214
216
- The seventh value is **Argument[-1].Element**, which is the access path to the elements of the qualifier (the elements of the stream **s** in the example).
215
217
- The eight value is **Argument[0].Paramter[0]**, which is the access path the first parameter of the **Function** argument of **map** (the lambda parameter **e** in the example).
216
218
217
219
For the second row the
220
+
218
221
- The seventh value is **Argument[0].ReturnValue**, which is the access path to the return value of the **Function** argument of **map** (the return value of the lambda in the example).
219
222
- The eighth value is **ReturnValue.Element**, which is the access path to the elements of the return value of **map** (the elements of the stream **l** in the example).
220
223
224
+
The remaining values for both rows
225
+
221
226
- The ninth value **value** is the kind of the flow. **value** means that the value is propagated.
222
227
- The tenth value **manual** is the provenance of the source, which is used to identify the origin of the summary.
223
228
@@ -283,7 +288,7 @@ Taint source. Most taint tracking queries will use the sources added to this ext
- **input**: Access path to the input of the method where data will flow to the output.
357
+
- **output**: Access path to the output of the method where data will flow from the input.
358
+
- **kind**: Kind of the flow through.
359
+
- **provenance**: Provenance (origin) of the flow through.
360
+
361
+
The following kinds are supported:
362
+
363
+
- **taint**: This means the output is not necessarily equal to the input, but it was derived from the input in an unrestrictive way. An attacker who controls the input will have significant control over the output as well.
364
+
- **value**: This means that the output equals the input or a copy of the input such that all of its properties are preserved.
0 commit comments