Merge pull request #9002 from atorralba/atorralba/https-urls-improvs

Java: Add OkHttp and Retrofit models
This commit is contained in:
Tony Torralba
2022-05-11 10:48:08 +02:00
committed by GitHub
117 changed files with 6173 additions and 11 deletions

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Added models for the libraries OkHttp and Retrofit.

View File

@@ -102,8 +102,10 @@ private module Frameworks {
private import semmle.code.java.frameworks.JsonJava
private import semmle.code.java.frameworks.Logging
private import semmle.code.java.frameworks.Objects
private import semmle.code.java.frameworks.OkHttp
private import semmle.code.java.frameworks.Optional
private import semmle.code.java.frameworks.Regex
private import semmle.code.java.frameworks.Retrofit
private import semmle.code.java.frameworks.Stream
private import semmle.code.java.frameworks.Strings
private import semmle.code.java.frameworks.ratpack.Ratpack

View File

@@ -0,0 +1,71 @@
/**
* Provides classes and predicates for working with the OkHttp client.
*/
import java
private import semmle.code.java.dataflow.ExternalFlow
private class OkHttpOpenUrlSinks extends SinkModelCsv {
override predicate row(string row) {
row =
[
"okhttp3;Request;true;Request;;;Argument[0];open-url",
"okhttp3;Request$Builder;true;url;;;Argument[0];open-url"
]
}
}
private class OKHttpSummaries extends SummaryModelCsv {
override predicate row(string row) {
row =
[
"okhttp3;HttpUrl;false;parse;;;Argument[0];ReturnValue;taint",
"okhttp3;HttpUrl;false;uri;;;Argument[-1];ReturnValue;taint",
"okhttp3;HttpUrl;false;url;;;Argument[-1];ReturnValue;taint",
"okhttp3;HttpUrl$Builder;false;addEncodedPathSegment;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;addEncodedPathSegment;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;addEncodedPathSegments;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;addEncodedPathSegments;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;addEncodedQueryParameter;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;addEncodedQueryParameter;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;addPathSegment;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;addPathSegment;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;addPathSegments;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;addPathSegments;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;addQueryParameter;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;addQueryParameter;;;Argument[0..1];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;build;;;Argument[-1];ReturnValue;taint",
"okhttp3;HttpUrl$Builder;false;encodedFragment;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;encodedFragment;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;encodedPassword;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;encodedPath;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;encodedPath;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;encodedQuery;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;encodedQuery;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;encodedUsername;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;fragment;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;fragment;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;host;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;host;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;password;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;port;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;port;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;query;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;query;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;removeAllEncodedQueryParameters;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;removeAllQueryParameters;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;removePathSegment;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;scheme;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;scheme;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;setEncodedPathSegment;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;setEncodedPathSegment;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;setEncodedQueryParameter;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;setEncodedQueryParameter;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;setPathSegment;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;setPathSegment;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;setQueryParameter;;;Argument[-1];ReturnValue;value",
"okhttp3;HttpUrl$Builder;false;setQueryParameter;;;Argument[0];Argument[-1];taint",
"okhttp3;HttpUrl$Builder;false;username;;;Argument[-1];ReturnValue;value",
]
}
}

View File

@@ -0,0 +1,12 @@
/**
* Provides classes and predicates for working with the Retrofit API client.
*/
import java
private import semmle.code.java.dataflow.ExternalFlow
private class RetrofitOpenUrlSinks extends SinkModelCsv {
override predicate row(string row) {
row = "retrofit2;Retrofit$Builder;true;baseUrl;;;Argument[0];open-url"
}
}