Come posso evitare i buffer overflow durante la programmazione di un'app per Android? [chiuso]

1

Sto appena iniziando con Android e ho imparato a programmare in generale su Android, ma di recente ho iniziato a provare a cercare sicurezza in Android.

Quali pratiche di codifica suggeriresti che dovrei evitare o situazioni programmatiche a cui fare attenzione, nel tentativo di evitare le vulnerabilità di overflow?

    
posta Steve DL 23.05.2015 - 01:49
fonte

3 risposte

3

Android è simile ad altri sistemi operativi, se esegui il codice in Java, non dovresti preoccuparti dei buffer overflow, ma se il tuo codice contiene codice nativo, ad es. C ++ o C, quindi si dovrebbe evitare qualsiasi vulnerabilità di overflow del buffer. Le istruzioni per evitare BOF in Linux possono essere applicate anche ad Android, quindi puoi usarle.

link

    
risposta data 23.05.2015 - 10:15
fonte
1

Java ti protegge dall'overflow del buffer se non chiami metodi nativi ( reference ).

    
risposta data 23.05.2015 - 04:07
fonte
1

Gli overflow del buffer, come detto, non sono possibili in Java. Ci sono matrici Java (byte) che più o meno mappano direttamente alla memoria, ma tutti i limiti di accesso sono corretti (gettando un IndexOutOfBoundsException se qualcuno sta leggendo oltre i limiti.Questo è un controllo di runtime ovviamente. riferimenti invece di puntatori ( NullPointerException è un po 'errato) L'aritmetica del puntatore non è supportata Ovviamente IndexOutOfBoundsException di solito non viene catturato, quindi può ancora essere usato per eseguire un attacco denial of service.

Ciò non significa che Java non sia vulnerabile ad altri errori di programmazione. Ad esempio, potresti perdere un errore relativo alla memoria se perdi risorse.

Per le buone pratiche di codifica, per favore dai un'occhiata ad es. le pratiche di codifica di Google . Questi principalmente specificano le pratiche relative alla sintassi. Per la semantica generale della programmazione Java dovresti almeno leggere Java efficace .

Troppe poche persone li usano, ma è una buona idea eseguire analisi del codice statico sul codice sorgente generato e sul codice byte. Due strumenti ben noti sono CheckStyle per il codice sorgente e FindBugs per il codice byte. Può pagare e utilizzare applicazioni speciali in grado di eseguire anche test automatici del codice. Vi è una miriade di società specializzate ad es. test statici. Molte di queste aziende eseguono tali analisi gratuitamente per applicazioni open source.

Devi avere JUnit test , almeno per qualsiasi classe di biblioteca che scrivi. Si consiglia di eseguire copertura del codice per i tuoi test di unità. Tralascio altre pratiche, come test di livello applicativo e revisione del codice, oltre a menzionare che esistono. Per poter fare tutto questo dovresti usare un sistema di controllo delle versioni ben definito e un ambiente di costruzione. Se hai più di uno sviluppatore, allora integrazione continua di solito paga.

Una delle pratiche di sicurezza più conosciute è non fidarsi dell'input della tua applicazione. Potresti voler creare un'analisi delle minacce separata per il tuo progetto di sicurezza.

    
risposta data 24.05.2015 - 12:27
fonte

Leggi altre domande sui tag