mercoledì 18 gennaio 2012

Zappos, Stratfor, Sony, Gawker; Hai la vostra attenzione? Bene, ora iniziare a utilizzare un gestore di password!

Un'altra settimana, un altro incidente di sicurezza importante con un sito web significativi.Così la notizia questa volta è che Zappos - quei ragazzi che vendono le scarpe (tra le altre cose) - per la gente negli Stati Uniti può avere, uh, accidentalmente rivelato da qualche parte secondo l'ordine di 24 milioni di account utente . Bugger.
Ora, naturalmente, alla radice di questo è inevitabilmente ancora più malvagi intenti a sfondare sicurezza sito a scopo di lucro, l'attivismo o calci vecchio semplicemente.Indipendentemente dal modus operandi di questi incidenti, resta il fatto che un numero significativo di conti sono stati esposti e c'è ora la possibilità reale che i nomi utente e password - forse la tua username e la password - stanno per essere galleggianti intorno internet essere visti da chi sa quante persone.
Questo, naturalmente, è un problema perché statisticamente c'è una probabilità più migliore media che hai usato la password in una serie di altre posizioni. Hai usarlo per eBay? Era lo stesso che avete usato per Amazon? O, ancora peggio, è che la tua password Gmail e può ora essere utilizzato per ripristinare tutte le altre password ? Se vi state chiedendo una di queste domande in questo momento, è il momento per un gestore di password che lo rendemorto facile per creare una forte, password unica per tutti gli account in modo che la prossima volta che questo accade - e non ci sarà una prossima volta - l'esposizione delle credenziali e il rischio non andrà oltre quel singolo sito.

Riutilizzo delle password è davvero così male?

Mettiamo un contesto intorno a questo da un altro recente incidente di sicurezza maggiore; Gawker. Indietro alla fine del 2010, da qualche parte secondo l'ordine di alcune centinaia di migliaia gli account sono stati esposti dopo Gawker è stato violato. Questo, naturalmente, potrebbe rivelarsi un numero molto piccolo in confronto a Zappos, ma è comunque un numero significativo.
Cosa succede frequentemente in questi incidenti hacking è che i colpevoli dopo la prova con orgoglio del loro operato per il web per tutti. E 'vero, ogni account viene reso pubblico in modo che chiunque può scaricare. Ecco Gawker , ecco Sony , ecco Stratfor e per il momento stai leggendo questo, potreste essere in grado di aggiungere Zappos alla lista.Linea di fondo: si aspettano informazioni riservate conto di essere reso pubblico.
Cosa succede dopo è che tali credenziali trapelato iniziare a ricevere abusato. Dopo l'incidente Gawker, gente con gli account violati ha iniziato inaspettatamente tweeting di bacche di Acai . Perché? Perché avevano riutilizzato la stessa password tra Gawker e Twitter e uno dei 2 miliardi di persone più che ora hanno avuto accesso a queste informazioni lo stava usando Twitter per inviare spam. E 'così semplice.
Ora, naturalmente, potrebbe anche essere molto peggio; riutilizzare l'account su Amazon e alcuni di quei 2 miliardi di persone potrebbero iniziare a fare altri acquisti a vostro nome.Riutilizzarlo su Facebook e improvvisamente è molto facile per iniziare socialmente ingegneria tuoi amici a cliccare su link o l'installazione di software che normalmente non potrebbero fare - dopo tutto, qualcuno di loro fiducia li sta spingendo in azione quindi deve essere ok, giusto?
La linea di fondo è semplicemente questo: ogni volta che si riutilizza una password, è come dormire con qualcuno senza "precauzioni". Certo, può rendere le cose un po 'più facile e vi fidate di loro di essere "sicuro", ma che stai rischiando la propria sicurezza personale, più che di ogni altra interazione che avete in futuro.

La password anti-pratiche

