CSRF (Cross-Site Request Forgery): Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
 
(16 intermediate revisions by the same user not shown)
Line 11: Line 11:


== Ajalugu ==
== Ajalugu ==
CSRF nõrkused ja esimesed rünnakud selles valdkonnas on teada alates 2001.aastast. Rünnakuid on avalikult registreeritud 2007.aastast. 2008.aastal varastati CSRF ründega 18 miljoni eBay kasutaja isikuandmed. Teine suurem rünnak toimus sellel aastal veel, kui Mehhiko panga kliendid suunati emailist saadud pildi lingi kaudu võltsitud veebilehele, mis teeskles panka.
CSRF nõrkused ja esimesed rünnakud selles valdkonnas on teada alates 2001.aastast. Rünnakuid on avalikult registreeritud 2007.aastast. Sama aasta alguses leiti CSRF auk Gmailist, mida ära kasutades sai ligipääsu kõikidele konto kontaktidele. Google'il oli URL, mille laadimisel sai tulemuseks JavaScripti koodi kõigi
sisseloginud kasutaja kontaktidega.  


2008.aastal varastati CSRF ründega 18 miljoni eBay kasutaja isikuandmed. Teine suurem rünnak toimus sellel aastal veel, kui Mehhiko panga kliendid suunati emailist saadud pildi lingi kaudu võltsitud veebilehele, mis teeskles panka.


== CSRF tüüpi ründed ==
== CSRF tüüpi ründed ==
Ründaja loob võltsitud HTTP päringuid ja petab ohvrit neid kasutama pildi tag'ide, XSS-i ja paljude teiste moodustega. Kui kasutaja on autenditud, siis rünnak õnnestub.
Ründaja loob võltsitud HTTP päringuid ja petab ohvrit neid kasutama pildi tag'ide, XSS-i ja paljude teiste moodustega. Kui kasutaja on autenditud, siis rünnak õnnestub.


CSRF kasutab ära seda, et enamik veebirakendusi lubavad ründajatel ennustada kindlate tegevuste detaile. Kuna brauserid saadavad volitusi nagu sessiooni ''cookies'i' automaatselt, siis ründajad saavad luua pahatahtlike veebilehekülgi, mis on eristamatud õigetest veebilehekülgedest.
CSRF kasutab ära seda, et enamik veebirakendusi lubavad ründajatel ennustada kindlate tegevuste detaile. Kuna brauserid saadavad volitusi nagu sessiooni ''cookies'i'' automaatselt, siis ründajad saavad luua pahatahtlike veebilehekülgi, mis on eristamatud õigetest veebilehekülgedest.


CSRF nõrkuste avastamiseks saab kasutada koodi testimist ja analüüsi, kuid sealt vigade leidmine on raskem kui  SQL injection ja XSS rünnete puhul, sest nende tuvastamiseks on erinevaid rakendusi ja tööriistu.
CSRF nõrkuste avastamiseks saab kasutada koodi testimist ja analüüsi, kuid sealt vigade leidmine on raskem kui  SQL injection ja XSS rünnete puhul, sest nende tuvastamiseks on erinevaid rakendusi ja tööriistu.
Detection of CSRF flaws is fairly easy via penetration testing or code analysis.


[[File:Csrf1.png]]


''Allikas:'' ''https://wiki.itcollege.ee/images/a/a1/Csrf1.png''


== Näited CSRF rünnetest ==
== Näited CSRF rünnetest ==
<source lang="sql">
<source lang=html4strict>


'OR''='
Ohvri kontolt kantakse raha ründaja kontole
<img src="'''http://example.com/app/transferFunds? amount=1500&destinationAccount=attackersAcct#'''“ width="0" height="0" />


' UNION SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES;# --
Kustutakse kasutaja andmeid
<img src="'''http://www.mysite.org/do?action=delete&itemID=344'''" />


' UNION SELECT user_login,user_pass FROM wp.wp_users; #
Muudetakse kasutaja andmeid
<iframe src="'''http://www.georgesrecipes.com/edit.php'''" />


' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '%w%') AND ''=' //(Kas eksisteerib täht w)
Kustutatakse kasutaja andmeid
<script src="'''http://www.mysite.org/do?action=delete&itemID=344'''"></script>


' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '__w%') AND ''=' //(Kas täht w on paroolis kolmandal kohal)
' OR EXISTS(SELECT 1 FROM dual WHERE database() LIKE '%j%') AND ''=' //(Kas valitud andmebaas sisaldab tähte J)
' OR EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='one') AND ''=' //(Kas tabel one asub andmebaasis test)
' OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE '%j%')>1 AND ''=' //(Kas on rohkem kui üks tabel andmebaasis, sialdades tähte J)


</source>
</source>




== Kaitse Cross-site request forgery rünnete vastu ==


[[File:Gsql1test.PNG‎]]
CSRF rünnete eest kaitsmiseks on tavaliselt vaja ettearvamatu stringi(CSRF token) lisamist igasse HTTP taotlusesse. Lisaks peaksid need stringid olema unikaalsed igal kasutajal sessiooni kohta. Samas XSS viga võimaldab CSRF token kaitsest mööda minna.
 
''Allikas:'' ''https://wiki.itcollege.ee/images/1/1b/Gsql1test.PNG''
 
Ründe sooritamine
 
 
[[File:Gsql1testtulem.PNG]]
 
''Allikas:'' ''https://wiki.itcollege.ee/index.php/File:Gsql1testtulem.PNG''
 
Väljavõte ründest


1. Unikaalse stringi lisamine peidetud väljale, mis takistab pahatahtlikke lisamisi URL-ile.


== Kaitse Cross-site request forgery rünnete vastu ==
2. Unikaalse stringi lisamine URL-i või URL-i parameetrile, aga see jätab siiski ohu, et URL paljastatakse ründajale.
 


3. Kasutaja peab peab uuesti autentima ennast või tõestama, et ta on kasutaja, kui tahetakse teha mingeid ülekandeid(nt CAPTCHA abil)


4. XSS vigade kõrvaldamine


== Kokkuvõte ==
CSRF rünnakud on OWASP poolt asetatud kaheksandale kohale ohtlikuse suhtes. Esimesed rünnakud on teada aastast 2001, kuid alates 2007. aastast hakati neid registreerima. CSRF rünnaku puhul suunatakse lingi, pildi jne kaudu kasutaja võltsitud lehele, mis näeb üldjuhul välja identne õige lehega ning samal ajal kasutatakse, muudetakse või kustutatakse ohvri andmeid. Peamisteks kaitseteks rünnaku vastu on CSRF tokeni kasutamine, koodi testimine, kasutaja uuesti autentimine ning POST-meetodi kasutamine.


== Kasutatud kirjandus ==
== Kasutatud kirjandus ==
Line 72: Line 66:
*http://en.wikipedia.org/wiki/Cross-site_request_forgery
*http://en.wikipedia.org/wiki/Cross-site_request_forgery


*https://www.google.ee/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CDMQFjAB&url=http%3A%2F%2Fwww.cs.tlu.ee%2Fteemaderegister%2Fget_file.php%3Fid%3D95&ei=IVt6U9qRGNS0yQP1oIDICA&usg=AFQjCNG7ixUkTXmtpsOnCaJKbiewZJRMvA&sig2=Mciv2Z9NySuEcqagekiwqA&bvm=bv.66917471,d.bGQ
*www.cs.tlu.ee/teemaderegister/get_file.php?id=95
 
*https://wiki.itcollege.ee/index.php/GreenSQL
 


[[Category:IT_infrastruktuuri_teenused]]
[[Category:IT_infrastruktuuri_teenused]]

Latest revision as of 16:40, 21 May 2014

Autor

Nimi: Tiina Ollema
Rühm: A21 (2013/2014)

Sissejuhatus

OWASP (Open Web Application Security Project) on Cross-site request forgery ründed liigitanud 2013 Top10 seisuga kaheksandale kohale.

Cross-site request forgery, tuntud ka kui one-click rünne või sessioon ärandamine on rünne, mille käigus kasutatakse ära veebilehe usaldust kasutaja vastu ning petetakse laadima veebilehte, mis annab võimaluse ründajal tegutseda kasutaja nimel ja õigustega ning muutusi vastavas süsteemis.


