Come leggere in modo sicuro un indirizzo di memoria fisica in Linux?

6

Sto cercando di leggere un indirizzo di memoria fisica in un dispositivo che esegue Linux incorporato con la nostra applicazione. Il metodo ampiamente consigliato è quello di utilizzare mmap , convertirlo in indirizzo virtuale e quindi leggere il valore.

Ora vorrei sapere se un attacco uomo midde è possibile sostituendo il libreria standard di mmap con una libreria spastica di mmap? Cioè, un hacker può impedirmi di leggere il valore previsto dall'hardware sottostante? C'è un modo sicuro per leggere l'indirizzo fisico?

In altre parole, sto cercando di leggere un indirizzo fisico e mi piacerebbe sapere che il valore che ho letto proviene dall'hardware reale e non da un valore falsificato.

    
posta Vasu 06.11.2015 - 13:27
fonte

3 risposte

19

Non ti preoccupare. Se un utente malintenzionato può sostituire le librerie di sistema utilizzate dalla tua applicazione, allora sei stato totalmente compromesso e non puoi fidarti di nulla nella tua app. Non è una situazione che puoi davvero proteggere.

    
risposta data 06.11.2015 - 15:53
fonte
7

La mia comprensione della tua domanda è che controlli l'applicazione che accederà al dispositivo ma non al sistema operativo del dispositivo stesso.

In tal caso non avrai la capacità di garantire che ciò che viene letto dall'hardware sia corretto, eccetto se tale informazione è firmato dall'hardware e puoi controllare la firma altrove (non sul dispositivo stesso).

mmap è solo una routine di una biblioteca e sì, potrebbe essere sostituita e fornire tutti i tipi di funzioni oltre quelli forniti da mmap , inclusi quelli dannosi.

Se ti fidi del venditore del tuo dispositivo, potresti avere la possibilità di controllare se il software incorporato è autentico (attraverso una sorta di checksum, se tale capacità è fornita dal venditore)

    
risposta data 06.11.2015 - 14:04
fonte
3

Se si desidera un accesso sicuro all'hardware, l'unico modo per farlo è un'applicazione per lo spazio del kernel (generalmente nota come driver) che è il modo "giusto" di farlo comunque.

    
risposta data 06.11.2015 - 17:53
fonte

Leggi altre domande sui tag