Quali funzioni devo collegare per verificare se l'app contiene codice dannoso o utilizzare metodi deprecati?

0

Sto lavorando a un progetto Android il cui obiettivo è identificare quali funzioni Java o native devono essere agganciate e monitorate in fase di esecuzione per verificare se l'applicazione contiene comportamenti dannosi o pratiche di programmazione deboli.

Ad esempio, l'hooking connect () consente di accedere alle informazioni sulla porta e di rilevare le connessioni che utilizzano http (80) invece di https (443), che è sicuramente una pratica di programmazione debole.

modifica: a quanto pare, il controllo del numero di porta non è sufficiente per sapere se è http o https, e sarebbe necessaria un'analisi del traffico (grazie a André Borie).

Ho identificato molti altri comportamenti potenzialmente dannosi e pratiche di programmazione deboli, e ho preparato strutture di hooking simili. Volevo chiederti quali funzioni vuoi collegare per verificare se l'app tenta di:

1) accede alla scheda SD,

2) rileva il GPS,

3) accede alla videocamera o al microfono,

4) chiama i numeri premium.

Inoltre, l'utilizzo di metodi deprecati è potenzialmente pericoloso per motivi di sicurezza. Pertanto, voglio verificare se l'app sta utilizzando qualsiasi. Quello che sto pensando è usare una lista nera di tutti i metodi deprecati noti e quindi scansionare il codice dell'app per cercare i metodi di quella lista. Saresti d'accordo con questo? (considera uno scenario in cui non vi è alcuna offuscazione del codice). Stessa cosa per le deboli API di crittografia (ad esempio MD5?): Come individuarle?

modifica: riconosco il fatto che non tutti i metodi deprecati sono deprecati per motivi di sicurezza (grazie a @CommonsWare), ma alcuni di essi lo sono. Come separeresti i metodi che sono stati deprecati per i noti problemi di sicurezza degli altri? Sarebbe bello avere un elenco completo.

    
posta noobsharp 13.11.2016 - 00:41
fonte

1 risposta

1

Capisco lo scenario attuale in cui il tuo lavoro con te vuole qualcosa di SAST ma in fase di runtime qualcosa che una famosa società di sicurezza ha fatto in questi giorni e che non rientra nella portata della risposta. Tuttavia, alcuni suggerimenti potrebbero aiutare questo caso che è ... Se i metodi deprecati che stai cercando sono basati sulle dipendenze del programma, ecco un suggerimento che utilizzerei per java.

Apri il file delle dipendenze, java normalmente è pom.xml o altro linguaggio di programmazione è in un altro file. Controlla la versione principale della dipendenza e confronta con la versione attuale di pom, ad esempio se una versione di primavera è la 5.1.4 e la dipendenza è la 5.1.2, allora puoi segnalare l'aggiornamento ritenendo che possa implicare scopi di sicurezza. A proposito, controllando Se l'accesso alla SDCard o qualsiasi cosa all'esterno dell'app può essere Fatto in AndroidManifest come nell'esempio sotto.

<application android:allowBackup="true" ... > > Needs to be false

Il secondo suggerimento è come detto fare una lista nera ma piuttosto un piccolo database che viene aggiornato di tanto in tanto con tutti i metodi deprecati che possono causare danni a causa di motivi di sicurezza. Potresti voler lavorare con algoritmo avanzato per farlo funzionare rapidamente perché di volta in volta diventerà grande. Queste sono le cose che suggerirei.

    
risposta data 09.08.2018 - 16:18
fonte

Leggi altre domande sui tag