Ci sono un sacco di idee là fuori su come dovrebbe essere la gestione delle password: in arrivo con una frase poi raccogliere le lettere dalle parole, sostituendo questi personaggi a -> @ e S -> $, creando solo una manciata di password di classi diverse poi riutilizzarli (forum, negozi, banche, ecc), utilizzando le informazioni relative al sito per generare la password e così via e così via.
Nessuno di questi funziona in modo coerente, ecco perché:
  1. Tutto ciò che dipende dalla memoria - la vostra memoria - non scala. Si può essere in grado di ricordare 10 o 15 o anche 20 frasi o schemi o qualsiasi modello che si sceglie, ma si dispone di più account di questo, anche se non ve ne rendete conto ora.
  2. Sviluppatori di siti web possono essere veri bastardi (abbiate pazienza) e l'impossibilità di utilizzare password generate dai modelli. Possono limitare la lunghezza dei caratteri ai limiti molto bassi o limitare di un set di caratteri molto limitato. Ci sono un sacco di siti là fuori dove sei bloccato con un PIN a 4 cifre.
  3. Nessuno - nessuno - è immune da sempre violato. Banche avere violato . avere violato le forme di sicurezza . governi ottenere hacked . Pensare è possibile creare una "classe" di password, come se ogni luogo si riutilizza è "sicuro" è fondamentalmente errata.
Quando non hanno consistenza, è possibile creare eccezioni. Quando si hanno delle eccezioni, è necessario un metodo per tenere traccia e gestire quelli che vi rimette a destra da dove siete partiti che alla fine significa solo una cosa: l'unica password sicura è quella che non riesce a ricordare .

Il ruolo del gestore di password

Un password manager è un po 'come il vecchio adagio di mettere tutte le uova nello stesso paniere poi guardarlo davvero, davvero da vicino. Ci sono diversi prodotti là fuori che affrontare il problema da angolazioni leggermente diverse, ma oggi voglio guardare il mio preferito, 1Password .
In termini molto semplici, funziona così:
  1. Si installa il software 1Password sul vostro PC / Mac / iPhone / Android.
  2. Si crea un "portachiavi" che è un file che conterrà tutte le vostre password.
  3. Sognate un singolo, password molto forte con un sacco di numeri, lettere, simboli, ecc - questa è la tua "Master Password", che si memorizzare e guardia con la vostra vita.
  4. Hai messo tutte le password per tutti i siti si utilizza nel vostro portachiavi che è quindi possibile sbloccare solo con la password principale.
  5. Si riserva il portachiavi e la sincronizzazione tra i dispositivi che utilizzando Dropbox.
Il portachiavi è crittografato in maniera estremamente robusta e può essere sbloccato solo con la master password. Se si perde questo, sei da solo - nessuno sarà in grado di aiutarvi a sbloccare quel file quindi dovrete passare attraverso un processo di reset su ognuno di loro.Naturalmente questo significa anche che chiunque si impossessa del vostro portachiavi non può fare nulla con essa senza la master password. Per esempio, se il portachiavi viene recuperato dal disco rigido del PC o in qualche modo estratto dal tuo account Dropbox, è inutile per conto suo.
Altri generale Domande e risposte su 1Password possono essere trovati nei loro post sul blog di Quanta sicurezza 1Password?

Semplificare la gestione delle password

