Skip to content

Commit 0f03605

Browse files
committed
Java: Add reference material docs for source and sink models.
1 parent 3a1d642 commit 0f03605

File tree

1 file changed

+87
-1
lines changed

1 file changed

+87
-1
lines changed

docs/codeql/codeql-language-guides/customizing-library-models-for-java.rst

Lines changed: 87 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,4 +261,90 @@ Reference material
261261
------------------
262262

263263
The following sections provide reference material for extension points.
264-
This includes descriptions of each of the arguments (eg. access paths, types, and kinds).
264+
This includes descriptions of each of the arguments (eg. access paths, types, and kinds).
265+
266+
Extension points
267+
----------------
268+
269+
Below is a description of the tuple values for each extension point.
270+
The section Access paths describes in more detail, how access paths are composed.
271+
This is the most complicated part of the extension points and the **mini DSL** for access paths is shared accross the extension points.
272+
273+
sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance)
274+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
275+
276+
Taint source. Most taint tracking queries will use the sources added to this extensions point.
277+
278+
- **package**: Name of the package where the source resides.
279+
- **type**: Name of the type where the source resides.
280+
- **subtypes**: Whether the source should also apply to all overrides of the method.
281+
- **name**: Name of the method where the source resides.
282+
- **signature**: Type signature of the method where the source resides.
283+
- **ext**: Specifies additional API-graph-like edges (mostly empty).
284+
- **output**: Access path to the source, where the possibly tainted data flows from.
285+
- **kind**: Kind of the source.
286+
- **provenance**: Provenance (origin) of the source.
287+
288+
As most sources are used by all taint tracking queries there are only a few different source kinds.
289+
The following source kinds are supported:
290+
291+
- **remote**: A remote source is tainted data. This is the most common kind of source and sources of this kind is used for almost all taint tracking queries.
292+
- **contentprovider**: ?
293+
- **android-widget**: ?
294+
- **android-external-storage-dir**: ?
295+
296+
sinkModel(package, type, subtypes, name, signature, ext, input, kind, provenance)
297+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
298+
299+
Taint sink. As opposed to source kinds, there are many different kinds of sinks as these tend to be more query specific.
300+
301+
- **package**: Name of the package where the sink resides.
302+
- **type**: Name of the type where the sink resides.
303+
- **subtypes**: Whether the sink should also apply to all overrides of the method.
304+
- **name**: Name of the method where the sink resides.
305+
- **signature**: Type signature of the method where the sink resides.
306+
- **ext**: Specifies additional API-graph-like edges (mostly empty).
307+
- **input**: Access path to the sink, where we want to check if possibly tainted data flows too.
308+
- **kind**: Kind of the sink.
309+
- **provenance**: Provenance (origin) of the sink.
310+
311+
The following sink kinds are supported:
312+
313+
- **open-url**: ?
314+
- **jndi-injection**: ?
315+
- **ldap**: ?
316+
- **sql**: ?
317+
- **jdbc-url**: ?
318+
- **logging**: ?
319+
- **mvel**: ?
320+
- **xpath**: ?
321+
- **groovy**: ?
322+
- **xss**: ?
323+
- **ognl-injection**: ?
324+
- **intent-start**: ?
325+
- **pending-intent-sent**: ?
326+
- **url-open-stream**: ?
327+
- **url-redirect**: ?
328+
- **create-file**: ?
329+
- **read-file**: ?
330+
- **write-file**: ?
331+
- **set-hostname-verifier**: ?
332+
- **header-splitting**: ?
333+
- **information-leak**: ?
334+
- **xslt**: ?
335+
- **jexl**: ?
336+
- **bean-validation**: ?
337+
- **ssti**: ?
338+
- **fragment-injection**: ?
339+
340+
summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)
341+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
342+
343+
neutralModel(package, type, name, signature, provenance)
344+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
345+
346+
Access paths
347+
------------
348+
349+
Provenance
350+
----------

0 commit comments

Comments
 (0)