È possibile accedere alla memoria di un altro programma con malloc? [duplicare]

4

So che questo dipende molto dal sistema, ma diciamo che abbiamo un programma, chiamalo Programma A. Contiene dati sensibili a cui un hacker vuole entrare. Si potrebbe semplicemente chiudere il programma A ed eseguire il programma B che alloca molta memoria ( malloc ). Dato che malloc di solito non cancella la memoria allocata, potresti potenzialmente avere accesso alla memoria del Programma A.

Ovviamente ciò richiederebbe molte ispezioni di dump esadecimali e reverse engineering, ma è possibile? Ci sono alcune misure che un progettista del programma può adottare quando si progetta un'applicazione per garantire che ciò non possa accadere?

    
posta Chris Smith 07.08.2016 - 05:29
fonte

2 risposte

2

Affinché quell'hack sia ragionevolmente possibile, l'hacker dovrebbe avere già pieno accesso al programma con informazioni sensibili e il tuo sistema, il che significa che avranno anche accesso diretto ai dati utilizzati dal programma sensibile. Significa anche che nessun'altra memoria è allocata o liberata tra le due istanze altrimenti sarebbe altrimenti impossibile pianificare come accedere ai segmenti di memoria appropriati.

La soluzione per proteggersi è quindi proteggere il tuo sistema ad ogni singolo livello. Ciò significa installare solo software affidabile, avere una buona protezione antivirus (se appropriata), un buon firewall, amministratori affidabili e limitare l'accesso al sistema il più ragionevolmente possibile.

Se si desidera impedire a un altro programma di riallocare gli stessi segmenti in modo prevedibile, è possibile utilizzare la casualità nelle allocazioni di memoria, ma ciò aumenterebbe seriamente il rischio di implementare bug software che sarebbe più difficile da risolvere, pur non facendo una differenza pratica a causa dei punti precedentemente citati.

    
risposta data 07.08.2016 - 07:11
fonte
0

Ricorda che malloc utilizza le funzioni di allocazione della memoria del sistema operativo per ottenere grandi blocchi di memoria (ad es. VirtualAlloc, sbrk, mmap) e distribuisce blocchi più piccoli ai chiamanti di malloc. Le funzioni del sistema operativo che forniscono memoria a un processo azzerano la memoria prima di consentire l'accesso al processo, quindi, salvo un errore nel sistema operativo, questo non è un problema.

    
risposta data 07.08.2016 - 18:30
fonte

Leggi altre domande sui tag