Cross-site request forgery

De la Viquipèdia, l'enciclopèdia lliure


La falsificació de sol·licituds entre llocs web, també coneguda com a atac d'un sol clic o conducció de sessió i abreujada com a CSRF (de vegades pronunciat sea-surf [1]) o XSRF, és un tipus d'explotació maliciosa d'un lloc web o aplicació web on s'envien ordres no autoritzades. d'un usuari en el qual l'aplicació web confia.[2] Hi ha moltes maneres en què un lloc web maliciós pot transmetre aquestes ordres; Les etiquetes d'imatge especialment dissenyades, els formularis ocults i la recuperació de JavaScript o les sol·licituds XMLHttp, per exemple, poden funcionar sense la interacció de l'usuari o fins i tot sense el coneixement. A diferència del cross-site scripting (XSS), que aprofita la confiança que té un usuari per a un lloc determinat, CSRF aprofita la confiança que té un lloc en el navegador d'un usuari.[3] En un atac CSRF, un usuari final innocent és enganyat per un atacant perquè enviï una sol·licitud web que no tenia la intenció. Això pot provocar que es realitzin accions al lloc web que poden incloure la filtració inadvertida de dades del client o del servidor, el canvi de l'estat de la sessió o la manipulació del compte d'un usuari final.

El terme "CSRF" també s'utilitza com a abreviatura en defenses contra atacs CSRF, com ara tècniques que utilitzen dades de capçalera, dades de formularis o galetes, per provar i prevenir aquests atacs.

Característiques[modifica]

En un atac CSRF, l'objectiu de l'atacant és provocar que una víctima innocent enviï sense saber-ho una sol·licitud web feta de manera malintencionada a un lloc web al qual la víctima tingui accés privilegiat. Aquesta sol·licitud web es pot elaborar per incloure paràmetres d'URL, galetes i altres dades que semblen normals per al servidor web que processa la sol·licitud. Es troben en risc les aplicacions web que realitzen accions basades en l'entrada d'usuaris de confiança i autenticats sense requerir que l'usuari autoritzi (per exemple, mitjançant una confirmació emergent) l'acció específica. Un usuari que s'autentica mitjançant una galeta desada al navegador web de l'usuari podria enviar sense saber-ho una sol·licitud HTTP a un lloc que confia en l'usuari i, per tant, provocar una acció no desitjada.Una propietat general dels navegadors web és que inclouran automàticament i de manera invisible les galetes (incloses les de sessió i altres) utilitzades per un determinat domini en qualsevol sol·licitud web enviada a aquest domini. Aquesta propietat s'aprofita per atacs CSRF. En el cas que un usuari sigui enganyat perquè enviï una sol·licitud inadvertidament a través del seu navegador, aquestes galetes incloses automàticament faran que la sol·licitud falsificada sembli real al servidor web i realitzarà totes les accions demanades adequadament, com ara retornar dades, manipular l'estat de la sessió o fer canvis al compte de la víctima.

Perquè un atac CSRF funcioni, un atacant ha d'identificar una sol·licitud web reproduïble que executi una acció específica, com ara canviar la contrasenya d'un compte a la pàgina de destinació. Un cop identificada aquesta sol·licitud, es pot crear un enllaç que generi aquesta sol·licitud maliciosa i aquest enllaç es pot incrustar en una pàgina sota el control de l'atacant.[4][5] Aquest enllaç es pot col·locar de tal manera que ni tan sols sigui necessari que la víctima faci clic a l'enllaç. Per exemple, pot estar incrustat dins d'una etiqueta d'imatge html en un correu electrònic enviat a la víctima que es carregarà automàticament quan la víctima obri el seu correu electrònic. Un cop la víctima hagi fet clic a l'enllaç, el seu navegador inclourà automàticament les cookies utilitzades per aquest lloc web i enviarà la sol·licitud al servidor web. El servidor web no podrà identificar la falsificació perquè la sol·licitud l'ha fet un usuari que s'ha iniciat sessió i ha enviat totes les cookies necessàries.

Una pàgina de la National Vulnerability Database que descriu una vulnerabilitat CSRF

La falsificació de sol·licituds entre llocs és un exemple d'atac adjunt confús contra un navegador web perquè un atacant amb menys privilegis l'enganya perquè enviï una sol·licitud falsificada.

CSRF té habitualment les característiques següents:

  • Implica llocs que es basen en la identitat d'un usuari.
  • Aprofita la confiança del lloc en aquesta identitat.
  • Enganya el navegador de l'usuari perquè enviï sol·licituds HTTP a un lloc objectiu on l'usuari ja està autenticat.
  • Implica sol·licituds HTTP que tenen efectes secundaris.

Història[modifica]

Les vulnerabilitats de CSRF Token es coneixen i en alguns casos s'exploten des del 2001.[6] Com que es realitza des de l'adreça IP de l'usuari, alguns registres del lloc web poden no tenir proves de CSRF.[7] Les explotacions estan poc informades, almenys públicament, i a partir de 2007 [8] hi havia pocs exemples ben documentats:

  • El lloc web de Netflix l'any 2006 tenia nombroses vulnerabilitats a CSRF, que podrien haver permès a un atacant realitzar accions com ara afegir un DVD a la cua de lloguer de la víctima, canviar l'adreça d'enviament del compte o alterar les credencials d'inici de sessió de la víctima per comprometre completament el compte..
  • L'aplicació web de banca en línia d'ING Direct era vulnerable a un atac CSRF que permetia transferències il·lícites de diners.
  • El popular lloc web de vídeos YouTube també va ser vulnerable a CSRF el 2008 i això va permetre que qualsevol atacant pogués dur a terme gairebé totes les accions de qualsevol usuari.
  • McAfee Secure també era vulnerable a CSRF i va permetre als atacants canviar el sistema de la seva empresa. Això es soluciona en les versions més noves.

Referències[modifica]

  1. Shiflett, Chris. «Security Corner: Cross-Site Request Forgeries» (en anglès). php|architect (via shiflett.org), December 13, 2004. [Consulta: 3 juliol 2008].
  2. Ristic, Ivan. Apache Security (en anglès). O'Reilly Media, 2005, p. 280. ISBN 0-596-00724-8. 
  3. «What is Cross-Site Request Forgery (CSRF) and How Does It Work? | Synopsys» (en anglès).
  4. Shiflett, Chris. «Security Corner: Cross-Site Request Forgeries» (en anglès). php|architect (via shiflett.org), December 13, 2004. [Consulta: 3 juliol 2008].
  5. «What is CSRF (Cross-site request forgery)? Tutorial & Examples» (en anglès). portswigger.net. [Consulta: 4 novembre 2019].
  6. Burns, Jesse. «Cross Site Request Forgery: An Introduction To A Common Web Weakness» (en anglès). Information Security Partners, LLC. Arxivat de l'original el 2013-01-21. [Consulta: 12 desembre 2011].
  7. Ristic, Ivan. Apache Security (en anglès). O'Reilly Media, 2005, p. 280. ISBN 0-596-00724-8. 
  8. Christey, Steve. «Vulnerability Type Distributions in CVE (version 1.1)» (en anglès). MITRE Corporation, May 22, 2007. [Consulta: 7 juny 2008].