Hinweis: Der folgende Artikel hilft Ihnen dabei: Cos’è la falsificazione delle richieste intersito (CSRF)؟
Ti è mai capitato di incontrare file e collegamenti strani e sospetti? Probabilmente hai già sentito che non dovresti fare clic su tali collegamenti o scaricare file! Uno dei motivi è la vulnerabilità o il bug CSRF. CSRF sta per Cross-site request forgery, uno degli attacchi più pericolosi al lato server Boatsman Another, conosciuto anche con altri nomi, è un attacco mirato e intelligente contro siti dotati di sistema di autenticazione di cui hanno sofferto anche servizi famosi come YouTube. Di seguito introdurremo ed esamineremo questa vulnerabilità in modo più dettagliato e come prevenirla.
Cos’è una vulnerabilità CSRF?
Conosciamo il termine Cross-Sitee CSRF che sta per Cross-Site Request forgery, che significa attacchi di falsificazione di richieste. Questo bug o vulnerabilità è noto come surf in mare, XSRF, see-e-click, collegamento ostile e attacchi con un clic. Come abbiamo detto, questa vulnerabilità si trova lato server e la maggior parte dei siti Web dotati di un sistema di autenticazione, come servizi bancari, negozi online, centri educativi, ecc., soffrono di questo attacco.
In questo tipo di attacco, l’aggressore sfrutta la vulnerabilità CSRF per costringere gli utenti ad adottare; azioni che l’attaccante vuole; l’attaccante, infatti, invia la sua richiesta al server con l’aiuto dell’utente vittima. Questa vulnerabilità consente agli aggressori di aggirare la SOP (Stessa politica di origine) politiche.
Quali sono gli effetti dell’attacco CSRF?
Negli attacchi CSRF, l’aggressore può costringere l’utente vittima a compiere azioni indesiderate e, in base al livello di prestazioni dell’applicazione e al livello di accesso dell’utente vittima, può causare ulteriori danni, di cui descriveremo alcuni casi:
A livello superficiale, con l’aiuto della vulnerabilità CSRF, l’aggressore può modificare la password, l’e-mail, ecc. dell’utente vittima,
Nei siti web in cui gli utenti possono pubblicare contenuti, l’aggressore può pubblicare i contenuti desiderati con l’account della vittima.
Nelle applicazioni bancarie con questa vulnerabilità, l’aggressore può trasferire denaro con il conto e l’identità dell’utente vittima.
A seconda del livello dell’utente vittima, l’aggressore può compiere diverse azioni; ad esempio, nel caso di un utente di alto livello, può anche modificare le informazioni dell’applicazione.
Come funziona una vulnerabilità CSRF?
Affinché un attacco alla vulnerabilità CSRF sia possibile, ci sono tre condizioni critiche che prenderemo in considerazione:
Azione favorevole per l’attaccante
Alcune possibili azioni sui siti Web su alcuni dati, come la modifica di e-mail, password, ecc., sono auspicabili per gli aggressori in questo campo e hanno dei motivi per eseguirle.
Gestione della sessione basata sui cookie
L’esecuzione di alcune azioni richiede l’invio di una richiesta HTTP. Se il sito web dipende solo dai cookie per identificare l’utente e non ha altro modo per identificare e convalidare la sessione dell’utente, è possibile un attacco CSRF.
La possibilità di prevedere i parametri della richiesta
È stato detto che alcune azioni del sito Web vengono eseguite con l’aiuto dei collegamenti. I parametri della richiesta non devono essere specificati per evitare un attacco CSRF. Ad esempio, per la richiesta di cambiare giorno, l’aggressore può attaccare rapidamente se il parametro pertinente mostra la password attuale dell’utente.
Quali sono i tipi di vulnerabilità CSRF?
Le vulnerabilità CSRF sono divise in tre categorie a seconda di come vengono implementate. Naturalmente, nella maggior parte delle esposizioni, l’aggressore utilizza l’utente vittima per completare il proprio attacco con l’aiuto di tecniche di ingegneria sociale.
Scenario del metodo GET
In questo scenario, il sito web attaccato utilizza il metodo GET per operazioni critiche, come il trasferimento di denaro e la modifica delle informazioni sul conto. Questo metodo, insieme all’autenticazione basata su cookie e…, è uno dei più grandi errori che rendono vulnerabile CSRF. In questo metodo, l’aggressore utilizza tecniche di ingegneria sociale per indurre la vittima a inviare una richiesta falsa. L’aggressore intrappola la vittima con l’aiuto di codici di collegamento, tag e testi allettanti. Alla fine, l’aggressore completa il suo attacco cliccando sul collegamento desiderato, utilizzando il metodo GET e inviando una richiesta con i cookie. Per comprendere meglio questo scenario, leggere l’esempio seguente.
Esempio: in un’applicazione bancaria l’aggressore vuole depositare cinque milioni di toman sull’ipotetico numero di carta 6037 e, dopo aver determinato l’importo e il numero della carta del destinatario, fa clic sull’opzione di trasferimento e la sua richiesta viene inviata. Nel metodo GET, il codice URL ha uno schema specifico. Ad esempio, il numero della carta viene visualizzato con il modello acct, l’importo viene indicato con il parametro amount e l’autenticazione viene eseguita in base ai cookie. Pertanto, se l’aggressore inserisce il numero della carta desiderata invece del numero della carta di destinazione e la vittima accede alla pagina desiderata, l’importo verrà depositato sul conto selezionato dell’aggressore. Supponiamo che l’URL sia simile al seguente esempio:
http://bank.com/transfer.do?acct=6037&amount=3000000
Ora l’aggressore può inviare il suo falso collegamento alla vittima con le sue tecniche e il collegamento collegato e, dopo che la vittima ha cliccato sul collegamento, invia la richiesta con il metodo GET e con l’aiuto di un cookie bancario e l’importo viene depositato nell’account desiderato dell’aggressore. Un esempio è il seguente collegamento:
Naturalmente questo metodo viene utilizzato soprattutto nei casi in cui l’aggressore può inviare solo un testo e un link, come ad esempio gli SMS e la sezione commenti dei siti web. A volte, l’aggressore può utilizzare tag falsi come . In questi casi, aprendo la pagina contenente questo codice, il browser della vittima invia automaticamente al sito della banca la richiesta dell’aggressore di aprire l’immagine. La richiesta viene inviata con il metodo GET e l’utente vittima non vede il sito della banca o l’idea. In questo caso, la lunghezza e la larghezza dell’immagine sono impostate su zero. Il suo collegamento è qualcosa di simile al seguente collegamento:
Un esempio reale di un attacco CSRF nel metodo GET
Il 17 gennaio 2016, sul sito HackerOne (la famosa piattaforma Bug Bunty), un esperto di penetration testing di WeSecureApp ha depositato una segnalazione sull’esistenza di una vulnerabilità in uno dei domini relativi a Twitter denominato Shopify all’indirizzo twittercommerce. shopifyapps.com. Questo dominio è stato creato per connettere gli utenti del proprietario del negozio e la possibilità di rimuovere l’account Twitter collegato a quella piattaforma. L’esperto ha scoperto che è possibile disconnettersi dal rapporto con il metodo get e il seguente URL
Scenario del metodo POST
Si è scoperto che il metodo GET è pericoloso per azioni importanti, ma il successivo metodo POST è più sicuro contro gli attacchi, come nell’esempio precedente. Tuttavia, il metodo POST lascia anche la possibilità di abusare della vulnerabilità CSRF. Per spiegare meglio questa vulnerabilità, utilizziamo il seguente esempio:
Considera un sito web con il nome fittizio com. sito che consente agli utenti di modificare i propri indirizzi email. Quando si richiede di modificare l’e-mail, la richiesta viene inviata con un particolare pattern Http, che include tutto ciò che serve per sfruttare la vulnerabilità CSRF, come l’uso dei cookie per identificare l’utente, l’azione di modifica dell’e-mail adatta a questa tipologia di attacco e la capacità di rilevare parametri nel collegamento. ce l’ha. Ad esempio, il seguente codice:
POST /email/change HTTP/1.1 Host: Site.com Tipo di contenuto: application/x-www-form-urlencoded Lunghezza contenuto: 30 Cookie: session=yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE email= ….com
Un esempio reale di un attacco CSRF nel metodo POST
Il 9 agosto 2015 è stata segnalata una vulnerabilità csrf relativa al sito Web Instacart. Questa piattaforma, un negozio di alimentari con possibilità di acquisto online e consegna dei prodotti, dispone di mittenti di prodotti di regioni specifiche, a cui vengono assegnati gli ordini relativi a ciascuna area. L’esperto si è reso conto che il prodotto nel pannello dei mittenti con il seguente collegamento è vulnerabile agli attacchi CSRF, che con un particolare comando HTML l’aggressore potrebbe scoprire l’attività del mittente dopo l’apertura del collegamento e modificarla senza che il sito vulnerabile se ne accorga . Lo scenario di altri metodi
In altri metodi, la vulnerabilità di CSRF non è così elevata come nei due scenari precedenti. È comunque possibile, ad esempio, trasferire denaro con il metodo PUT se le informazioni sono in formato JSON e l’autenticazione avviene tramite cookie; l’aggressore può creare una sorta di comando XHR per effettuare una falsa richiesta da parte dell’utente e aprendolo nel browser, il denaro verrà trasferito automaticamente. Naturalmente questo metodo non viene solitamente utilizzato nelle applicazioni e la probabilità di vulnerabilità è molto bassa. Tuttavia, è meglio conoscerlo per modificare i filtri se necessario.
Previeni gli attacchi CSRF
Molti metodi vengono utilizzati per prevenire gli attacchi CSRF; ne esamineremo due tra i più comuni.
Token CSRF
Esistono diversi modi per prevenire gli attacchi, ma il modo più affidabile è inserire nel token CSRF richieste non valide, che devono avere determinate caratteristiche; Il token deve essere imprevedibile e casuale, avere una relazione uno a uno con la sessione dell’utente ed essere convalidato prima di qualsiasi azione. Ma un altro modo per aumentare la sicurezza, che è meglio utilizzare insieme al token CSRF, è utilizzare Samesite nei cookie della sessione utente.
Naturalmente, l’uso dei token non previene del tutto gli attacchi; Potrebbe essere interessante sapere che l’origine di molte vulnerabilità CSRF sono gli errori che si verificano nella convalida dei token CSRF. Segui l’articolo seguente per verificarne i motivi:
La convalida del token CSRF dipende dal metodo di richiesta
A volte, quando si utilizza il metodo POST, la convalida viene eseguita correttamente, ma nel metodo GET la prova non viene eseguita correttamente; In questi casi l’attaccante utilizza il metodo GET per bypassare la verifica per portare a termine il suo attacco.
La convalida del token CSRF dipende dall’esistenza del token
Su alcuni siti la verifica viene effettuata solo in presenza del ticket; In questo caso, l’aggressore bypassa la validazione rimuovendo l’intera chiave ed eseguendo un attacco CSRF.
Il token CSRF non appartiene alla sessione dello stesso utente
In alcuni casi il sito non effettua il necessario controllo dell’appartenenza del token; in questo caso il sito salva tutti i token pubblicati e accetta l’eventuale ticket esistente; In questo caso, l’aggressore esegue il suo attacco unendosi al sito, lanciando la chiave effettiva e utilizzandola come token dell’utente vittima.
Inserimento del token CSRF in un cookie diverso dal cookie di sessione
A volte il sito web inserisce il token nel cookie di sessione, ma non necessariamente nel cookie utilizzato per tracciare l’utente! Ciò è possibile quando il sito Web utilizza due framework per la protezione CSRF e la gestione delle sessioni.
Il token CSRF viene solo copiato in un cookie.
Alcuni siti Web non memorizzano i cookie emessi sul lato server, ma ogni token viene inserito nel cookie e nel parametro di richiesta. In questi casi, in fase di validazione, viene solo controllato che il valore del biglietto nel cookie e quello dell’abbonamento registrato siano uguali. In questo modo viene chiamata la soluzione di difesa (Double Submit) contro CSRF, che è ampiamente utilizzata per la sua facile implementazione.
Usa Referer per evitare CSRF.
Oltre a utilizzare un token, alcuni siti Web utilizzano l’intestazione Referer nelle richieste HTTP per difendersi dagli attacchi CSRF. Questo di solito viene fatto per garantire che le richieste vengano inviate dal loro dominio, che è facile da aggirare. Ci sono molte ragioni per cui questo metodo non fornisce una sicurezza sufficiente:
La convalida del referer dipende dalla sua intestazione
Alcuni siti Web lo convalidano solo quando l’intestazione Referer viene rimossa dalla richiesta. In questa situazione, l’aggressore può progettare il suo exploit CSRF per rimuovere l’intestazione Referer dalla richiesta. Esistono molti modi per farlo; il modo più semplice è utilizzare il META tag nella pagina HTML che ospita l’attacco CSRF.
Possibilità di bypassare la convalida del Referer!
Su alcuni siti Web, la convalida dell’intestazione Referer non viene eseguita con sufficiente attenzione e può essere aggirata. Ad esempio, supponiamo che il sito Web di destinazione controlli solo che il dominio nel referrer inizi con lo stesso ambiente valido. In questo caso l’aggressore può recuperare l’impostazione corretta come sottodominio del suo territorio e attaccare il sito web.
Cosa sono gli strumenti di rilevamento delle vulnerabilità CSRF?
Finora abbiamo appreso quali sono i tipi più comuni di vulnerabilità CSRF e alcuni modi per aumentare la sicurezza contro tali attacchi; Ma esistono strumenti per scoprire questa vulnerabilità in modo più preciso. Questi strumenti dovrebbero analizzare le richieste e le risposte come una sorta di proxy interno. Uno dei vantaggi di questi strumenti è la possibilità di modificare la richiesta e visualizzare le risposte in forma grezza. Di seguito sono riportati i nomi di alcuni strumenti di rilevamento delle vulnerabilità CSRF:
- Postino
- Suite rutto
- Violinista
In questo articolo abbiamo appreso i metodi utilizzati dagli aggressori per sfruttare la vulnerabilità CSRF in diversi modi, ad esempio GET. Inoltre, è stato affermato che i proprietari di siti Web dovrebbero prestare attenzione a tecniche come l’utilizzo dei token CSRF per aumentare la sicurezza in modo che loro e gli utenti abbiano meno problemi. Ma forse la conclusione più semplice e allo stesso tempo vitale che si ricava dalle informazioni contenute nell’articolo è quella di non fare clic su collegamenti anonimi. Da notare inoltre che conoscendo la vulnerabilità di CSRF, è possibile lavorare sui portali legati a Bugbunty e guadagnare denaro scoprendo queste vulnerabilità. Spero che l’articolo ti abbia aiutato a ottenere maggiori informazioni e ad aumentare la sicurezza. Per favore condividi i tuoi commenti e domande con noi.