File tree Expand file tree Collapse file tree 2 files changed +58
-0
lines changed
java/ql/src/experimental/Security/CWE/CWE-470 Expand file tree Collapse file tree 2 files changed +58
-0
lines changed Original file line number Diff line number Diff line change
1
+ package poc .sample .classloader ;
2
+
3
+ import android .app .Application ;
4
+ import android .content .pm .PackageInfo ;
5
+ import android .content .Context ;
6
+ import android .util .Log ;
7
+
8
+ public class BadClassLoader extends Application {
9
+ @ Override
10
+ public void onCreate () {
11
+ super .onCreate ();
12
+ for (PackageInfo p : getPackageManager ().getInstalledPackages (0 )) {
13
+ try {
14
+ if (p .packageName .startsWith ("some.package." )) {
15
+ Context appContext = createPackageContext (p .packageName ,
16
+ CONTEXT_INCLUDE_CODE | CONTEXT_IGNORE_SECURITY );
17
+ ClassLoader classLoader = appContext .getClassLoader ();
18
+ Object result = classLoader .loadClass ("some.package.SomeClass" )
19
+ .getMethod ("someMethod" )
20
+ .invoke (null );
21
+ }
22
+ } catch (Exception e ) {
23
+ Log .e ("Class loading failed" , e .toString ());
24
+ }
25
+ }
26
+ }
27
+ }
Original file line number Diff line number Diff line change
1
+ package poc .sample .classloader ;
2
+
3
+ import android .app .Application ;
4
+ import android .content .pm .PackageInfo ;
5
+ import android .content .Context ;
6
+ import android .content .pm .PackageManager ;
7
+ import android .util .Log ;
8
+
9
+ public class GoodClassLoader extends Application {
10
+ @ Override
11
+ public void onCreate () {
12
+ super .onCreate ();
13
+ PackageManager pm = getPackageManager ();
14
+ for (PackageInfo p : pm .getInstalledPackages (0 )) {
15
+ try {
16
+ if (p .packageName .startsWith ("some.package." ) &&
17
+ (pm .checkSignatures (p .packageName , getApplicationContext ().getPackageName ()) == PackageManager .SIGNATURE_MATCH )
18
+ ) {
19
+ Context appContext = createPackageContext (p .packageName ,
20
+ CONTEXT_INCLUDE_CODE | CONTEXT_IGNORE_SECURITY );
21
+ ClassLoader classLoader = appContext .getClassLoader ();
22
+ Object result = classLoader .loadClass ("some.package.SomeClass" )
23
+ .getMethod ("someMethod" )
24
+ .invoke (null );
25
+ }
26
+ } catch (Exception e ) {
27
+ Log .e ("Class loading failed" , e .toString ());
28
+ }
29
+ }
30
+ }
31
+ }
You can’t perform that action at this time.
0 commit comments