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