lunedì 23 luglio 2012

Ecco il motivo per cui continuo ad essere hackerato - chiari e presenti errori Billabong


E 'successo ancora una volta la settimana scorsa. No, non Yahoo! Voci , non i forum Phandroid Android , non NVidia e non Formspring , questa volta è stato Billabong, il nostro leggendario marchio di surf australiano. Come è spesso il modo con queste violazioni, di credito è stata subito rivendicata via Twitter :
@ AnonymousWiki sostenendo di credito per la violazione Billabong
Purtroppo ora c'è una bella discarica di oltre 21.000 indirizzi e-mail e password liberamente disponibili per il mondo di esaminare a loro piacimento . (Le scuse in tweet è dovuto in precedenza rivendicare credito per una violazione che ha finito per essere stata rubata da qualcun altro. Venuto fuori che gli hacker anonimi non ci si può fidare.)
Che cosa è andato storto? Come fa accadere una cosa simile? Non è chiaro ancora, di certo nulla è stato pubblicamente detto circa le cause profonde, ma io propongo che in un caso come Billabong, la scrittura era già sul muro. In effetti i segni sono ancora in tutto i loro siti web, basta sapere dove guardare.

La mancanza di Transport Layer Security

Cominciamo con uno facile. Over billabong.com.au , la maggior parte delle pagine includono una link "Sign Up":
billabong.com.au con un segno di collegamento
Colpire questo link lancia una nuova finestra sul sito e la barra degli indirizzi è il primo indizio del fatto che qualcosa non va:
Nessun TLS a pagina di registrazione
Ormai, tutti sanno che quando si sta inviando le password attraverso la rete, TLS non è negoziabile . Ma questo non è solo una password, ci sono anche dati personali e la cosa PII è che è proprio il tipo di dati che si desidera per il furto d'identità. La data di nascita è il grande qui, ma il telefono e l'indirizzo sono anche pezzi abbastanza pratici di dati per avere in mano troppo. Questi dati devono essere trattati con cura e rispetto per l'importanza che rappresenta per il proprietario, non passati in giro a casaccio senza alcun tentativo di proteggerla da possibili intercettazioni.

Classic ASP

Abbiamo ottenuto ASP.NET - il successore di ASP classico - più di un decennio fa. Se tu avessi un cane quando ASP classico è stato sostituito, probabilmente è più con voi. E 'una tecnologia molto, molto vecchio.
Perché questo è un problema? La tecnologia è stata progettata in un'epoca più semplice, l'uno senza l'intervallo o la frequenza di exploit che vediamo oggi. Non vi è alcuna protezione XSS nativo in ASP classico (abbiamo la convalida della richiesta in ASP.NET), non c'è niente da proteggere l'utente da SQL injection oltre il vostro senso comune (le ORM di oggi fanno un lavoro stellare di questo applicando parametrizzazione query) e non c'è alcuna implementazione nativa per la gestione degli account, l'autenticazione e la gestione delle sessioni (abbiamo il provider di appartenenza in ASP.NET).
Il punto è che tu sei così dietro la palla-8, quando si tratta di garantire classic ASP. Ogni volta che rivedo un sito in questa lingua, ho quasi certamente trovare di base, low-hanging difetti che altrimenti sarebbero stati significativamente mitigato la tecnologia più recente, anche se lo sviluppatore non sapeva la prima cosa sulla sicurezza web app.
Come si può chiaramente vedere nella URL della gru a benna dello schermo in precedenza, il modulo di iscrizione è davvero una pagina ASP classico. Ma ci sono un paio di altre cose interessanti in questo URL ...

Parametri Abusable e XSS rampanti nella pagina di registrazione

