33 */
44
55import java
6- import semmle.code.java.frameworks.android.WebView
7- import semmle.code.java.dataflow.DataFlow
8- import semmle.code.java.dataflow.ExternalFlow
6+ private import semmle.code.java.frameworks.android.WebView
7+ private import semmle.code.java.dataflow.DataFlow
8+ private import semmle.code.java.dataflow.ExternalFlow
99
1010/**
1111 * A sink that represents a method that fetches a web resource in Android.
@@ -19,17 +19,6 @@ abstract class UrlResourceSink extends DataFlow::Node {
1919 abstract string getSinkType ( ) ;
2020}
2121
22- /** CSV sink models representing methods susceptible to Unsafe Resource Fetching attacks. */
23- private class DefaultUrlResourceSinkModel extends SinkModelCsv {
24- override predicate row ( string row ) {
25- row =
26- [
27- "android.webkit;WebView;true;loadUrl;;;Argument[0];unsafe-android-access" ,
28- "android.webkit;WebView;true;postUrl;;;Argument[0];unsafe-android-access"
29- ]
30- }
31- }
32-
3322/**
3423 * Cross-origin access enabled resource fetch.
3524 *
@@ -57,9 +46,10 @@ private class CrossOriginUrlResourceSink extends JavaScriptEnabledUrlResourceSin
5746 */
5847private class JavaScriptEnabledUrlResourceSink extends UrlResourceSink {
5948 JavaScriptEnabledUrlResourceSink ( ) {
60- sinkNode ( this , "unsafe-android-access" ) and
61- exists ( VarAccess webviewVa , MethodAccess getSettingsMa , Variable v |
62- this .asExpr ( ) .( Argument ) .getCall ( ) .getQualifier ( ) = webviewVa and
49+ exists ( MethodAccess loadUrl , VarAccess webviewVa , MethodAccess getSettingsMa , Variable v |
50+ loadUrl .getArgument ( 0 ) = this .asExpr ( ) and
51+ loadUrl .getMethod ( ) instanceof WebViewLoadUrlMethod and
52+ loadUrl .getQualifier ( ) = webviewVa and
6353 getSettingsMa .getMethod ( ) instanceof WebViewGetSettingsMethod and
6454 webviewVa .getVariable ( ) .getAnAccess ( ) = getSettingsMa .getQualifier ( ) and
6555 v .getAnAssignedValue ( ) = getSettingsMa and
0 commit comments