Questo è in realtà un processo molto semplice, infatti è così semplice che è molto più semplice di quello che hai fatto prima, anche se si riusciva a ricordare tutte le tue password.
Il primo, ho 1Password eseguito localmente sul mio PC. Si integra nelle principali browser che significa che quando faccio il login a un sito Web che non riconosce, per esempio, oh, Zappos, questo è ciò che vedo:
1Password avevamo originariamente per ricordare la mia password Zappos
Questo è in Google Chrome, browser diversi un aspetto leggermente diverso. Comunque, potete vedere che ho cerchiato la barra di 1Password che viene visualizzata automaticamente dopo il login in Ho bisogno di inserire la password principale per andare avanti dopo di che posso dare un nome all'account allora che è - ho finito.
Quando sono accanto tornare al sito e vuoi fare il login, mi basta premere l'icona di 1Password sul browser (è appena a destra della barra degli indirizzi), inserire la password master, che completa automaticamente il modulo di accesso - sia username e password - sottopone poi per me:
Accedere nuovamente in Zappos con 1Password
Quanto facile è quello?! Perché questo è così semplice e perché mai poi realmente bisogno diricordare le password per siti come Zappos, è possibile iniziare a creare davvero "forte" le password e 1Password vi aiuterà con questo. Eseguire il backup sul menu in alto, il quadrante po 'come ci si trova in una posizione sicura permette di fare questo:
Creare una password complessa con 1Password
Che cosa questo significa è che si finisce con un qualcosa di password come "D [O62MA & RCWJ (Ihf3nk ^ e1bVS" <- questa è una buona password e non importa di una virgola che non si può ricordare e che sarebbe un dolore a tipo, perché non avete intenzione di fare che più, vero?
Tutto questo funziona benissimo sul PC (o Mac) ma ci sono anche equivalenti per iPhone e Android e faranno sincronizzare il vostro portachiavi tramite Dropbox. La linea di fondo è che si può sia mantenere il vostro account sicuri e tenerli con te ovunque tu vada, la scelta di piattaforma mobile dipende, naturalmente.

Il (molto raro) caveat

La promessa di avere solo "una password" è un po 'grande, ma non è troppo lontano il marchio. Qualsiasi luogo in cui non si può prendere 1Password sarà un problema. L'accesso al mio PC mentre è bloccato è un esempio, l'accesso al mio account iTunes su Apple TV è un altro. In casi come questo, mi sia finire con una password più corta che è più facile da digitare (ma ancora non riesco a ricordare) o utilizzare una memorabile unico uno quando ho davvero bisogno. Ma sono rare eccezioni - quattro o cinque al massimo.
Ma ci sono anche altri casi limite che possono rendere le cose più difficile per alcune persone. Che utilizzano regolarmente i computer condivisi in cui non è possibile eseguire 1Password è un buon esempio. La cosa da tenere a tornare a con sicurezza è che si sta cercando di trovare questo equilibrio tra rendendo troppo difficile per i cattivi contro nonrendendo troppo difficile per voi. Per molte persone, che significa equilibrio con approcci diversi, una taglia non è bene per tutti. In un caso come le macchine condivise, 1Password su un dispositivo mobile con il più breve - ma pur sempre casuale - password potrebbe essere l'opzione migliore.

Riassunto

Speriamo che andrà a finire che Zappos ha fatto un buon lavoro di proteggere gli account dei loro clienti 'e anche se la loro banca dati potrebbe essere stato a conoscenza, conservazione crittografia corretta garantirà le password al sicuro, o per lo meno non sono in grado di essere rotto in massa . Ma a prescindere, stanno ancora raccontando ai clienti di cambiare le loro password altrove li hanno riutilizzati . Chiaramente rimane un rischio.
Questa è una storia ormai ripetitivo, uno sono stato sul lato sbagliato di me in passato. In realtà è stato l'incidente che mi ha spinto in azione e mi ha installato e funzionante su 1Password. Io semplicemente non preoccuparsi di questo genere di cose più - Io ho zero rischio oltre i singoli siti.
Fatevi un favore, vai a farti 1Password poi passare qualche ora in movimento i vostri conti e reimpostare la password per qualcosa di sicuro. Anche se non sono stati colpiti da Zappos (o Sony o Stratfor o Gawker), domani sarà Amazon o eBay o PayPal o qualcuno come quello chevi è impatto e che stai per avere un intero mondo di nuovi problemi da affrontare. Purtroppo, è inevitabile.

lunedì 16 gennaio 2012

UriMapper in Windows Phone

In un precedente post su Estensibilità ricerca in Windows Phone 7 , un UriMapper è stato utilizzato per tradurre l'URI lancio invocato da ricerca Bing in un MappedUri, in questo caso, una pagina all'interno dell'applicazione Windows Phone.In questo articolo andremo a vedere come utilizzare una UriMapper per aiutare a strutturare e navigare all'interno dell'applicazione Windows Phone. Come un ripasso, ecco il UriMapper abbiamo definito nel App.xaml, e come è stato collegato al PhoneApplicationFrame nel file App.xaml.cs. 
App.xaml
<Application.Resources>
    <uriMapper:UriMapper x:Key="UriMapper">
            <UriMapper: UriMapping Uri = "/ SearchExtras"
                            MappedUri = "/ MainPage.xaml" />
    </ UriMapper: UriMapper>
