Proving di azzeramento

3

C'è un modo per dimostrare che un programma non lascia le chiavi in memoria dopo che esiste?

Alcuni programmi sono progettati per azzerare i campi sensibili dopo che sono stati utilizzati. Se conoscessi i valori di questi campi, potresti cercarli in memoria dopo che il programma esiste, se potessi evitare di causare un errore di segmentazione.

Un approccio che ho immaginato è l'hacking del sistema operativo in modo da controllare la stessa memoria utilizzata dal programma. Quindi cerca nella memoria i valori del campo. Supponendo che i campi fossero abbastanza lunghi i falsi positivi sarebbero stati come colpire la lotteria.

Se stai reinventando la ruota per favore dimmi come si chiama questa ruota o se lo sto rendendo complicato.

Certo, non puoi provare che non lascerà mai le chiavi ma potresti dimostrarlo non durante una particolare esecuzione. Solo cercando un test ragionevole gli sviluppatori possono usare per controllare.

    
posta candied_orange 17.11.2016 - 03:06
fonte

2 risposte

1

In un ambiente di sviluppo, dovresti solo collegare un debugger, interromperlo prima di uscire e cercare nella memoria.

Non riesco a immaginare una buona ragione per farlo in produzione, quindi è probabilmente sufficiente.

    
risposta data 17.11.2016 - 04:47
fonte
1

Qualsiasi processo che controlli, puoi scaricare la memoria, quindi cercare le stringhe.

In * nix

C'è una bella domanda su ServerFault Scarica la memoria di un processo linux su file che menziona un certo numero di strumenti che puoi usare, ad esempio, ecco come farlo usando gdb :

$ gdb --pid [pid]
(gdb) dump memory /root/output 0x00621000 0x00622000

Puoi quindi cercare il file di dettagli utilizzando lo strumento strings .

In Windows

È possibile eseguire un dump della memoria di qualsiasi programma dal Task Manager. Sembra che ci siano diversi modi per analizzare un file di dettagli; una ricerca rapida su google mi ha trovato Windows Debugger (WinDbg): [1] , [2] . Sembra anche che tu possa aprire un file di dump in Visual Studio [3] .

Attenzione: le chiavi a volte sono offuscate nella memoria

Tieni presente che potresti non essere in grado di trovare le chiavi nel file di dump con un semplice ctrl + f perché l'applicazione intelligente le offenderà tramite XOR con una maschera di bit memorizzata da qualche altra parte nella memoria del processo, o trucchi simili. Per dimostrare davvero che un programma non lascia le chiavi in memoria, è necessario conoscere bene quel programma.

    
risposta data 17.11.2016 - 16:01
fonte

Leggi altre domande sui tag