VPS con attacco di malloc delle risorse condivise

3

Se ho capito bene allora:

  1. Funzione C malloc fornisce un blocco di memoria con valori indeterminati (che dipendono dall'utente precedente di questo blocco di memoria)
  2. Gli host VPS condivisi condividono risorse come RAM e CPU

In questo caso, la mia domanda è: sarebbe possibile sfruttare questo fatto per creare un programma C che ripetutamente malloc e memoria libera e registra i valori di memoria trovati per individuare i dati importanti di altri utenti come password ecc. ?

Se non è possibile, perché no?

Se è possibile, come possiamo evitare che ciò accada?

EDIT : dopo una lunga lettura dei manuali di VMware, ho trovato questo: MANUAL

Pagina 5, sezione 2.3, lista articolo 3, righe 6 & 7:

"In order to avoid information leaking among virtual machines, the hypervisor always writes zeroes to the host physical memory before assigning it to a virtual machine. "

Quindi questo tipo di risposte alla mia domanda per almeno uno degli hypervisor. Non c'è modo per me di verificare se è vero per tutti gli hypervisor.

    
posta Gillian 19.06.2018 - 17:40
fonte

2 risposte

1

C function malloc provides a memory block with indeterminate values (which depend on the previous user of this memory block)

Una corretta.

Shared VPS hostings share resources such as RAM and CPU

Usano la stessa CPU fisica e la stessa RAM degli altri VPS, sì.

Would be possible to exploit this fact to create a C program which would repeatedly malloc and free memory and log found memory values...

È complicato.

Stai dimenticando un livello in più e i livelli creano astrazione. La V in VPS ovviamente sta per Virtuale , ma per creare qualcosa di virtuale, abbiamo bisogno della tecnologia per virtualizzare.

In parole semplici, la virtualizzazione divide l'hardware fisico in parti più piccole che possono essere utilizzate dalle macchine virtuali, questo viene fatto da Hypervisor, che usa le funzioni del kernel esposte per esporre l'hardware che ha riservato alla VM.

If it is not possible, why not?

È possibile che esista un bug nell'hypervisor per uscire dai bordi virtuali che ha impostato per il tuo VPS.

Semplici esempi come malloc() sono già stati utilizzati da altri processi per sfuggire a un account utente con privilegi bassi su Linux.

Questo è fondamentalmente ciò che è, ma più complesso, se puoi scappare dalla tua VM, sarai l'utente di Hypervisor e quindi avrai accesso a tutto ciò che è nell'altro VPS ospitato sullo stesso hypervisor.

If it is possible, how can we prevent it from happening?

Come utenti finali, non c'è molto che puoi fare, ad eccezione di tenere d'occhio siti Web come pacchetti e cedere per tenere d'occhio i servizi vulnerabili.

Un esempio stupido sono i recenti attacchi alle architetture della CPU che hanno consentito l'accesso alla memoria protetta, tra le altre cose. Se qualcuno esegue quel tipo di attacco su un VPS attivo, può accedere alla RAM utilizzata anche dal tuo VPS.

L'unica cosa che puoi fare è attendere una patch e modificare tutte le tue informazioni sensibili (password, chiavi, ...) successivamente, poiché potrebbero essere state in memoria e possono essere compromesse.

    
risposta data 19.06.2018 - 18:40
fonte
4

C function malloc provides a memory block with indeterminate values (which depend on the previous user of this memory block)

Solo sull'uso precedente di quel programma , per ragioni che spiegherò.

Would be possible to exploit this fact to create a C program which would repeatedly malloc and free memory and log found memory values in order to sniff out other users' important data such as passwords etc.?

No.

Quando un processo richiede un pezzo di memoria dal kernel, quella memoria viene consegnata vuota (azzerata). Una volta che un processo ha ricevuto quella memoria, la suddividerà e riutilizzerà le parti di essa per le singole chiamate malloc() . La maggior parte delle implementazioni di malloc() non azzerano la memoria tra gli usi, ed è qui che i "valori indeterminati" da cui vieni provengono.

Un programma che ha funzionato nel modo in cui hai descritto non avrebbe trovato nulla di interessante. Al massimo, potrebbe trovare alcuni dei propri dati in memoria, ma non troverà i dati da altri processi o da altri utenti.

    
risposta data 19.06.2018 - 22:57
fonte

Leggi altre domande sui tag