ä»æã¯ã»ãã¥ãªãã£ãã¹ãã«ã€ããŠèª¬æããããã¹ã¿ãŒã«ã¬ã³ããŒããšããèšäºã§ãµã€ã¯ã«ãç¶ããŸãã å€ãã®äººã¯ã©ãããå§ããã°ãããåããããå°é£ãæããŸãã Konturã®Webã¢ããªã±ãŒã·ã§ã³ã»ãã¥ãªãã£ãã¹ã¿ãŒã§ããIvan Rumakã¯ãè匱æ§ãçºèŠããåºæ¬ãå ±æããŸããã åå¿è ã¯ãã®èšäºã§åºæ¬çãªç¥èãèŠã€ããçµéšè±å¯ãªãã¹ã¿ãŒã¯CSRFã«å¯Ÿããä¿è·ã®ãã€ãã¹ã«é¢ããã»ã¯ã·ã§ã³ã圹ç«ã€ããšã«æ°ä»ãã§ãããã
æšå¹ŽãIvanã¯Mail.ruè匱æ§æ€çŽ¢ããã°ã©ã ã§4äœã«ãªã ã Hack The World 2017ã³ã³ãã¹ãã®ããã100ã«å ¥ããŸããã
2æã«ãç§ã¯ä»²éã®ãã¹ã¿ãŒã«ââè匱æ§ãæ¢ããã»ãã¥ãªãã£ãã°ã®ãªãªãŒã¹ããã§ãã¯ããããã«æããããšã«ããŸããã ãã¬ãŒãã³ã°èšç»ãããèšäºã®éåžžã«åºæ¬çãªéšåãåãäžããŸãããéå§ããå ŽæãHTTPãšã¯äœãããŸãã1ã€ã®è匱æ§-ä¿è·ã®æ€çŽ¢ãä¿è·ããã€ãã¹ã®æ¹æ³ã«ã€ããŠå®å šãªåæãè¡ããŸããã