Ajalugu

CSRF nõrkused ja esimesed rünnakud selles valdkonnas on teada alates 2001.aastast. Rünnakuid on avalikult registreeritud 2007.aastast. Sama aasta alguses leiti CSRF auk Gmailist, mida ära kasutades sai ligipääsu kõikidele konto kontaktidele. Google'il oli URL, mille laadimisel sai tulemuseks JavaScripti koodi kõigi sisseloginud kasutaja kontaktidega.

2008.aastal varastati CSRF ründega 18 miljoni eBay kasutaja isikuandmed. Teine suurem rünnak toimus sellel aastal veel, kui Mehhiko panga kliendid suunati emailist saadud pildi lingi kaudu võltsitud veebilehele, mis teeskles panka.

CSRF tüüpi ründed

Ründaja loob võltsitud HTTP päringuid ja petab ohvrit neid kasutama pildi tag'ide, XSS-i ja paljude teiste moodustega. Kui kasutaja on autenditud, siis rünnak õnnestub.

CSRF kasutab ära seda, et enamik veebirakendusi lubavad ründajatel ennustada kindlate tegevuste detaile. Kuna brauserid saadavad volitusi nagu sessiooni cookies'i automaatselt, siis ründajad saavad luua pahatahtlike veebilehekülgi, mis on eristamatud õigetest veebilehekülgedest.

CSRF nõrkuste avastamiseks saab kasutada koodi testimist ja analüüsi, kuid sealt vigade leidmine on raskem kui SQL injection ja XSS rünnete puhul, sest nende tuvastamiseks on erinevaid rakendusi ja tööriistu.

Allikas: https://wiki.itcollege.ee/images/a/a1/Csrf1.png

Näited CSRF rünnetest

Ohvri kontolt kantakse raha ründaja kontole
<img src="'''http://example.com/app/transferFunds? amount=1500&destinationAccount=attackersAcct#'''“ width="0" height="0" />

Kustutakse kasutaja andmeid
<img src="'''http://www.mysite.org/do?action=delete&itemID=344'''" />

Muudetakse kasutaja andmeid
<iframe src="'''http://www.georgesrecipes.com/edit.php'''" />

Kustutatakse kasutaja andmeid
<script src="'''http://www.mysite.org/do?action=delete&itemID=344'''"></script>


Kaitse Cross-site request forgery rünnete vastu

CSRF rünnete eest kaitsmiseks on tavaliselt vaja ettearvamatu stringi(CSRF token) lisamist igasse HTTP taotlusesse. Lisaks peaksid need stringid olema unikaalsed igal kasutajal sessiooni kohta. Samas XSS viga võimaldab CSRF token kaitsest mööda minna.

1. Unikaalse stringi lisamine peidetud väljale, mis takistab pahatahtlikke lisamisi URL-ile.

2. Unikaalse stringi lisamine URL-i või URL-i parameetrile, aga see jätab siiski ohu, et URL paljastatakse ründajale.

3. Kasutaja peab peab uuesti autentima ennast või tõestama, et ta on kasutaja, kui tahetakse teha mingeid ülekandeid(nt CAPTCHA abil)

4. XSS vigade kõrvaldamine

Kokkuvõte

CSRF rünnakud on OWASP poolt asetatud kaheksandale kohale ohtlikuse suhtes. Esimesed rünnakud on teada aastast 2001, kuid alates 2007. aastast hakati neid registreerima. CSRF rünnaku puhul suunatakse lingi, pildi jne kaudu kasutaja võltsitud lehele, mis näeb üldjuhul välja identne õige lehega ning samal ajal kasutatakse, muudetakse või kustutatakse ohvri andmeid. Peamisteks kaitseteks rünnaku vastu on CSRF tokeni kasutamine, koodi testimine, kasutaja uuesti autentimine ning POST-meetodi kasutamine.

Kasutatud kirjandus

  • www.cs.tlu.ee/teemaderegister/get_file.php?id=95