Differenza tra vulnerabilità su windows / linux / mac per lo stesso programma

3

Se qualcuno trova una vulnerabilità come l'overflow del buffer in un programma come Google Chrome o Mozilla Firefox in esecuzione su una macchina Linux, ci sono possibilità che questa vulnerabilità possa persistere su Mac OS X o Windows che eseguono lo stesso programma.

    
posta abracadabra 02.01.2012 - 23:37
fonte

2 risposte

2

Sì, senza dubbio tutte le piattaforme saranno interessate. L'exploit per le vulnerabilità di corruzione della memoria sarà molto diverso a seconda del sistema operativo. Ogni piattaforma avrà la sua catena ROP, o un altro metodo per controllare il flusso di esecuzione.

Le vulnerabilità come Directory Traversal, SQL Injection, XSS, code eval () hanno quasi sicuramente un exploit identico indipendentemente dal sistema operativo. Nel contesto dei browser Web, le violazioni della politica Same-Origin, la separazione dei contenuti e alcune vulnerabilità di divulgazione delle informazioni avranno probabilmente un identico exploit.

Ad esempio, ecco un exploit di divulgazione di informazioni che interessa tutti i browser WebKit indipendentemente dalla piattaforma. Dove questo exploit di danneggiamento della memoria per WebKit è una condizione DoS su tutte le piattaforme, ma i mezzi per ottenere il codice l'esecuzione è molto specifica della piattaforma.

    
risposta data 03.01.2012 - 01:11
fonte
5

I buffer overflow potrebbero essere specifici per una determinata architettura di destinazione; su PC e macchine simili a PC, è possibile che si verifichi un overflow del buffer in modalità a 32 bit e non in modalità a 64 bit e viceversa. Un buffer overflow è un bug di programmazione: il programma cerca di fare qualcosa che non è possibile (scrivendo più dati di quelli che potrebbero inserirsi in un buffer), e certamente non previsto dal programmatore. La dimensione del buffer e dei dati che possono essere tentati di scrivere in esso può dipendere dalle caratteristiche della piattaforma, quindi dalla possibile dipendenza. Alcuni buffer overflow si verificano effettivamente nelle librerie di sistema che vengono utilizzate in modo improprio dall'applicazione, nel qual caso il problema potrebbe essere specifico per un determinato sistema operativo e non essere esteso ad altri sistemi operativi in cui è possibile eseguire la "stessa" applicazione.

Un bug è ancora un bug, però - che non viene dimostrato su una data architettura significa solo che la fortuna del programmatore ha superato localmente la sua sciatteria. Inoltre, indipendentemente dai punti precedenti, la maggior parte degli overflow del buffer sono neutri sul sistema: si verificano su ogni sistema e architettura in cui viene compilato il codice offensivo.

Le cose non sono chiare per tutti i tipi di vulnerabilità. Ad esempio, le applicazioni su sistemi Unix (inclusi Linux e MacOS, ma non Windows) spesso hanno bisogno di creare file temporanei nella directory /tmp , e la creazione può spesso essere sovvertita in un accesso in scrittura ovunque, con un collegamento simbolico, partendo dal presupposto che l'autore dell'attacco può eseguire il codice sulla stessa macchina (con un nome utente diverso) e può prevedere il nome del file temporaneo. Il mancato utilizzo di un nome casuale imprevedibile per il file temporaneo è una vulnerabilità che le applicazioni potrebbero avere su MacOS, ma che non appare su Windows. Questo è solo un esempio; Non voglio suggerire che MacOS o Linux siano meno sicuri (o, peraltro, più sicuri) di Windows.

È comunque una buona scommessa che la maggior parte delle vulnerabilità riscontrate nei browser Web persistano su tutti i sistemi operativi. I browser Web sono sempre più autosufficienti e sembrano davvero OS-in-the-OS, quindi le loro vulnerabilità tendono a essere le loro, piuttosto indipendenti dal sistema operativo esterno.

D'altra parte, lo sfruttamento delle vulnerabilità, ovvero trasformare il bug in esecuzione arbitraria di codice o simili, può essere molto dipendente dal sistema. Alcuni sistemi operativi utilizzano varie tecniche per rendere la vita più difficile all'attaccante, come ad esempio randomizzazione del layout dello spazio degli indirizzi o stack non eseguibili . L'overflow del buffer (se la vulnerabilità è un overflow del buffer) è ancora presente, ma la facilità di conversione in un attacco riuscito può variare notevolmente per la stessa applicazione, non solo tra sistemi operativi, ma anche tra versioni o anche opzioni di configurazione di un dato OS. Non esiste una regola generale affidabile, tranne per il fatto che le vulnerabilità devono essere rintracciate ed eliminate quando possibile.

    
risposta data 03.01.2012 - 02:29
fonte