</ Application.Resources>

App.xaml.cs
RootFrame = new PhoneApplicationFrame () {
                                UriMapper = Risorse ["UriMapper"] come UriMapper
                            };
Stiamo per iniziare cambiando il UriMapping al seguente:
<uriMapper:UriMapping Uri="/{Page}" MappedUri="/{Page}Page.xaml" />
Questa mappatura sarà tradurre qualsiasi URI che inizia con "/" aggiungendo il suffisso "Page.xaml". Ciò presuppone che tutte le pagine all'interno della nostra applicazione si chiuderà con "Page.xaml", ma significa che invece di navigare a "/ SecondPage.xaml", si può invece navigare solo "/ secondo".
Questo diventa utile se in seguito si decide che tutte le nostre pagine saranno in una cartella denominata "Pagine". In precedenza, avrebbe dovuto cercare attraverso l'intera applicazione alla ricerca di qualsiasi Naviga metodi e modificare l'URI per includere il prefisso "/ Pagine". Utilizzando UriMapping, tutto quello che dovete fare è cambiare la mappatura di includere il prefisso.
<uriMapper:UriMapping Uri="/{Page}" MappedUri="/Pages/{Page}Page.xaml" />
Come applicazione di Windows Phone cresce, si può decidere di rompere la vostra applicazione fino in assembly separati. In questo caso, è possibile ancora utilizzare un UriMapping per individuare la pagina a cui l'utente sta navigando. Per esempio, la mappatura seguenti individuare il MySatellitePage.xaml, che è in un assembly denominato Satellite:
<UriMapper: UriMapping Uri = "/ MySatellite" 
                      MappedUri = "/ satellite; componente / Pages / MySatellitePage.xaml" />
Deep linking
Un altro luogo dove l'uso di un UriMapping è importante è quando si utilizza il deep linking al fine di indirizzare gli utenti a una posizione specifica all'interno dell'applicazione. Questo può essere da un Tile Live (come determinato dal URI specificato durante la creazione della piastrella), o da una notifica Toast (l'elemento Param determina l'URI all'interno dell'applicazione per essere navigato a quando l'utente seleziona il brindisi).
L'approccio più semplice è di utilizzare l'URI della pagina che si desidera avviare (per esempio, "/ MyLaunchPage.xaml").Tuttavia, questo introduce un forte accoppiamento tra la struttura delle applicazioni e le notifiche inviate dal server. Invece, si può aggiungere un UriMapping simile al seguente, che mappa un URI "/ Toast" attraverso la pagina di lancio:
<UriMapper: UriMapping Uri = "/ Toast" 
                      MappedUri = "/ MyLaunchPage.xaml" />
Ora, se abbiamo bisogno di cambiare la struttura dell'applicazione, possiamo farlo facilmente aggiornando la mappatura. Senza la UriMapping avremmo dovuto aggiornare sia l'applicazione Windows Phone e il codice del server, e garantire che sono entrambi aggiornati allo stesso tempo - un compito quasi impossibile.
Noterete che non abbiamo specificato alcun parametro query in qualsiasi mapping dichiarato. Questo perché ci vengono mappati automaticamente di fronte alla URI al MappedUri. Nel caso del UriMapping scorso, per esempio, un URI "/ Toast? CustomerId = 1234" avranno mappato "/ MyLaunchPage.xaml? CustomerId = 1234".
Ho dimostrato un certo numero di scenari in cui una UriMapper può essere utilizzato per migliorare la navigazione e la struttura della vostra applicazione Windows Phone. Imparare ad usare questo potente strumento, e sarete scrivere codice più efficiente prima di conoscerla.

lunedì 9 gennaio 2012

Sessione ASP.NET con Google e hijacking ELMAH