Hai solo bisogno di guardare a questo indirizzo per i campanelli d'allarme per il blocco:
http://weblink.impactdata.com.au/regform.asp?utilitycode=PXKT4Qxn7-1443&restrictedCode=iJ7v7L-64&pagecolour=000000&txtColour=FFFFFF&pageAlign=Center&imgAlign=Center&newMemberText=null&submitTitle=Submit&bodyStyle=background-image:%20url(https://secure1.impactdata.com.au/utils/images/1048/bb06_header.gif);%20background-repeat:%20repeat-x;&imgSrc=https://secure1.impactdata.com.au/utils/images/1048/trans.gif
Ora Billabong è in realtà stata molto generosa qui perché quello che hanno fatto è mi ha permesso di personalizzare la mia esperienza di registrazione. Come si è visto, le mie preferenze durante la registrazione online è quello di includere il molto glamour Miranda Kerr in background bilanciata con una lapidata Bugs Bunny guardando sopra il modulo.Naturalmente mi aspetto che la pulsante di invio per fare riferimento a questi personaggi e mi sento anche la pagina scorre meglio con tutto allineato a sinistra. Oh - e tutto è molto più equilibrata quando il colore del testo corrisponde corona Bugs ':
Registrazione pagina manipolata dai parametri delle stringhe di query
Si può sperimentare questo progetto molto più attraente se stessi proprio qui . Ma questo non è in realtà XSS, la possibilità di personalizzare questi attributi è in base alla progettazione . Naturalmente, la conseguenza non voluta è che ho potuto trovare il nastiest immagini disponibili sul web e Miranda sostituto e per questo bug.
Ora, questo è XSS:
XSS nella pagina di registrazione
Più specificamente, questo parametro (tra gli altri) consente XSS:
pagecolour = "> <script> alert ('50% 25 via tutto solo per oggi '!); </ script> <"
Questo è un esempio abbastanza innocuo di XSS, ma è il loro sito (una specie di - torneremo a questo) sul proprio dominio con il loro logo e abbiamo appena personalizzato il contenuto con XSS riflettenti estremamente banali. Una volta in grado di progettare la gente a seguire questo link, si dispone di una grande quantità di controllo sulla loro esperienza sul sito.
Come ho detto prima, ASP classico fornisce a zero nativa difesa contro XSS - non c'è whitelisting di ingresso ammissibile, né la codifica di output. A meno che non esplicitamente codificare questo te stesso, sei fregato.
Modifica (17 luglio 2012): In un giorno di questo post, Data Impact si trasferì a prendere la linea al di sopra forma più sicuro il proprio sito web con TLS, come spiegato da Sharples Max nei commenti qui sotto . La risposta è da lodare, il mio post è stata presa in modo costruttivo e si sono mossi decisamente poche ore di essere a conoscenza di esso.Complimenti a dati relativi all'impatto.

Dipendenza da un partner insicuro

Per quanto male come il modulo di iscrizione è, in realtà non è colpa di Billabong. Beh, è parte - sono il collegamento ad un servizio con la propria identità su di esso e chiaramente non hanno fatto anche il più superficiale dei controlli di sicurezza - ma che il servizio è effettivamente fornito da dati relativi all'impatto .
Questo è il rischio di estendere la vostra identità aziendale a un partner, si sta estendendo anche vostro profilo di rischio. Non è del tutto dissimile da cadere in una libreria di terze parti e, mentre il codice può essere super sicura, la biblioteca potrebbe avere difetti che portano è annullata. Il punto è che se la sicurezza è importante allora ci deve essere un livello di due diligence fatta con partner. Uno sguardo al modulo di registrazione è sufficiente per dire che probabilmente ha problemi, ma poi di nuovo, è necessario solo uno sguardo al sito dati relativi all'impatto di vedere i difetti stessi occhi di tutti:
Impatto sito dati con accesso e non TLS
Il punto è che le cose basilari come la mancanza di TLS su una pagina di accesso dovrebbero essere le bandiere rosse. Se un fornitore specializzato di un servizio destinato a gestire PII non può nemmeno garantire la propria pagina di accesso, come probabilmente sono loro per fare la cosa giusta per i propri clienti?
Quindi questo si mette Billabong in chiaro, giusto? Uh, non proprio ...

