I dati possono essere rubati dalla RAM in uso

4

I limiti delle mie conoscenze sull'argomento (su qualsiasi argomento) possono rendere questa una domanda stupida. Senza riguardo; Un programma dannoso potrebbe teoricamente sottrarre dati dalla memoria primaria (RAM)?

Scenario :

  • Attualmente memorizzo i dati delle password su una USB pesantemente crittografata, con livelli di crittografia attualmente poco pratici da interrompere. Nel caso in cui questa USB venga rubata, so esattamente quali account sono in grado di cambiare rapidamente le password, nonostante la sicurezza pratica della crittografia.
  • Anche se il file passwords.txt è solo "archiviato" nella memoria secondaria permanente sull'USB, apparirà brevemente nella RAM del computer che uso per montare l'USB, decodificare i dati e aprire il file. È qui che sospetto una mia debolezza.
  • Per chiarire: è ovviamente più realistico che questo "programma malevolo" legga semplicemente il file una volta che l'USB viene montato e il suo contenuto decrittografato, tuttavia sto chiedendo specificamente di compromettere questi dati attraverso la RAM.

In breve:

  • Quanto è realistica la minaccia di un programma che ruba dati dalla RAM, in teoria o in altro modo?

  • (domanda a parte): a parte l'ovvia soluzione anti-virus per mitigare un programma dannoso, in che modo la RAM può essere protetta?

posta user4493605 17.11.2017 - 16:01
fonte

2 risposte

4

How realistic is the threat of a program stealing data from RAM, theoretical or otherwise?

È facile. Con le giuste autorizzazioni ci sono diversi modi per farlo. Dal prendere un dump della memoria del programma alla lettura / scrittura direttamente. A meno che tu non abbia esplicitamente controllato le autorizzazioni di tutto il codice in esecuzione sul tuo computer, dovresti assumere che qualsiasi codice che gira come admin / root o come l'utente che esegue chi possiede il processo che ti preoccupa possa farlo. In Windows, ad esempio, ReadProcessMemory e < a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms681674(v=vs.85).aspx"> WriteProcessMemory .

Aside from the obvious Anti-Virus solution to mitigate a malicious program, how may RAM be protected?

  • Non eseguire codici di cui non ti fidi.
  • Esegui il codice come utente separato in base al quale nessun utente diverso dall'amministratore dispone dei diritti di accesso.
  • Utilizza metodi come randomizzazione del layout di spazio degli indirizzi e crittografia della memoria per identificare dove i dati sono più difficili (anche se con memoria piena l'accesso può ancora essere fatto - dopotutto il tuo programma deve sapere dov'è)
risposta data 17.11.2017 - 16:12
fonte
1

Regardless; Could a malicious program theoretically steal data from primary memory (RAM)?

Con permessi sufficienti, assolutamente. Il modo in cui i computer moderni gestiscono la memoria è un po 'complesso, ma il succo è facile da capire. Un computer x86 utilizza due "squilli" di privilegi, chiamati ring 0 e ring 3 (ne ha di più, ma non sono utilizzati da nessun sistema operativo popolare). Ring 0 è altamente privilegiato e può fare praticamente qualsiasi cosa. L'anello 3 è meno privilegiato e deve chiedere al codice che gira nell'anello 0 (il kernel) di fare qualcosa di privilegiato a suo nome (si tratta di una chiamata di sistema). Su tutti i moderni processori x86, esiste una protezione aggiuntiva, denominata Memory Management Unit o MMU. Permette ad ogni processo di avere il proprio spazio di indirizzamento virtuale, e se tenta di accedere a qualsiasi altra memoria, si blocca.

Quindi sembra che tutti i processi siano isolati, giusto? Sfortunatamente non è così semplice. Il kernel, che gira nell'anello 0, fornisce un'interfaccia per i processi per comunicare tra loro e persino per accedere alla memoria l'uno dell'altro indirettamente, utilizzando una chiamata di sistema. Indipendentemente dal fatto che la chiamata di sistema sia consentita dipende dalle autorizzazioni del processo. Un processo dannoso con autorizzazioni elevate può semplicemente chiedere al kernel di dargli accesso alla memoria di un altro processo, e il kernel sarà felice di farlo. Processi dannosi senza permessi non sono in grado di farlo. È importante notare, tuttavia, che su molti sistemi, semplicemente l'esecuzione come lo stesso utente di un altro processo è considerata un permesso sufficiente. Due processi in esecuzione come lo stesso utente possono quindi leggere e scrivere l'uno nella memoria dell'altro su alcuni sistemi.

La prima risposta spiegava come funziona su Windows. Su Linux, i modi equivalenti per leggere le memorie di un altro processo sono le chiamate di sistema ptrace() , process_vm_readv() e il /proc/<pid>/mem file. I primi due controllano che il processo chiamante sia eseguito come lo stesso utente della destinazione, o che abbia permessi di override specifici (eccetto su alcuni sistemi con funzionalità di sicurezza aggiuntive). Il secondo file può essere letto solo dal programma che lo possiede.

Although the passwords.txt file is only 'stored' in permanent secondary memory on the USB, it will briefly appear within the RAM of the computer which I use to mount the USB, decrypt the data, and open the file. It is here that I suspect a weakness my reside.

In realtà la chiave è costantemente in memoria, non solo brevemente. Rimarrà in memoria fino a quando il dispositivo è montato. Questo è fondamentalmente necessario per la crittografia / decrittografia al lavoro. Si noti che probabilmente sarà una derivata della password, non della password stessa, ma è comunque sufficiente per decodificare l'unità. Tuttavia è presente nel kernel che, essendo ring 0, non può essere utilizzato dai normali processi.

(Side question): Aside from the obvious Anti-Virus solution to mitigate a malicious program, how may RAM be protected?

Supponendo che non ci siano bug sfruttabili, due processi vengono eseguiti in quanto utenti diversi non saranno in grado di accedere alla memoria l'uno dell'altro. Esecuzione di un utente come un altro processo fornisce un migliore isolamento. Si noti che, su Windows e sulla maggior parte di Linux, se due processi grafici di utenti diversi vengono eseguiti contemporaneamente, possono comunque comunicare tramite API grafiche. Windows tenta di bloccarlo, ma è stato ripetutamente ignorato. Inoltre, se il kernel è compromesso (che richiede uno sfruttamento avanzato), tutte le scommesse sono disattivate, in quanto il codice ring 0 può accedere a qualsiasi memoria in circostanze normali.

L'antivirus non aiuta molto, dal momento che tende a proteggere solo da malware vecchi, scritti male o già scoperti e prodotti in serie. Il malware specializzato, anche se abbastanza dilettante, continuerà a bypassare l'antivirus con un'alta probabilità.

    
risposta data 18.11.2017 - 04:43
fonte

Leggi altre domande sui tag