Amo ELMAH - questo è uno quelle librerie che è sia bella nella sua semplicità, ma potente in quello che ti permette di fare. Combinano la potenza di ELMAH con la comodità di NuGet e si può essere installato e funzionante con l'errore assolutamente inestimabile registrazione e la gestione letteralmente in un paio di minuti.
Eppure, come dice il vecchio adagio, con un grande potere derivano grandi responsabilità e se non sei responsabile di come si implementano ELMAH, sei anche solo un paio di minuti di distanza dal fare il dirottamento di sessione della vostra applicazione ASP.NET - e molti altri exploit - molto, molto facile. Cosa c'è di più, le applicazioni vulnerabili sono solo una semplice ricerca su Google di distanza. Lasciatemi dimostrare.
Aggiornamento: Voglio mettere in chiaro proprio sulla parte anteriore che il fuori della configurazione casella ELMAH non fa nulla di quello che stai per leggere possibile. E 'solo quando ELMAH è configurato per esporre i log in remoto e non adeguatamente protetto che le cose vanno male.

La proposta di valore ELMAH

Alcuni retroscena primo; ELMAH è l'errore di registrazione Moduli e gestori scritto dal molto intelligente Atif Aziz ed è molto popolare. Quanto è popolare? E 'attualmente il pacchetto 14 più scaricato da NuGet :
ELMAH visibile in NuGet tramite Visual Studio
Ciò significa che al momento della scrittura, ci sono stati 42.429 download della biblioteca.
Ho il sospetto che la popolarità ha molto a che fare con quanto sia semplice da implementare. Prima di tutto, è possibile aggiungere ELMAH per la vostra applicazione ASP.NET, senza ricompilare, è solo una questione di alcune voci web.config e compresa la biblioteca ELMAH.
In secondo luogo, è molto facile per registrare gli errori di una serie di diversi meccanismi di stoccaggio permanente tra cui il default in memoria negozio e per SQL Server (fra gli altri) per la longevità un po 'di più. Una volta che il web.config è impostato, succede solo automagicamente .
In terzo luogo, è molto semplice da configurare ELMAH a fuoco è spento una e-mail quando qualcosa va storto. Non c'è niente come essere in grado di contattare in realtà un utente con un "Ehi, vedo che avevi un problema" messaggio cinque minuti dopo che hanno avuto problemi. La gente ama questo genere di proattività!
In quarto luogo, è molto facile per recuperare le voci di registro, è sufficiente staccare, per il percorso / elmah.axd delle app che invoca un gestore bel po 'di tirare fuori i messaggi recenti di qualunque repository che stai usando.
E, infine, registra ELMAH sono cose molto, molto utile in loro per aiutare realmente risolvere il problema. Ma a quanto pare, hanno anche roba molto, molto utile in loro per aiutare i cattivi rompere l'applicazione che ci porta allo scopo del post di oggi.

Hacker-friendly info in ELMAH

Cominciamo approfondire i dettagli di ciò che ELMAH ci dà, o in questo caso oggi, quello che dà l'hacker. Ecco un esempio di ciò che esce da tale gestore elmah.axd:
Il gestore elmah.axd mostrando il registro
In realtà, si può vedere questo per lei oltre a http://isnot.asafaweb.com/elmah.axd
Questo luogo particolare è quello che uso come banco di prova per ASafaWeb e le suevolutamente insicuro (più su quello a breve). Ciò che vedete nell'immagine sopra è una richiesta per il percorso "/ blah.aspx" che non esiste quindi è causando un HTTP 404 "NOT FOUND", che viene catturato da ELMAH. Fin qui, tutto bene.
Drill-down in tale errore, vedremo una traccia dello stack che comincia a rivelare l'implementazione interna del codice in cui è verificato l'errore. Tenete a mente questo è totalmente indipendente dalla configurazione personalizzata errori della app, è possibile attivare e specificare un valore predefinito reindirizzamento a una pagina di errore e ELMAH sarà ancora log di quello che vedete qui sotto - che è la bellezza di esso!
Una voce di registro per un HTTP 404
Ora scorri verso il basso un po 'e raggiungere l'interessante sezione - variabili del server:
Le variabili del server nella voce di registro ELMAH
Ho evidenziato due sezioni qui e voglio fare riferimento ad essi dal basso verso l'alto:
  1. La variabile "AUTH_USER" è impostata su "admin". Questo è il nome dell'utente autenticato quando è verificato l'errore. In altre parole, sappiamo che era l'amministratore connesso in quel momento.
  2. Il cookie ". ASPXAUTH". Nel caso in cui questo non sia già noto, uno sguardo attraverso il mio post su OWASP Top 10 per gli sviluppatori NET parte 9:. insufficiente protezione Transport Layer