XSS rampante un po 'ovunque else

Realmente non c'è niente di meglio per la schiena Billabong sul proprio sito. Facciamo una ricerca, e quando cerco, mi piace essere creativo :
Cerca con codice sottoposto a rendering alla pagina
Solo nel caso in cui non è immediatamente chiaro, Billabong mi permette di scrivere il mio codice HTML. Huh? Questo è solo molto, molto semplici XSS riflettenti (di nuovo) in che mi viene permesso di aggiungere il mio markup proprio alla pagina semplicemente cercando "<i> corsivo </ i> <b> grassetto </ b> <u > sottolineare </ u> ". Quello che ci dice è che non vi è alcuna lista bianca per non consentire i tag HTML, né vi è alcuna codifica di output per assicurare che se questi tag si ottiene attraverso, sono resi alla pagina piuttosto che analizzata dal browser. E 'XSS difesa 101.
La cosa interessante però è che non c'è una totale mancanza di consapevolezza per quanto riguarda personaggi in fuga, per esempio, osservare il seguente percorso:
alert ('XSS'); "href =" http://www.billabong.com.au/search?search=alert ('XSS'); "> alert ('XSS');" href = "http:/ / www.billabong.com.au/search?search=alert ('XSS'); "> alert ('XSS');"
Questo non causare un alert JavaScript, perché le virgolette singole sono fuggiti e reso nella fonte come segue:
<script> alert (\ 'XSS \'); </ script>
Oh no - una fortezza impenetrabile di XSS difesa! Tranne che non è:
XSS nella pagina di ricerca Billabong
Tutto quello che ho fatto è caduto le virgolette e allertato un numero intero. Ci sono ampivettori disponibili a sfruttare XSS in tutti i tipi di modi unici e imprevedibili attraverso diversi browser e framework web. La XSS Cheat Sheet è uno studio nel bizzarro, per usare un eufemismo, ma dimostra quanti (la maggior parte?) le difese di codifica può essere aggirato.
Ma forse XSS difesa non era il modus operandi in questo caso? Forse è per aiutare con le ricerche legittime che coinvolgono un preventivo? Vediamo:
SNAGHTML9617c7
Sì, non sembra perfettamente ragione entrambi. Non possiamo incolpare di ciò classic ASP questa volta, scopre che billabong.com.au è in esecuzione su Apache e PHP:
SNAGHTML9c56ba
Questo difetto XSS non era bella, ma sicuramente si tratta di un'eccezione e le questioni di qualità non sono rampante, giusto? Diamo una scorsa casual.

Faux pas di sicurezza Numerosi nel negozio

Così testa su Let 's verso il negozio , sicuramente questa sarà sicuro, giusto? Il primo segno è positivo:
Fiddler traccia mostrando IIS 7.5, ASP.NET MVC 4 e 3
Si tratta di un violinista traccia che dimostra che è effettivamente in esecuzione sulla tecnologia di oggi che è un grande passo in avanti rispetto al primo sito abbiamo guardato il classico ASP. Vuol dire che caratteristiche come richiesta di convalida e la codifica di uscitadovrebbe proteggere il sito da vulnerabilità XSS di base. Purtroppo, è tutto più o meno in discesa dopo questo.
Cominciamo con la registrazione:
TLS mancanti sul segno negozio a
Yep, ancora nessun TLS perciò tutto quello che sta volando attorno informazioni in chiaro.Tutto questo è davvero un po 'inutile, perché esiste un certificato valido sul sito, qui è ->https://us.shop.billabong.com
Così ci dirigiamo in giù per i campi password, e, oh cara:
Limite di 15 caratteri per la password dell'archivio
Perché? Voglio dire solo 15 caratteri, qual è la ragione di tale limite piccola superficiale?Sappiamo già questo è un 4 ASP.NET MVC 3 siti, il che significa che gli sviluppatori sono stati solo cinque minuti da avere un intero modello di provider di appartenenza che certamente non impone alcun limite superficiali come questo.
Su tale questione provider di appartenenza ASP.NET, se è stato utilizzato vedremo un cookie chiamato ". ASPXAUTH". Guardiamo in check-out con Modifica questa Cookie :
No. Biscotto ASPAUTH
No, nessun provider di appartenenze. Ora non sto dicendo che non è possibile implementare l'autenticazione sicura e gestione delle sessioni senza di essa (in effetti ha qualche problema), ma in sua assenza sappiamo che qualcuno ha molto probabilmente avuto a rotolare a mano. Quando qualcuno deve costruire questa funzionalità da zero, le probabilità di avvitamento lo compongono sono esponenzialmente superiori rispetto utilizzando le funzionalità native quadro.
Passando, un altro aspetto spesso insicuro è resetta le password, sai, per quando hai dimenticato la password e non può di accesso. Ho scritto un post abbastanza ampio su questo di recente e spero che dà un buon senso di quanta deve essere considerato. Quindi cerchiamo di vedere come implementare azzera:
Passwword ripristinare richiedere contattando il servizio clienti
Uh, ok, non è quello che mi aspettavo, tutto ciò che mi dà collegamento è un gruppo di indirizzi fisici, numeri telefonici e indirizzi e-mail. Quindi, fondamentalmente, se non posso di accesso, non c'è self-service di reset e io semplicemente non possono acquistare dal negozio. Impressionante.
Ok, bene come su come cambiare la password online, sicuramente questo può essere fatto in modo sicuro? Facciamo dare un andare:
Modifica della password non richiede la vecchia password
Ora sono confusa - Sono sullo schermo "update", ma mi sta chiedendo di "Crea". Ok, che potrebbe essere solo la grammatica povera, ma c'è un grande pezzo mancante funzionale, non c'è posto per confermare la vecchia password. Ciò significa che se vagare per PC di qualcuno o sedersi in un caffè internet in cui un cliente non ha esplicitamente disconnette, ora ho il controllo completo il proprio account e può bloccare impostando la password personale. Non mai permettere a qualcuno di cambiare la password senza prima la conferma di quello esistente a meno che non si sta utilizzando un processo sicuro di ripristino per la password dimenticata (tornare a quel post di cui sopra di mio). Tranne che su questo sito, questo è un problema troppo!
Fortunatamente per il momento si va alla cassa in realtà, la richiesta è su HTTPS. Tuttavia, c'è trascuratezza altri video sulla pagina dove ovviamente non ci sono messaggi di errore personalizzati sulle "Essenziali" annotazioni del modello MVC e dei nomi degli attributi sono zampillante al messaggio di errore:
I nomi degli attributi che appaiono nei messaggi di errore
Certamente non una vulnerabilità di sicurezza ma non molto lucido. Ricorda di prendere scorciatoie, forse?
Proviamo qualcosa di diverso, solo una semplice ricerca per ottenere un preventivo doppia questa volta:
Cerca per il doppio errore di database quote di ritorno
Questo non è andato molto bene, eravamo davvero in grado di provocare un errore nel database? E perché la casella di ricerca ora mostra la citazione HTML sfuggito? Ho letteralmente entrato in una virgolette nel campo di ricerca. Quando i database iniziare ad avere problemi con le virgolette, è che quando si inizia a pensare "SQL injection".
Sulla base del problema di cui sopra codifica dell'output, si può intuire ciò che una ricerca per "/ '; ci dà (non ho incapsulato questo tra virgolette)?!:
SNAGHTML12844099
Chiaramente, la fuga e la codifica di uscita è fondamentalmente sbagliato. Ciò solleva la questione: perché non è il nativo di lavoro in uscita la codifica MVC? Questo è gestito correttamente dal quadro natale, sembra che c'è un altro processo di codifica e, eventualmente, l'output come materie prime. Ma qualunque sia la causa principale, è un altro esempio di qualcosa di molto, molto semplice che evidentemente proprio non è stato testato.

Così come sono arrivati ​​hacked?

Beh, è ​​tutto speculativa al momento. Tuttavia, sulla base di quello che abbiamo visto sopra direi che c'è una buona probabilità di qualche iniezione piuttosto fondamentalmente cattivo SQL rischia in là. Ora che potrebbe essere sul sito Billabong o potrebbe essere più di impatto sui dati. E 'quest'ultimo che è (attualmente) la raccolta dei dati degli utenti, ma poi di nuovo, sono, ovviamente, un terzo fornitore di ristorazione parte di più client e non ho sentito parlare di tutti gli altri essere violata (e hanno ottenuto alcuni grandi nomi sul la loro homepage). La violazione di dati si riferisce anche a MySQL, che siamo meno propensi a vedere dietro un front-end Microsoft.
La probabilità altra è una vulnerabilità a livello macchina, compresa la possibilità di aver posseduto la scatola del tutto tramite un exploit o semplicemente per ottenere le credenziali.In realtà questo è molto probabile; un po 'di indagini mostra numerosi siti su stesso IP, che sono menzionati anche sulla breccia, almeno uno dei quali è stato ieri offline (è indietro). Ad esempio, isurfbecause.com stava tornando HTTP 500, ma la Wayback Machine calcola che andava bene solo un paio di settimane fa :
Web Archive mostrando isurbecause.com on-line due settimane prima
Questo stesso IP ha anche molti altri siti che corrispondono agli utenti MySQL elencati nella discarica: joelparko.com (joel_p_wp), billabonggirls.com.au (bbgirls-za) e isurfbecause.com (isurfbec-user). L'indirizzo IP è di proprietà di Media Temple in California e data la discarica indica tutti questi siti erano sulla breccia, mi prendo una pugnalata a esso e dire che Billabong ha la sua propria scatola che è stata semplicemente mal gestite e conquistata da uno dei exploit di cui sopra.

Conclusioni

Ho toccato una serie di questioni di cui sopra, ma era tutto con l'intenzione di condurre ad una conclusione: questo sito ha avuto vulnerabilità chiare e presente in anticipo che venga violato. Questi sono il tipo di vulnerabilità che un well-rounded sviluppatore di identificare rapidamente, per non parlare di un professionista della sicurezza dedicata come un penetration tester. Heck, anche strumenti automatici di analisi dinamiche sarebbe prenderli in un attimo.
Ora non sto dicendo che una delle vulnerabilità specifiche sopra indicate sono state alla radice di questa violazione, ma quello che sto dicendo è che essi indicano chiaramente Billabong mai preso sul serio la sicurezza. E 'ovvio che c'è un processo fondamentale di sicurezza mancanti e se tali vulnerabilità lampante sono presenti - quelli che possono essere osservati dal browser da solo - cosa si trova all'interno? Il sito è stato una bandiera rossa - ha reso cristallino che un po 'di sondaggio sarebbe molto, molto probabile che alza più gravi difetti.
Avevo coscientemente evitato di ricerca di vulnerabilità come SQL injection, c'è una linea sottile tra la curiosità e l'attività potenzialmente dannoso. Ma molti altri non si ferma davanti a quella linea, loro continuano a colpire e sondare fino a che qualcosa dà. Abbiamo visto più volte che "hacktivisti" richiedono alcun motivo reale e l'opportunismo da solo è una motivazione sufficiente.
E 'facile guardare a un sito web , dopo una violazione e dire "Oh sì, l'avevano venuta", ma quando il modulo di registrazione permette di qualcuno aggiunge un Bugs Bunny lapidato dal design , chiaramente c'è qualcosa di molto, molto sbagliato in corso. E questa è davvero la lezione: mettere le basi di destra. Se non è possibile fare questo è simile a parcheggiare l'auto nel brutto quartiere, lasciando il vostro computer portatile sul sedile e le chiavi nel blocchetto di accensione. Stai solo in cerca di guai.

Nessun commento:

Posta un commento