Sono il fondatore e CEO di Apriorit, una società di sviluppo software che fornisce servizi di ingegneria a livello globale alle aziende tecnologiche.

Vista posteriore del computer femminile hacker codifica alla scrivania in ufficio creativo

getty

Al giorno d’oggi, gli aggressori informatici sono armati con una gamma impressionante di armi, dal semplice malware a sofisticati strumenti di reverse engineering. Disassemblatori, decompilatori e altri strumenti consentono agli hacker di accedere e analizzare il codice sorgente dell’applicazione. Con queste informazioni, gli hacker possono abusare del tuo software in vari modi: estraendo informazioni sensibili, aggiungendo codice dannoso e persino clonando le tue applicazioni.

Un recente studio della società di sicurezza Positive Technologies ha rivelato che le popolari applicazioni di mobile banking sono suscettibili di attacchi di hacking. I problemi di sicurezza informatica più comuni identificati avevano a che fare con i nomi delle classi e dei metodi scritti esplicitamente nel codice sorgente, una mancanza di protezione contro l’iniezione di codice e una mancanza di offuscamento del codice.

L’offuscamento del codice in particolare è una pratica promettente per la protezione del software. Se stai cercando modi per proteggere il tuo software dalle intrusioni, potresti voler iniziare indurendo le sue difese attraverso l’offuscamento del codice.

Come funziona l’offuscamento del codice?

I metodi di offuscamento consentono di indurire il codice dell’applicazione trasformandolo per nascondere i valori impliciti e nascondere la logica. Queste misure rendono più difficile per una terza parte non autorizzata a guardare sotto il cofano del software.

La maggior parte delle tecniche di offuscamento trasforma uno dei seguenti aspetti del codice:

• Dati: rendere gli elementi di codice simili a qualcosa di diverso da quello che sono

• Flusso di controllo: rendere la logica eseguibile non deterministica se il software è decompilato

• Struttura del layout: formattare i dati, rinominare gli identificatori e rimuovere i commenti di codice

Gli strumenti di offuscamento funzionano con codice sorgente, codice macchina o binario e bytecode. Per determinare quale tipo di codice è meglio offuscare, è necessario tenere a mente i limiti di ogni scelta.

Quando offuscare il codice sorgente, si possono affrontare sfide nella gestione e il debug del codice offuscato. L’offuscamento binario non è solo più complicato delle altre due opzioni, ma deve essere applicato a ciascuna architettura di sistema.

Nella mia azienda, spesso scegliamo l’offuscamento del bytecode, poiché in questo caso non dobbiamo gestire il codice sorgente o il codice macchina. Tuttavia, quando arriviamo a trasformare il bytecode in codice macchina, è difficile mantenere tutte le iniezioni di codice offuscate completamente casuali.

Per uno dei nostri progetti recenti, il mio team ha utilizzato il compilatore LLVM, che ci ha aiutato a garantire un elevato livello di protezione bytecode con un impatto limitato sulle prestazioni del software. Oltre all’indurimento del codice, questo compilatore può posizionare in modo casuale verificatori di licenze software che rendono quasi impossibile per gli hacker decifrare il software.

Come puoi proteggere la tua app con l’offuscamento del codice?

Mentre l’offuscamento è una delle pratiche di codifica sicura raccomandate da OWASP, non è ancora così popolare tra molti sviluppatori. La ragione principale di questo è che quando abusato, offuscamento del codice può danneggiare le prestazioni del software.

Ma se stiamo parlando, ad esempio, di un’app di mobile banking, l’importanza di proteggere i dati del conto bancario di un utente è abbastanza alta da giustificare la spesa di tempo e sforzi aggiuntivi per l’indurimento del codice bilanciato.

Se vuoi offuscare il codice nel modo più efficace, ecco alcune cose da considerare:

• Prima di offuscare il tuo codice, dovresti decidere quali parti del tuo codice possono essere offuscate. Evita di offuscare il codice critico per le prestazioni. Inoltre, assicurati che l’offuscamento non influisca in alcun modo sulla funzionalità del software.

• Prestare attenzione alle dimensioni e alle prestazioni del codice offuscato. Quando si indurisce un grande pezzo di codice, il tempo di esecuzione può aumentare fino a 1.000 volte.

• Aggiungi predicati opachi al codice offuscato per rendere impossibile capire dove andrà l’esecuzione del codice. Rendere il grafico del flusso di controllo simile all’esecuzione di una macchina a stati piuttosto che all’esecuzione di codice lineare.

• Per creare una difesa a strati, combinare diverse tecniche di trasformazione. Più tecniche di offuscamento usi, migliore sarà la protezione del tuo codice.

• Utilizzare l’offuscamento del codice solo come ulteriore livello di sicurezza, in quanto non può sostituire altre pratiche di sicurezza.

Se implementato correttamente, l’offuscamento del codice è una soluzione efficace per proteggere il software da analisi non autorizzate. Non è un proiettile d’argento, ma complicherà in modo significativo i tentativi di sfruttare e compromettere il software.

Forbes Technology Council è una comunità solo su invito per CIO, CTO e dirigenti tecnologici di livello mondiale. Sono qualificato?

Seguimi su Twitter o LinkedIn. Controlla il mio sito web.

Caricamento …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.