Leggi il post? A destra, così ora avrete una buona idea di dove sta andando questo post -. ASPXAUTH il cookie viene utilizzato per mantenere lo stato di un utente autenticato quando il sito web utilizza il provider di appartenenze ASP.NET per l'autenticazione.

Identificazione di un obiettivo

Il punto cruciale di questo exploit centri intorno al fatto che molte persone non sono adeguatamente proteggere i registri ELMAH sul loro sito e che è facilmente rilevabile. In effetti è così facile da scoprire, è solo una questione di una semplice ricerca su Google perinurl: elmahtr.axd ASPXAUTH
Di ricerca di Google per inurl: elmah.axd ASPXAUTH
Oh ragazzi, questo è un sacco di risultati - 11.000 pagine di registro non protetti ELMAH ! con informazioni cookie di autenticazione Sostituire la "ASPXAUTH" criteri di "Log di errore per" che appare nella parte superiore di ogni risorsa elmah.axd e il risultato è attualmente 192.000. Ouch! Certo, alcuni di questi sono risultati per il sito stesso e alcuni sono semplicemente pagine circa ELMAH ma in qualunque modo si taglia, ci sono un enormenumero di siti di mettere i loro privati ​​esposti al pubblico!
Questo è il vostro classico Googledork o in altre parole, una ricerca con cura artigianale che si trasforma fino risultati relativi alla configurazione negligente. Tenete presente anche che questo è ovviamente solo i risultati accessibili al pubblico, che Google ha indicizzato, quanti altri siti sono là fuori esponendo i loro registri ELMAH che semplicemente non sono state indicizzate? Dopo tutto, elmah.axd normalmente non è una risorsa pubblicizzati; Google deve sapere che è lì e richiedere esplicitamente la risorsa per l'indicizzazione.

Sfruttando il sito

