Quali attacchi previene un criterio W ^ X?

7

Scrivi xor Execute (W ^ X) è un criterio che un blocco (pagina) della memoria non può essere contrassegnato come scrivibile ed eseguibile allo stesso tempo.

Quali attacchi impedisce W ^ X, con e senza i seguenti:

  • Address Space Layout Randomization (ASLR)
  • Data Execution Prevention (DEP)
  • Una volta scrivibile, mai eseguibile - la pagina non può mai essere contrassegnata come eseguibile dopo essere stata contrassegnata come scrivibile.
posta Polynomial 20.08.2012 - 20:54
fonte

1 risposta

7

W ^ X e "Once-writable, never executable" sono entrambi sotto-casi di DEP. DEP si occupa di rendere gli accessi in lettura e gli accessi all'esecuzione distinti (una pagina scrivibile è anche una pagina leggibile). W ^ X riguarda l'uso di DEP per applicare un criterio specifico, ovvero che una determinata pagina non può mai essere scrivibile ed eseguibile allo stesso tempo.

La conformità al criterio W ^ X può essere richiesta dal programmatore perché scrivere "dati" e quindi eseguirli in modo affidabile comporta lo svuotamento di alcune cache, che è un'operazione esplicita e costosa. Passare attraverso il kernel (con una chiamata mprotect() ) non è un modo difficile per farlo. D'altra parte, forzare il programmatore a fare queste cose in modo esplicito significa che non succederà in altre situazioni, in particolare quando un utente malintenzionato tenta di sfruttare un overflow del buffer. Questa è una generalizzazione della funzione "stack non eseguibile". (Il buffer overflow è ancora lì, però: W ^ X rende solo la vita più difficile per l'attaccante.)

La politica "scrivibile una volta, mai eseguibile" mi sembra sospetta: non è compatibile con i compilatori JIT. Ad ogni modo, sarebbe un sotto-caso di W ^ X: come W ^ X, in cui la transizione W- > X è proibita.

    
risposta data 20.08.2012 - 22:08
fonte

Leggi altre domande sui tag