ã©ãããå§ããŸããïŒ
ãã®åé¡ã¯å€ãã®åå¿è ãçŽé¢ããŠããŸãã 誰ããæåã«Webã¢ããªã±ãŒã·ã§ã³ã»ãã¥ãªãã£ã³ãã¥ããã£ã§ããOWASPã«ã¢ã¯ã»ã¹ããŸãã OWASPã§åŠãã æãæçšãªããšã¯ã Webã¢ããªã±ãŒã·ã§ã³ã®æãå±éºã§äžè¬çãªè匱æ§ã®ãªã¹ãã§ã ã æå³ã®ãããã¬ãŒãã³ã°ã¯ãç§ããããã®ããããã詳现ã«ç 究ãå§ããäžæ £ããªåèªããã¹ãŠã°ãŒã°ã«ã§èª¿ã¹å§ãããšãã«å§ãŸããŸããã HTTPãããã³ã«ããã€ã¹ã®ç¥èããªããŠããæãäžè¬çãªã¯ã©ã€ã¢ã³ãã®è匱æ§ïŒCSRFãXSSïŒã調æ»ããããšã¯éåžžã«é£ããããšãæããã«ãªããŸããã
ãã®ããããã®ãããã³ã«ã®ããã€ã¹ãããŒã¿è»¢éãã©ãŒããããããã³Burpèšå®ãä»ã®ãã¹ã¿ãŒã«ââæ£ç¢ºã«æãå§ããŸããã ããã¯ããã©ãŠã¶ããã¹ãŠã®HTTPèŠæ±ãæž¡ããããã°ãããã·ã§ãã ããã§ãç·šéãåæãã¹ãã£ã³ãåéä¿¡ãã§ããŸãã
å¥ã®åªããæ å ±æºã¯ãä»ã®ããã«ãŒããã®å ¬éã¬ããŒããèªãã§åçããããšã§ãã
http://h1.nobbd.de/ãªã©ãã»ãã¥ãªãã£ãã°ã«é¢ããé瀺ãããã¡ãã»ãŒãžãéçŽãããµã€ãããããŸãã ããã§ãè匱æ§ãšã¯äœããããããã©ã®ããã«çºèŠããã修埩ãããããããããŸãã å®éã®çµéšãç©ãã«ã¯ãèªåã§ãã°ãåçŸããããšãéèŠã§ãã ãããè¡ãã«ã¯ããã©ãããã©ãŒã ã䜿çšããŠã DVWAãªã©ã®è匱æ§æ€çŽ¢ãå®è¡ã§ããŸãã
HTTPã«ã€ããŠ
ãŠãŒã¶ãŒã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ãšã®ããåããã©ã®ããã«æ©èœããããç¥ãããšã¯éåžžã«éèŠã§ãã ãããã£ãŠãã¯ã©ã€ã¢ã³ããWebãµãŒããŒãšå¯Ÿè©±ããããã®HTTPãããã³ã«ã«ã€ããŠèª¬æããŸãã ãã®äžã§ç§ãã¡ã¯èå³ããããŸãïŒ
æ¹æ³ éå§ããã«ã¯ãGETãšPOSTãåºå¥ããã ãã§ååã§ãã ã¯ãšãªã®æåã®è¡ã«ç€ºãããŸãã
GET-ãµã€ãããã³ã³ãã³ããååŸããŸãã
GET / HTTP/1.1 Host: example.com
POST-ããã«éããã®ã
POST /endpoint HTTP/1.1 Host: example.com User-Agent: Apache-HttpClient/4.5.5 (Java/1.8.0_161) Content-Type: application/x-www-form-urlencoded param1=value1¶m2=value2
URI ïŒãã¡ã€ã«ãŸãã¯ãšã³ããã€ã³ããžã®ãã¹ããªã¯ãšã¹ãã®æåã®è¡ã®ã¹ã©ãã·ã¥ã®åŸã«ç€ºãããŸãã
ããããŒ-ããã㌠ïŒãŠãŒã¶ãŒãšãŒãžã§ã³ããã³ã³ãã³ãã¿ã€ãããã¹ããªã© ä»»æã®ååãšå€ãæã€æšæºïŒAcceptãUser-Agentãªã©ïŒãšã«ã¹ã¿ã ïŒX-Auth-TokenïŒ123ãªã©ïŒããããŸãã
ã³ã³ãã³ãã¿ã€ãã«ã€ããŠ
Content-Typeã¯ããã©ã¡ãŒã¿ãŒãæ¬æã§æž¡ããããªã¯ãšã¹ãã«å¯ŸããŠæå®ããå¿ èŠããããŸãã ãã®ããããŒã¯ããªã¯ãšã¹ãã®ã³ã³ãã³ããã©ã®åœ¢åŒã§éä¿¡ãããããWebãµãŒããŒã«äŒããŸãã ããŒ3ã®ã³ã³ãã³ãã¿ã€ãïŒ
-ã¢ããªã±ãŒã·ã§ã³/ json
Content-Type: application/json {"param1":"value1","param2":"value2"}
-ã¢ããªã±ãŒã·ã§ã³/ x-www-form-urlencoded
Content-Type: application/x-www-form-urlencoded param1=value1¶m2=value2
-ããã¹ã/ãã¬ãŒã³
Content-Type: text/plain anytext{"param":123}><<>><xml>
ãµãŒããŒã«æž¡ããããã©ã¡ãŒã¿ãŒã ååãšå€ãå«ãŸããŠããŸãã URIã®åŸã«Param = valueïŒparam2 = value2ïŒparam3 = value3ã§èšè¿°ãããããContent-Typeã§æå®ããã圢åŒã§æ¬æã«èšè¿°ãããŸãã
ã¯ãã㌠ãŠãŒã¶ãŒãæ¿èªããæãäžè¬çãªæ¹æ³ã ãŠãŒã¶ãŒããµãŒãã¹ã«ãã°ã€ã³ãããšãäžæã®ããŒãäžããããŸããäžæã®ããŒã¯ãã©ãŠã¶ãŒã«ä¿åããããã®ããŒã䜿çšããŠãã¹ãŠã®HTTPèŠæ±ããã®ãµãŒãã¹ã«éä¿¡ãããŸãã ã¯ã©ã€ã¢ã³ãAãã¯ã©ã€ã¢ã³ãBã«ã¢ã¯ã»ã¹ã§ããªãããã«ããŠãŒã¶ãŒãèå¥ããããã«äœ¿çšãããŸãã
ãŠãŒã¶ãŒãUIã®ãã¿ã³ïŒãä¿åããªã©ïŒãæŒããšãã¡ãœãããURIããã©ã¡ãŒã¿ãŒãããã³Cookieãå«ããã®ãããªHTTPèŠæ±ãWebãµãŒããŒã«éä¿¡ããŸãã ãã©ãŠã¶ïŒChrome F12->ãããã¯ãŒã¯ïŒã§èª¿æ»ã®ããã«éä¿¡ãããªã¯ãšã¹ãããã£ãããã Restlet Clientãªã©ã®APIãä»ããŠã¯ã©ã€ã¢ã³ããéä¿¡ã§ããŸãã ãŸãã¯ããããã°ãããã·ïŒ Burp ãFiddlerïŒã䜿çšããŸãã
HTTPãããã³ã«ããã€ã¹ãç¥ã£ãŠããã°ãç¹å®ã®è匱æ§ã®èª¿æ»ãéå§ã§ããŸãã äŸãšããŠãç§ã¯CSRFã®è匱æ§ãåŒçšããŸã-åå¿è ãããããå§ãããšäŸ¿å©ã§ãã
CSRFã®è匱æ§ã«ã€ããŠ
CSRFïŒã¯ãã¹ãµã€ããªã¯ãšã¹ããã©ãŒãžã§ãªïŒ-è匱ãªãªãœãŒã¹ã«ãŠãŒã¶ãŒã«ä»»æã®HTTPãªã¯ãšã¹ããéä¿¡ãããæ©èœã CSRFã®è匱æ§ã¯ãã¯ã©ã€ã¢ã³ãåŽãã§ãããã®å©ãã«ãããä»ã®ãŠãŒã¶ãŒã®ã¿ãæ»æã§ããŸããããµãŒããŒãšå éšã€ã³ãã©ã¹ãã©ã¯ãã£ã¯æ»æã§ããŸããã
ãªã¯ãšã¹ãã®éä¿¡å
ã確èªããªããµãŒãã¹ã¯ããŠã§ããµã€ããŸãã¯å€éšãã¡ã€ã³ããã®è
åšã«ãããããŠããŸãã ãã®ãããªãªã¯ãšã¹ãã¯ãonloadå±æ§ãä»ããŠformã¿ã°ã䜿çšããŠéä¿¡ãããŸã-ã€ãŸã ããŒãžäžã®èŠçŽ ãããŒãããããšããã«éä¿¡ãããŸãã
<form>
ã htmlããŒãžã®ãã®ã¿ã°ã¯ãGETãŸãã¯POSTèŠæ±ãä»»æã®ãªãœãŒã¹ã«éä¿¡ããŸãã
äŸïŒ
<form name=form1 action=âhttps://example.com/sendmoneyâ method=âPOSTâ> <input type=hidden name=âamountâ value=â9999â> </form>
å±æ§ïŒ
name=âform1â
-ãã©ãŒã å
action=âhttps://example.com/testâ
ãªã¯ãšã¹ãã®éä¿¡å
method=âPOSTâ, method=âGETâ
-䜿çšããã¡ãœãã
enctype=âapplication/x-www-form-urlencodedâ
-ãªã¯ãšã¹ããéä¿¡ããContent-Type ãã®å±æ§ãæå®ããªãå Žåãããã©ã«ãã§application / x-www-form-urlencodedã«ãªããŸãã
<input>
ã¿ã°ã䜿çšããŠããã©ã¡ãŒã¿ãŒãæå®ããŸãã
ãã®å±æ§ïŒ
type=âhiddenâ
-ã¿ã€ããhiddenã䜿çšããæ¹ãã»ãšãã©åžžã«è¯ãã§ãã ãã¡ã€ã«ãã¢ããããŒãããå¿
èŠãããå ŽåãèŠæ±ã次ã®åœ¢åŒã§éä¿¡ãããã¿ã³ãå¿
èŠãªå Žåã¯type=âfileâ
䜿çšãtype=âfileâ
ïŒ type=âsubmitâ
name=âsendmoneyâ
-ãã©ã¡ãŒã¿ãŒå
value=â9999â
-ãã©ã¡ãŒã¿ãŒå€
ããŒãžã®äŸïŒ
<html><body> <form name=form1 action=âhttps://example.com/changepasswordâ method=âPOSTâ> <input type=hidden name=ânewpasswordâ value=â123456â></form> <body onload=âdocument.form1.submit()â> <!-- form1 --> </body></html>
ãã®ãããªããŒãžã«ã¢ã¯ã»ã¹ãããšããŠãŒã¶ãŒã¯ç¥ããªããã¡ã«æ¬¡ã®ãããªãã®ãéä¿¡ããŸãã
POST /changepassword HTTP/1.1 Host: example.com Content-Length: 18 Origin: https://evil.com Content-Type: application/x-www-form-urlencoded Accept: text/html, */* Cookie: auth.cookie.from.example.com=verysecret User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36 Referer: https://evil.com newpassword=123456
HTTPãªã¯ãšã¹ãã®éä¿¡å ã®ãµãŒããŒã«ãã§ãã¯ããªãå Žåãéåžžã©ããã«åŠçãããŸãã ã€ãŸã evil.comã®ãŠãŒã¶ãŒã¯cookie auth.cookie.from.example.com = verysecretã䜿çšããŠHTTPãªã¯ãšã¹ããéä¿¡ããŸããããã¯ãã©ãŠã¶ãŒã«ãã£ãŠçœ®ãæããããçŸåšã®ã»ãã·ã§ã³ã®ã³ã³ããã¹ãã§example.comã¯ãã¹ã¯ãŒãã123456ã«å€æŽããŸãã
HTMLããŒãžãããªã¯ãšã¹ããéä¿¡ããã«ã¯åŸ®åŠãªç¹ããããŸãã
1ïŒformã¿ã°ãä»ãããªã¯ãšã¹ãã®éä¿¡ã¯ãæšæºããããŒã«ãã£ãŠã®ã¿å¶éãããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ã»ãã·ã§ã³ããŒã¯ã³ãCookieã§ã¯ãªããããšãã°ãæ¿èªãªã©ã®åãªã¯ãšã¹ãã®æ¿èªããããŒãä»ããŠéä¿¡ãããå ŽåãCSRFã¯é©çšã§ããŸããã
GET /userdata HTTP/1.1 Host: example.com Accept: text/html, */* Authorization: APIKEY123123123123123123 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36 Referer: https://evil.com
2ïŒåœã®POSTãªã¯ãšã¹ãã®Content-Typeã¯ãapplication / x-www-form-urlencodedãmultipart / form-dataãŸãã¯text / plainã®ã¿ã§ãã ç¹°ãè¿ããŸãããformã¿ã°ã®å¶éã«ãããã®ã§ãã
3ïŒformã¿ã°ã䜿çšãããšãGET / POSTãªã¯ãšã¹ãã®ã¿ãéä¿¡ã§ããŸãã PUT / PATCH / DELETE / MKCOLããã³ãã®ä»ã¯ã¹ããããããŸããã
CSRFã®æ€çŽ¢æ¹æ³
ã¢ããªã±ãŒã·ã§ã³ã§äœæ¥ãããšãã«ãµãŒããŒã«éãããèŠæ±ãç£èŠããŸãã å€æŽãªã¯ãšã¹ããéžæããcsrftest.htmlãã¡ã€ã«ããformã¿ã°ãä»ããŠéä¿¡ããŠã¿ãŠãã ããã

ãµãŒããŒãéåžžã©ããcsrftest.htmlããã®ãã®ãããªãªã¯ãšã¹ããåãå ¥ããäœããå€æŽããå Žåããã°ãéå§ã§ããŸãã
äœæ¥æé ïŒ
- ã¢ããªã±ãŒã·ã§ã³ãã¯ãªãã¯ããŠããã©ãŠã¶ã³ã³ãœãŒã«ãŸãã¯ãããã°ãããã·ã§ãªã¯ãšã¹ãããã£ããããŸãã
- GETãªã¯ãšã¹ãã«ãã£ãŠäœããå€æŽãããå Žåã¯ã<img src =âãã©ã¡ãŒã¿ã䜿çšããŠãã¹ãŠã®æ¹æ³ã§â>ãšããŠhtmlããŒãžããç¹°ãè¿ããŠã¿ãŠãã ããã
- å€æŽãPOSTèŠæ±ã«ãã£ãŠçºçããCSRFã«å¯Ÿããä¿è·ããªãå Žåã¯ãformã¿ã°ã§ç¹°ãè¿ããŸãã
- ä¿è·ãããŠããå Žåã¯ãåé¿ããŠã¿ãŠãã ããã
CSRFä¿è·
formã¿ã°ãä»ããŠã¯ãã¹ãã¡ã€ã³ãªã¯ãšã¹ããéä¿¡ããäžæ¬æãªãŠãŒã¶ãŒãã身ãå®ãã«ã¯ããã®ãããªãªã¯ãšã¹ããå€éšã®ãµã€ãããéä¿¡ãããªãããã«ããŠãã ããã
ãã©ãŒã ããã®ãªã¯ãšã¹ãããµã€ãããéä¿¡ãããããšã確èªããæ¹æ³ã¯ïŒ
1ïŒãµã€ãã§è¡ãããåãªã¯ãšã¹ãã¯ãCookieããã³CSRFTokenã«ã¹ã¿ã ããããŒã§äžæã®ããŒã¯ã³ãéä¿¡ããŸãã èŠæ±ãåä¿¡ãããããã®èŠæ±ã§äœããå€æŽããåã«ãããããŒå€ãCookieã«ä¿åãããŠããå€ãšäžèŽãããã©ããã確èªããŸãã
POST /changepassword HTTP/1.1 Host: example.com CSRFToken: dadfaae9-c625-4bdf-8804-c7977d96954f Cookie: session=123123123123; CSRFToken=dadfaae9-c625-4bdf-8804-c7977d96954f Content-Type: application/x-www-form-urlencoded Content-Length: 61 newpass=123456
ãã®ä¿è·ã®æ¬ ç¹ã¯ãGETèŠæ±ã®å Žåããã®ããããŒãã»ãšãã©ã®å Žåãªãã·ã§ã³ã§ããããšã§ãã äœããå€æŽãããšã³ããã€ã³ãïŒäŸïŒ/ changepassïŒã®ã¢ããªã±ãŒã·ã§ã³ã§ãPOSTæ¬äœããURLã«ãã©ã¡ãŒã¿ãŒã転éããGETã®ãããªãªã¯ãšã¹ããäœæã§ããŸãïŒãšããã§ãHEADãšOPTIONSããã®ããã«æ©èœããŸãïŒããªã¯ãšã¹ãã¯æ©èœããŸãæ¬æ ŒçãªPOSTãšããŠã次ã®ããã«ãã®ä¿è·ãåé¿ã§ããŸãã
<img src=âhttps://example.com/changepass?newpassword=123456â>

2ïŒæåŸã®ã¢ã€ãã ãšåããCookieã®ããŒã¯ã³ã®ã¿ããã©ã¡ãŒã¿ãŒã®ããŒã¯ã³ãšæ¯èŒãããŸãã
POST /changepassword HTTP/1.1 Host: example.com Cookie: session=123123123123; CSRFToken=dadfaae9-c625-4bdf-8804-c7977d96954f Content-Type: application/x-www-form-urlencoded Content-Length: 61 newpass=123456&CSRFToken=dadfaae9-c625-4bdf-8804-c7977d96954f
ãã®ãšã³ããã€ã³ããžã®ãªã¯ãšã¹ããURLã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠGETãšããŠè¡ãããå Žåã§ããæ»æè ã®ä»ã®ãŠãŒã¶ãŒã®csrftokenãã©ã¡ãŒã¿ãŒã¯äžæã§ããããã®æ»æãæå¶ããããšã¯å¿ é ã§ãã
ããŒã¯ã³ã2ã€ã®éšåããçæãããŠããå ŽåãéçïŒããšãã°ããŠãŒã¶ãŒã®IDããã®ããã·ã¥ïŒããã³åçïŒããŒã¯ã³ãåä¿¡ãããæ¥ä»ããã®ããã·ã¥ïŒã«å¯ŸåŠããããšãã§ããŸãã ãã®åŸãéçéšåã®ã¿ã§ããŒã¯ã³ãéä¿¡ã§ããŸãã ãŸãã¯ãããŒã¯ã³ããŸã£ãã䜿çšããã«ãªã¯ãšã¹ããéä¿¡ãããšãFacebookã«ã¯ãã®ãããªãã°ããããŸããïŒ https://amolnaik4.blogspot.ru/2012/08/facebook-csrf-worth-usd-5000.html ïŒã
3ïŒåãªã¯ãšã¹ãã®Content-Typeã¯ãformã¿ã°ã§ãµããŒããããŠãããã®ãšç°ãªãå¿ èŠããããŸãïŒurlencodedãtext / plainãmultipart / form-dataïŒã
ããã¯ãCookieãã«ã¹ã¿ã ããããŒãããã³URLã®ãã©ã¡ãŒã¿ãŒã®äž¡æ¹ã§ãŠãŒã¶ãŒèªèšŒãå¯èœãªå ŽåãCSRFããAPIãä¿è·ããããã®è¯ãæ¹æ³ã§ãã
ãµã€ãã®ã«ãŒãã«äžé©åã«èšå®ãããcrossdomain.xmlãããå ŽåãFlashãä»ããŠããŠãŒã¶ãŒã«ä»»æã®Content-Typeã§ãªã¯ãšã¹ããéä¿¡ãããããšãã§ããŸãã 詳现ãªFlashèšäºã¯ãã¡ãã§ãã
4ïŒåããµã€ãCookieã Cookieãã©ã°ãhttponlyã§ã®èªèšŒäžã«èšå®ããããã©ãŠã¶ããããã®Cookieãå±ããŠããªãå·ŠåŽã®ãµã€ãããCookieãéä¿¡ããããšãèš±å¯ããŸããã ã¯ãŒã«ã§ããããã¹ãŠã®ãã©ãŠã¶ããã®ãã©ã°ããµããŒãããŠããããã§ã¯ãããŸããã Originã®ãã§ãã¯ã«ã€ããŠãåãããšã§ããã¯ãŒã«ã§åäœããŸããããã¹ãŠã®ãã©ãŠã¶ãã¯ãã¹ãã¡ã€ã³ãªã¯ãšã¹ãã«å¯ŸããŠOriginãæ£ããéä¿¡ãããšã¯éããŸããã
ä»ãããã§ãã¯ïŒ
-ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãPOSTãªã¯ãšã¹ãã«CSRFã«å¯Ÿããä¿è·ããããŸãã
-ä¿è·ãã«ã¹ã¿ã ããããŒã®ããŒã¯ã³ãšCookieã®ããŒã¯ã³ã«åºã¥ããŠæ§ç¯ãããŠããå ŽåãPOSTãšããŠéä¿¡ãããæ©å¯ã¢ã¯ã·ã§ã³ïŒãã¹ã¯ãŒãã®å€æŽãçµç¹ã§ã®è¿œå ãŠãŒã¶ãŒã®äœæãééïŒã¯ãURLã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠGETã«å€æã§ããŸããããã£ããã³ã·ã¹ãã ã®å€æŽïŒ200 OKã201 CREATED ...ïŒã PUT / PATCHãPOSTãŸãã¯GETã«å€æããããšã«äŒŒãŠããŸãã
-æ©å¯æ§ã®é«ãã¢ã¯ã·ã§ã³ããContent-TypeïŒapplication / jsonãã§éä¿¡ãããCSRFã«å¯Ÿããä¿è·ããã®äžã«ã®ã¿æ§ç¯ãããŠããå Žåãapplication / x-www-form-urlencodedãmultipart / form-dataãtext /ã®åœ¢åŒã§æ¬æãå«ããªã¯ãšã¹ããéä¿¡ããŠã¿ãŠãã ãããã¬ãŒã³ã æåããå Žåã¯ãã€ã³ã¿ãŒãããäžã®å·ŠåŽã®ãµã€ããã<form>
ã䜿çšããŠç¹°ãè¿ããŸãã
-ãµã€ãã®ã«ãŒããã£ã¬ã¯ããªã«ã¯ãäžé©åã«èšå®ãããcrossdomain.xmlã¯ãããŸãããããã¯ãFlashã䜿çšããã¯ãã¹ãã¡ã€ã³ãªã¯ãšã¹ãçšã®ãã¡ã€ã«ã§ãã ïŒexample.com/crossdomain.xmlïŒã ãæªãããšã¯ãã¯ãã¹ãã¡ã€ã³ãªã¯ãšã¹ããä»»æã®ãµã€ãããèªåã®ãµã€ãã«éä¿¡ã§ããå Žåã§ãããcrossdomain.xmlã§ã©ã®ãã¡ã€ã³ãšã©ã®ãªã¯ãšã¹ããå®è¡ã§ããããæ瀺çã«èšè¿°ãããŠããŸãã
ãŸãšã
ããã§ãã»ãã¥ãªãã£ãã¹ãã®åºæ¬äºé ãšããããã¯ãæ·±ãããããã®æ å ±ãå ¥æã§ããå Žæãããã£ãã®ã§ãCSRFã§ãããžã§ã¯ãã確èªããHTTPãç解ã§ããŸãã
次ã¯ïŒ æ°ããã¿ã€ãã®è匱æ§ãåŠã³ããããžã§ã¯ãã§ããããæ¢ããããããæé€ããŸãã äžç·ã«ãªã£ãŠãã€ã³ã¿ãŒããããããå®å šã«ããŸãïŒ
䟿å©ãªãªã³ã¯
- hacerkoneããã®ãããªãã¯ã»ãã¥ãªãã£ãã°ã¬ããŒãã®ããŒã¿ããŒã¹ ã CSRFãšããåèªã«é¢ããã¬ããŒããæ€çŽ¢ããŠãããŸããŸãªå€§äŒæ¥ã§èŠã€ãã£ããã®ã確èªã§ããŸãã
- å®å šé»å ±ãã£ãã«
ã«ã¬ã³ããŒèšäºã®ãªã¹ãïŒ
å¥ã®ã¢ãããŒããè©ŠããŠãã ãã
åççãªãã¢ãã¹ã
ãã£ãŒãããã¯ïŒçºçæ¹æ³
ãã¹ããæé©åãã
æ¬ãèªã
åæãã¹ã
ãã¹ã¿ãŒã¯ãã°ããã£ããããCanerãèªã¿ã移åãæŽçããå¿
èŠããããŸãã
ããŒããµãŒãã¹
QAãµãŒãã¹ã¡ããªãã¯
ã»ãã¥ãªãã£ããã¹ããã
顧客ãç¥ã
ããã¯ãã°ãåã