Ora per la cosa interessante - sfruttando le informazioni di cui sopra di sfruttare effettivamente il sito. Lasciatemi dipingere uno scenario che mette la facilità e la praticità di questo nel contesto:
Indossando il cappello di hacker male, ho appena fatto la ricerca di Google e identificato sopra il sito che voglio sfruttare. Posso vedere dai log che il cookie ASPAUTH viene catturato quindi so che autenticazione basata su form è in uso o in altre parole, il sito ha qualcosa che si vuole proteggere. Da questa ricerca da solo c'è un buon cambiamento che ho potuto trovare un token valido ASPXAUTH da utilizzare nel mio esercizio dirottamento.
Ma cosa succede se il registro è solo utilizzando le impostazioni predefinite in memoria di storage ed è stato recentemente lavata? Oppure non ci sono errori di recente con un cookie ASPAUTH che è ancora valido? Nessun problema, solo un po 'di ingegneria sociale è necessario per contribuire a generare un nuovo messaggio di errore. Trovare informazioni di contatto per il proprietario del sito è di solito semplice, proviamo un messaggio come questo (sto assumendo @ asafaweb è il bersaglio):
Tweet socialmente engiuneering @ asafaweb fare clic su un collegamento
L'inserimento del carattere "<" nell'URL causerà la convalida della richiesta al fuoco - tutto il resto del messaggio è solo destinato a costruire un senso di urgenza (il messaggio) e di legittimità (il dominio dell'URL). Ora, naturalmente, l'utente deve essere autenticato al fine di ottenere un nuovo cookie ASPAUTH, ma è probabile che sono o già registrati o si utilizza una lunga durata di timeout per salvarle la registrazione di nuovo in Anche se non sono, un messaggio allo stesso modo artigianale con un link ad una pagina di amministrazione potrebbe facilmente prendere cura di questo.
Ora è solo una questione di guardare l'attaccante ELMAH fino a una voce del registro nuovo appare. Il cookie auth sarà simile a questa:
.ASPXAUTH=3C886BA2344099338361C921C846EAF4E02F2A88E5E7EDE6838705928F7BB7C6FF469D35FEB1532C44B81DB38F200DEE08B6ED0E6121B945C659E932D8CE8B69FFF09E7B59DBE4820873DBD7891DD6B6BC4A486F35A2F99849017A6C72D9C6A44517D9AFDC731B3A3C55596E79732806F7DDDF9F
Con la nostra cappello degli hacker, andiamo ora prendere questo valore e creare un nuovo cookie con il nome e il valore dall'alto. Questo diventa molto semplice con una estensione del browser come modificare questo cookie :
Creazione di un nuovo cookie ASPXAUTH
Potete vedere il "Log In" testo dietro la finestra di cookie in modo questo browser non è sicuramente autenticato prima di aggiungere il cookie. Ma se l'hacker invia il cookie e aggiorna la pagina:
Riuscito ad accedere come admin
E ci avete - l'hacker è loggato come amministratore! Questo non dare loro l'amministratore la password , ma li fa tutti i diritti di utente admin . A seconda del sistema, questo può dare loro i diritti per visualizzare o creare altri account, gestire i permessi, visualizzare i dati finanziari, ecc ecc Usate la vostra immaginazione.

Ma aspettate - c'è di più

Un registro pubblicamente esposto ELMAH è abbastanza grave vulnerabilità di business saggio. Non c'è solo il rischio di dirottamento di sessione come spiegato qui, ad esempio, c'è il rischio di rivelare la struttura interna del database semplicemente cercando SqlException :
Struttura del DB esposti da ELMAH
O come su un mucchio di istruzioni SQL - questo è proprio quello che si vuole ottenere un inizio grande testa su un attacco di iniezione:
Query SQL esposti da ELMAH
E che dire semplicemente cercando "password" - non hai nemmeno bisogno di guardare oltre la finestra di ricerca su alcuni di questi:
Password esposti da ELMAH
Vuoi trovare siti che utilizzano una particolare libreria in cui una zero-day è stato appena scoperto? E questo è assolutamente, positivamente solo un esempio - sono solo la raccolta di una biblioteca popolare che non sarebbero normalmente individuabile semplicemente la consultazione del sito:
I siti che utilizzano NHibernate come esposto da ELMAH
Ma naturalmente non è solo sulla ricerca di errori esistenti che potrebbero essere di interesse, una volta che un attaccante sa che un sito è di esporre i log ELMAH possono poi andare a cercare tutta una serie di altri attacchi e ottenere un feedback immediato su quello che sta succedendo internamente! Come conveniente è quello?!
Ma c'è anche tutta una serie di altri piccoli frammenti che possono venire in valore per i malvagi, URL di riferimento, percorso fisico del sito sul server, percorso fisico del sito sulla macchina dove è stato compilato (spesso macchina dello sviluppatore) , i nomi ei valori di tutti i cookies, l'indirizzo IP dei visitatori del sito e così via e così via. I registri ELMAH sono un vero e proprio tesoro di informazioni.

La protezione contro questo attacco

Questo è in realtà solo un semplice caso di controlli di accesso o in OWASP parlare, Errore di limitazione dell'accesso URL . Questo non è - e mi veramente sottolinearlo - non è una vulnerabilità di ELMAH .
Nel caso in cui i provider di appartenenze e di ruolo sono in uso, la correzione è nulla di più complesso di una semplice voce di autorizzazione in web.config:
< location path = " elmah.axd " >
  < system.web >
    < autorizzazione >
      < permettere ruolo = " Admin " />
      < negare utenti = " * " />
    </ autorizzazione >
  </ system.web >
</ location >
Ecco, niente di più. Quelle 192.000 siti dalla ricerca Googledork non hanno questo! Ognuno di questi siti è facilmente vulnerabile agli attacchi di cui sopra. Sono anche esponendo tracce dello stack interno e le variabili del server che possono portare ad attacchi di altre nature. Questa è una grave vulnerabilità di configurazione seria.
Oh, e nel caso in cui non è già evidente, protezione livello di trasporto non fa assolutamente nulla per mitigare questo rischio, significa solo un attaccante in grado di caricare i vostri dati di log sensibili tramite una connessione criptata:)

