Domanda

Sto cercando di capire i problemi di sicurezza tra i buffer overflow in Windows vs Unix.

A quanto ho capito, l'hacker del buffer overflow di Windows non può essere implementato in Unix perché ad ogni processo viene assegnato il proprio spazio di memoria. Questo significa che i processi in Windows condividono lo spazio di memoria?

È stato utile?

Soluzione

Lo spazio di memoria condivisa non è la ragione della maggior parte degli exploit di buffer overflow. Windows non ha più memoria condivisa da Win 3.0 (o Win 3.1 in esecuzione su 80286), quindi è passato molto tempo, quasi 20 anni, dall'ultima spedizione di Windows che supportava il modello di memoria condivisa.

L'overflow del buffer consente all'autore dell'attacco di modificare la memoria nel processo che viene sfruttato. In questo modo l'attaccante punta a eseguire un'operazione di sistema (ad esempio avviare un processo, caricare una libreria dinamica o modificare i diritti di un determinato utente, ecc.) Utilizzando il livello di privilegio dei processi di destinazione.

Questo è possibile su piattaforme Win *, * nix e molte altre. Come il sistema operativo e l'applicazione che viene sfruttata, sta affrontando questo tentativo, è ciò che fa la differenza. Dal lato dell'applicazione, un attento controllo della dimensione del buffer è ciò che di solito serve per evitarlo. Tecnologie come ASLR (randomizzazione del layout dello spazio degli indirizzi, che impedisce all'autore dell'attacco di indovinare l'indirizzo di una funzione che deve chiamare per fare del male) e DEP (prevenzione dell'esecuzione dei dati, che impedisce all'attaccante di iniettare codice eseguibile nelle aree dati) dal sistema operativo, aiutare enormemente. Dal lato del sistema operativo, non eseguire applicazioni come root / amministratore è forse la linea di difesa più importante.

Altri suggerimenti

Sia i processi Windows che Unix hanno un isolamento della memoria. Gli attacchi di overflow del buffer possono verificarsi in entrambi gli ambienti.

Forse dovresti chiarire cosa intendi con " buffer overflow Windows hack " ;. Gli overflow del buffer non devono necessariamente modificare il codice di altri processi.

Esempio: leggere da cin a un array di byte di dimensioni fisse può essere utilizzato per eseguire codice personalizzato. Se il programma stesso funziona come root, né Unix né Windows possono fare nulla per impedire l'hack: l'isolamento della memoria non aiuta affatto.

Come ha sottolineato Todd, Windows e Unix sono entrambi in grado di isolare la memoria (che è roba molto semplice rispetto a DEP o ASLR ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top