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.