Un aiuto da ASafaWeb

In tutta onestà a quelli con i registri ELMAH pubblicamente di fronte, questo è davvero facile da sbagliare. La facilità di implementazione offre ELMAH lo rende potente e potenzialmente vulnerabili allo stesso tempo. Nel fatto che spesso la storia con NET in generale;. Caratteristiche come gli errori personalizzati e tracce dello stack può essere facilmente esposto interamente per caso.
Il mese scorso ho lanciato ASafaWeb con l'intento di fornire uno strumento gratuito per verificare facilmente per ASP.NET vulnerabilità di configurazione relativi. Oggi sono felice di aggiungere anche una scansione per l'accessibilità al pubblico di ELMAH.
Sono molto attenti a eventuali scansioni aggiungo a ASafaWeb. Di solito questo significa un'ulteriore richiesta HTTP (come è il caso della scansione ELMAH), e questi sono piccoli esercizi molto costoso in termini di durata si aggiunge a una scansione. Ma nel caso di ELMAH, la prevalenza della biblioteca combinata con l'enorme numero di siti insicuri e la facilità di implementazione rende un buon candidato da aggiungere.
Ecco come funziona: il sito ASafaWeb ti permette di collegare sia un URL (questo può essere un qualsiasi URL accessibili al pubblico) o in alternativa, eseguire una scansione contro il sito di esempio di cui ho parlato sopra e hanno evidenziato di seguito:
ASafaWeb homepage
Quando la scansione funziona, ci sono una serie di richieste HTTP al fine di testare i vari aspetti della sicurezza del sito. ASafaWeb si mostra ciò che le specifiche richieste sono state poi lo stato di ogni singola scansione. A volte più di una richiesta HTTP viene utilizzato per una scansione o una singola richiesta può essere riutilizzato attraverso scansioni multiple:
ASafaWeb richieste HTTP e scansione risultati
Cliccando sul fallimento "ELMAH log" scan salta poi noi in fondo alla pagina per i dettagli della scansione incluso il percorso con la vulnerabilità e come risolvere il problema (essenzialmente le informazioni nel post precedente):
Dettagli del fallimento ELMAH scansione in ASafaWeb
Si può collegare direttamente nel profondo la scansione del sito di prova , se volete vederlo in azione ora.

Riassunto

Nel caso in cui non ho fatto perfettamente chiaro le prime volte, questo non è un difetto in ELMAH, in realtà penso che sia uno strumento fantastico e lo uso molto in ASafaWeb:https://asafaweb.com/elmah.axd
Ops, non è possibile accedere a tale però, è possibile?! E questo è davvero il punto che sto facendo - ELMAH può essere implementato in modo sicuro e sopra tutto c'è alcun modo una raccomandazione non usarlo. Ma per favore, per favore, applicare un po 'di diligenza dovuta e bloccarlo in modo corretto.
Se si fanno scoprire i registri ELMAH erano pubblicamente visibili poi decidere di bloccare giù, c'è ancora il rischio reale che hanno già indicizzati e le versioni cache sono ancora disponibili, in effetti ho visto più volte quando si ricerca per questo post. Se siete in questo campo, si vuole prendere una buona occhiata a cosa c'è nel vostro (ora sicura) i registri ELMAH e considerare quali informazioni possono essere state esposte ed è ora ricercabili attraverso vari motori di ricerca (ricordate, non è solo Google) .