°ÙÀÖ²©ADLab£ºCPU¡°ÓÄÁ顱Îó²îÆÊÎöÓëÑéÖ¤
Ðû²¼Ê±¼ä 2018-01-081 ǰ ÑÔ
¿ËÈÕ£¬£¬£¬£¬CPUµ×²ãÎó²îÇå¾²ÊÂÎñÒѾ²¨¼°È«ÇòÏÕЩËùÓеÄÊÖ»ú¡¢µçÄÔ¡¢ÔÆÅÌËã²úÆ·¡£¡£¡£¡£Õâ´ÎµÄÎó²î»®·ÖÆðÃûMeltdown(Íß½â)ºÍSpectre(ÓÄÁé)¡£¡£¡£¡£ÕâÁ½¸öÎó²î¿ÉÄÜ»áÔì³ÉÊܱ£»£»£»£»£»¤µÄÃÜÂë¡¢Ãô¸ÐÐÅϢй¶¡£¡£¡£¡£
°ÙÀÖ²©ADLabÔÚÈý´ó²Ù×÷ϵͳ(windows¡¢macos¡¢linux)£¬£¬£¬£¬Ñé֤װ±¸£¨°üÀ¨Ð¡ÎÒ˽¼Ǫ̀ʽµçÄÔ¡¢Ìõ¼Ç±¾¼°Ð§ÀÍÆ÷×°±¸£©ÉÏÍê³ÉÁË¡°ÓÄÁ顱Îó²îÑéÖ¤ÊÂÇé¡£¡£¡£¡£
±¾ÎÄÖØµã¶Ô¡°ÓÄÁ顱Îó²îµÄÎó²îµÄÔÀí¡¢Îó²îÑéÖ¤¡¢Î£º¦¼°·À»¤¾ÙÐÐÏÈÈÝ¡£¡£¡£¡£
2 Îó²îÔÀí
ÓÉÓÚ¸ßËÙCPUºÍµÍËÙÄÚ´æÖ®¼äµÄI/OÆ¿¾±£¬£¬£¬£¬ÏÖ´ú´¦Öóͷ£Æ÷»áʹÓÃÁ÷Ë®ÏßÊÖÒÕÌá¸ßÐÔÄÜ£¬£¬£¬£¬Í¨¹ýÕ¹ÍûÏÂÒ»²½ÒªÖ´ÐеÄÖ¸Áî²¢Ìáǰ°ÑÕâЩָÁî·ÅÔÚÁ÷Ë®ÏßÉÏ£¬£¬£¬£¬ÒÔÌá¸ßËÙÂÊ¡£¡£¡£¡£¿ÉÊÇÈôÊdzÌÐòÓзÖÖ§Ìø×ªµÄ»°£¬£¬£¬£¬ÕâЩÁ÷Ë®ÏßÉϵÄԤȡµÄÖ¸ÁËùÓÐ×÷·Ï, CPUÐèÒªÇå¿ÕËùÓеÄÖ¸Áî, È»ºó¼ÓÔØÖÀÖеصãµÄÖ¸Á£¬£¬£¬ÔÙ½«ºóÐøÖ¸Áî¼ÓÔØÔËÐС£¡£¡£¡£
ÈôÊdzÌÐòÓÐ10¸ö·ÖÖ§µÄ»°£¬£¬£¬£¬ÄÇôÁ÷Ë®ÏßÉÏԤȡµÄÖ¸ÁîÖ»Óкܵ͵ĸÅÂÊ£¨1/10£©»áÖÀÖС£¡£¡£¡£Òò´ËCPUÐèÒªÒ»ÖÖÕ¹ÍûÊÖÒÕÀ´Ìá¸ßÁ÷Ë®ÏßԤȡָÁîµÄÖÀÖÐÂÊ£¬£¬£¬£¬ÕâÒ»ÊÖÒÕ±»³ÆÎªCPU·ÖÖ§Õ¹ÍûÊÖÒÕ¡£¡£¡£¡£
CPU·ÖÖ§Õ¹ÍûÊÖÒÕÓÉCPU¶ÔÀúÊ·Ö¸ÁîµÄÖ´ÐÐÇéÐξÙÐж¯Ì¬ÆÊÎöºÍѧϰ£¬£¬£¬£¬²¢¾ÙÐÐÕ¹Íû¡£¡£¡£¡£ÔÚ¸ßÐÔÄÜÅÌËã»úÖУ¬£¬£¬£¬CPU·ÖÖ§Õ¹ÍûµÄÀֳɸÅÂÊÔÚ95%~98%Ö®¼ä£¬£¬£¬£¬Õâ´ó´óÌá¸ßÁËÅÌËã»úµÄÔËËãÐÔÄÜ¡£¡£¡£¡£Intel¹«Ë¾ÔÚ1995Äê±¼ÌÚϵÁÐCPUÆð¾ÍÒѾ½ÓÄÉCPUÁ÷Ë®Ïß¼°·ÖÖ§Õ¹ÍûÊÖÒÕ£¬£¬£¬£¬ÏÖÔÚÖ÷Á÷µÄ¸ßÐÔÄÜCPU¶¼½ÓÄÉÕâЩÊÖÒÕ¡£¡£¡£¡£
ÈôÊÇCPU·ÖÖ§Õ¹ÍûµÄÖ´Ðз¾¶²»×¼È·£¬£¬£¬£¬ØÊºóÔÚÁ÷Ë®ÏßÉÏÎóÅв¢Ô¤È¡µÄÖ¸Áî×îÖÕ²¢²»»áÏÖʵִÐУ¬£¬£¬£¬¿ÉÊÇΪÁËÌá¸ßÐÔÄܵÄÐèÒª£¬£¬£¬£¬Á÷Ë®ÏßÖ´Ðп¢Êºó²¢Ã»ÓжÔËùÓÐÔ¤ÅÐÖ´ÐеÄÏÖ³¡×öÍêÈ«»Ø¹ö£¬£¬£¬£¬TLB»ò»º´æ×´Ì¬²¢Ã»Óб»»Ø¹ö£¬£¬£¬£¬Õâ¾ÍÒýÈëÁËÇå¾²ÎÊÌâ¡£¡£¡£¡£
ÔÚÅÌËã»úϵͳÖлº´æÊÇCPUÔÚÖ´ÐгÌÐòÔËÐÐʱ¹²ÏíµÄÇøÓò£¬£¬£¬£¬¹¥»÷Õßͨ¹ýÅÔ·¹¥»÷(Side Channel Attack)µÄ·½·¨»ñÈ¡µ½»º´æµÄÄÚÈÝ¡£¡£¡£¡£
ÈôÊǹ¥»÷ÕßÄÜ´¥·¢Ê¹ÓÃÖ´ÐÐÈ¥»á¼ûÖ¸¶¨µÄÃô¸ÐÊý¾ÝÇøÓòµÄ»°£¬£¬£¬£¬¾Í¿ÉÄܶÁÈ¡µ½Ô±¾ÊÇÆäËüÓû§»ò¸ü¸ßÌØÈ¨µÄÃô¸ÐÊý¾Ý¡£¡£¡£¡£
¸ü½øÒ»²½µÄCPU·ÖÖ§Õ¹ÍûµÄÀú³ÌÊÇ¿ÉÒÔ±»Í¨Ë×ȨÏ޵ĶñÒâ³ÌÐòÓ°ÏìµÄ£¬£¬£¬£¬¹¥»÷Õß¿ÉÒԽṹ³öÀàËÆROP£¨Return-oriented Programming£©¹¥»÷µÄÂ߼ȥӰÏìCPUµÄ·ÖÖ§Õ¹ÍûÀú³Ì¡£¡£¡£¡£
ʹÓøÃÎó²î¿ÉÒÔÓÐÒÔÏÂÈýÖÖ¹¥»÷³¡¾°£º
CVE-2017-5753(ÈÆ¹ýÄÚ´æ¸ôÀë½çÏß¼ì²é)£ºÍ¨¹ý¶ñÒâ´úÂëÎÛȾ·ÖÖ§Õ¹Íû£¬£¬£¬£¬À´ÈƹýÄں˻òÐéÄâ»úµÄÄڴ湤¾ß½çÏß¼ì²â¡£¡£¡£¡£ºÃ±Èͨ¹ý½á¹¹µÄ¶ñÒâ´úÂëÀ´´¥·¢ÓÐÔ½½çµÄÊý¾Ýϱ꣬£¬£¬£¬Ôì³ÉÄÚ´æÔ½½ç»á¼û£¬£¬£¬£¬ÓÉÓÚÕâ¸ö»á¼û²Ù×÷ÊÇÓÉCPU×Ô¼ºÍê³ÉµÄ£¬£¬£¬£¬Äں˻òÐéÄâ»úµÄ·À»¤ÎÞ·¨Æðµ½×÷Óᣡ£¡£¡£
CVE-2017-5715(·ÖÖ§Ä¿µÄ×¢Èë)£º ÎÛȾ·ÖÖ§Õ¹Íû¡£¡£¡£¡£ÔÚ´óÐÍÈí¼þϵͳÈçä¯ÀÀÆ÷µÈÈí¼þ£¬£¬£¬£¬¸ß¶ÈÁýͳģ×ӵĴúÂëÖÐÍùÍù´øÓмä½Óº¯ÊýÖ¸ÕëŲÓõÄÇéÐΣ¬£¬£¬£¬CPUÔÚ´¦Öóͷ£Ê±ÐèÒª¾ÙÐÐÐëÒªµÄº¯ÊýÖ¸Õë»á¼û£¬£¬£¬£¬ÎªÁËÌá¸ßI/OÐÔÄÜ£¬£¬£¬£¬CPU»á¾ÙÐзÖÖ§Õ¹Íû£¬£¬£¬£¬ÕâÑùµÄ»°¹¥»÷Õß¿ÉÒÔͨ¹ýÀàËÆµÄROPµÄ·½·¨À´¾ÙÐÐÐÅϢй¶º¯ÊýÖ¸Õ룬£¬£¬£¬´Ó¶øÈƹýµØµãËæ»ú»¯µÄ·À»¤¡£¡£¡£¡£
¡°¶ñÒâÊý¾Ý¼ÓÔØ¡±£ºÔÚ²¿·ÖCPUÉÏ£¬£¬£¬£¬ÎªÁËÌá¸ßÐÔÄÜ£¬£¬£¬£¬²¢²»ÊÇÿ´Î¶¼¶ÔÖ¸Áî×÷ȨÏÞ¼ì²éµÄ£¬£¬£¬£¬¼ì²éµÄÌõ¼þ±£´æÒ»¶¨µÄȱÏÝ£¬£¬£¬£¬Ê¹µÃ¶ñÒâµÄÊý¾Ý¿ÉÒÔ±»¼ÓÔØµ½Êܱ£»£»£»£»£»¤µÄÇøÓò¡£¡£¡£¡£
3 Îó²îÑéÖ¤
¹È¸è¹«Ë¾Project ZeroÇå¾²ÍŶӿËÈÕ¹ûÕæÁËÓÄÁéÎó²îµÄPOC(¿´·¨ÑéÖ¤³ÌÐò)£¬£¬£¬£¬²Î¿¼Á´½Ó£ºhttps://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html¡£¡£¡£¡£
POCÑÝʾÁ˽«Ò»¶ÎÉñÃØÎÄ×Ö"The Magic Words are Squeamish Ossifrage." ·ÅÔÚÄÚ´æÖУ¬£¬£¬£¬²¢Í¨¹ýÎó²îʹÓÃÅÔ·ÆÊÎöµÄ·½·¨´Ó»º´æÖÐÍÆ²â³öÁ˸öÎÎÄ×ÖµÄÄÚÈÝ¡£¡£¡£¡£
POCµÄ¹¥»÷Ö÷Òª·ÖÈý¸ö°ì·¨£¬£¬£¬£¬»®·ÖÊÇ´¥·¢CPU¾ÙÐзÖÖ§Õ¹Íû£¬£¬£¬£¬Ó°ÏìCPUµÄ·ÖÖ§Õ¹ÍûÎóÅУ¬£¬£¬£¬Ì½²â»º´æÊý¾Ý»ñÈ¡Ãô¸ÐÊý¾Ý¡£¡£¡£¡£
¹¥»÷Ö÷ÒªÓÉreadMemoryByteº¯ÊýÍê³É¡£¡£¡£¡£readMemoryByteº¯ÊýÊ×Ïȶà´ÎŲÓÃvictim_functionÕâÑù»á´¥·¢CPU·ÖÖ§Õ¹ÍûÊÖÒÕ£¬£¬£¬£¬CPU·ÖÖ§Õ¹ÍûÊÖÒÕÒÔΪÕë¶Ôx²ÎÊýµÄµØµã»á¼û£¬£¬£¬£¬ÔÚÏÂÒ»´ÎŲÓÃʱ¿ÉÄÜÊÇÓÐÓõÄÖµ£¬£¬£¬£¬ÒÔÊÇCPU»áÌáǰ½«array1[x]µÄÖµ×¼±¸ÔÚ»º´æÖС£¡£¡£¡£
È»ºó£¬£¬£¬£¬readMemoryByteº¯ÊýÏòvictim_function´«ÈëÒ»¸öÔ½½ç¹æÄ£µÄxÖµ²ÎÊý£¬£¬£¬£¬Õâʱ¼äCPU·ÖÖ§Õ¹ÍûÊÖÒÕ½«»á±¬·¢ÎóÅУ¬£¬£¬£¬È»ºó³ÌÐòͨ¹ý»á¼ûarray2[array1[x] * 512]Õâ¶ÎµØµã¹æÄ£µÄÄÚÈÝ£¬£¬£¬£¬½«array1[x]µÄÄÚÈÝ×ß©ÔÚ»º´æÖС£¡£¡£¡£
×îºó£¬£¬£¬£¬ÎÒÃÇ¿ÉÒÔʹÓüòÆÓµÄ»º´æË¢Ð»ººÍ´æÊý¾Ý̽²âÊÖÒÕ£¬£¬£¬£¬ÍƲâarray2Êý×é¼ÓÔØÔÚ»º´æcache lineÖеÄÖµ£¬£¬£¬£¬´Ó¶ø¶ÁÈ¡ÉñÃØÎÄ×ÖµÄÄÚÈÝ¡£¡£¡£¡£ÔÚPOCÖУ¬£¬£¬£¬½ÓÄÉÁËÅÌËãÄÚ´æ»á¼ûÖ¸ÁîµÄÖ´ÐÐʱ¼äÀ´²âÊÔÊÇ·ñÖÀÖлº´æ£¨ÈôÊÇÖÀÖлº´æ£¬£¬£¬£¬ÔòÖ¸ÁîÖ´ÐÐʱ¼ä»á½ÏÁ¿¶Ì£©£¬£¬£¬£¬´Ó¶øÅжÏÊÇ·ñÀֳɶÁÈ¡µ½ÉñÃØÎÄ×Ö¡£¡£¡£¡£
ÔÚPOCÖÐÉñÃØÎÄ×Ö×î³õ²¢Ã»ÓзºÆðÔÚ»º´æÀ£¬£¬£¬¿ÉÊǹ¥»÷Àú³ÌµÄµÚÒ»Âֵĵü´ú¾Í°ÑÄ¿µÄµØµã×ß©ÔÚ»º´æÖУ¬£¬£¬£¬ÒÔÊǹ¥»÷Àú³Ì¿ÉÒÔ±»¶à´ÎŲÓ㬣¬£¬£¬´Ó¶ø¶ÁÈ¡µ½ÉñÃØÎÄ×ÖµÄËùÓÐÄÚÈÝ¡£¡£¡£¡£
3.1 Ñé֤Ч¹û
ÎÒÃÇ»®·ÖÔÚÈý̨ÅÌËã»úÉ϶ÔÎó²î¾ÙÐÐÁËÑéÖ¤£¬£¬£¬£¬ÕâÈý̨ÅÌËã»úµÄCPU»®·ÖÊÇIntelµÄi5-3317U¡¢i5-7360U¡¢i7-4790K´¦Öóͷ£Æ÷£¬£¬£¬£¬²Ù×÷ϵͳ»®·ÖÊÇMac¡¢linux¡¢windows¡£¡£¡£¡£
3.1.1 ʵÑé1
²Ù×÷ϵͳ£ºMACOSX Yosemite °æ±¾10.10.5
´¦Öóͷ£Æ÷Ãû³Æ£º Intel Core i5-3317U 1.7 G*2
3.1.2 ʵÑé2
²âÊÔÇéÐΣº ubuntu 16.04 LTS
Äں˰汾 4.10.0-42 64λ
´¦Öóͷ£Æ÷Ðͺţºintel core i5-7360U cpu 2.30GHZ*4
3.1.3 ʵÑé3
²Ù×÷ϵͳ£ºwin10
CPUÐͺţºintel core i7-4790K cpu 4.00GHZ*4
4 ÓÄÁéÎó²îµÄÓ°ÏìºÍΣº¦
ÓÄÁéÎó²îÓ°Ïìµ½ÏÕЩËùÓеIJÙ×÷ϵͳ¼°ÅÌËã»ú×°±¸¡£¡£¡£¡£
ÓÉÓÚÓÄÁéÎó²îÒòÓÉÓÚCPU·ÖÖ§Õ¹ÍûÊÖÒÕµÄȱÏÝ£¬£¬£¬£¬¸ÃÊÖÒÕÔÚ1995ÄêÆð¾ÍÒ»Ö±ÊǸßÐÔÄÜCPU±êÅäµÄÊÖÒÕ¡£¡£¡£¡£ÏÖÔÚÖ÷Á÷Çå¾²ÊÖÒÕËù½ÓÄɵÄÀú³Ì¸ôÀ룬£¬£¬£¬Óû§¿Õ¼äºÍÄں˵صã¸ôÀ룬£¬£¬£¬¶à×â»§µÄÐéÄâ¸ôÀë·À»¤ÊÖÒÕ¼°É³Ïä¸ôÀëÊÖÒÕÔÚÕâÒ»Îó²îÏÂËùÓÐʧЧ¡£¡£¡£¡£
ÓÄÁéÎó²î¶Ô¶à×⻧ϵÄÔÆÐ§ÀÍϵͳӰÏì½ÏÁ¿´ó£¬£¬£¬£¬¹¥»÷ÕßÔÚÔÆÆ½Ì¨Í¨¹ýÍâµØµÄͨË׵Ļá¼ûȨÏ޾ͿÉÒÔ¶ÁÈ¡ÔÆÆ½Ì¨µÄÃô¸ÐÐÅÏ¢£¬£¬£¬£¬Îª½øÒ»²½»ñµÃ¸ü¸ßµÄȨÏ޺ͻñµÃÉñÃØÊý¾ÝÌṩÁË¿ÉÄÜ¡£¡£¡£¡£
¸ÃÎó²îµÄΣº¦»¹ÔÚÓÚ¹¥»÷Õß¿ÉÒÔͨ¹ý¸ÃÎó²îÔ¶³ÌÌᳫ¹¥»÷£¬£¬£¬£¬µ±Ä¿µÄ×°±¸»á¼ûÔ¶³ÌЧÀÍÆ÷µÄÍøÒ³Ê±£¬£¬£¬£¬¹¥»÷Õß¿ÉÒÔͨ¹ý¶ñÒâjs½ÅÔÀ´»ñµÃÄ¿µÄÉè±¹ØÁ¬ÄÃô¸ÐÐÅÏ¢£¬£¬£¬£¬ÈçÉúÑÄÔÚÄÚ´æÖеÄÃÜÂëCookieµÈ¡£¡£¡£¡£
ÓÄÁéÎó²îÊÜÓ°ÏìµÄ´¦Öóͷ£Æ÷²»µ«°üÀ¨intel£¬£¬£¬£¬¸ßͨ£¬£¬£¬£¬AMD,ARMµÈ³§¼Ò,ϱíΪÒÑÖªµÄÊÜÓ°ÏìµÄintel´¦Öóͷ£Æ÷ÁÐ±í£¨Êý¾ÝÀ´×Ôintel¹ÙÍø£©£º
5 Îó²îµÄ·À»¤
1.Ãô¸ÐÊý¾Ý»á¼ûºÍÔËË㾡¿ÉÄÜÔÚ×ÔÁ¦µÄÇ徲оƬÉÏÔËÐУ¬£¬£¬£¬Ê¹µÃͨË×ȨÏÞµÄÖ´ÐÐÇéÐκ͸ßȨÏÞµÄÖ´ÐÐÇéÐÎÔÚÎïÀíÉϸôÀ룬£¬£¬£¬´Ó¶ø×èÖ¹Ãô¸ÐÐÅÏ¢×ß©¡£¡£¡£¡£
2.ʵʱÉý¼¶²¹¶¡£¡£¡£¡£¬£¬£¬£¬ÌØÊâÊǹ«ÓÐÔÆÆ½Ì¨¡£¡£¡£¡£ÓÉÓÚÔÆÐ§ÀÍϵͳµÄÖØ´ó¡¢Öش󣬣¬£¬£¬ÔÆÐ§Àͳ§¼ÒÓ¦¾¡ÔçµØ¾ÙÐÐÎó²îÐÞ²¹£¬£¬£¬£¬×èÖ¹Òªº¦Êý¾ÝºÍÒþ˽µÄй¶¡¢Éϰ¶Æ¾Ö¤±»ÇÔÈ¡µ¼ÖÂÁ¬Ëø¹¥»÷µÈ´ÎÉúÔÖÄÑ¡£¡£¡£¡£
3.ÏÖÔÚ»ùÓÚÈí¼þ²¹¶¡Ö»ÊÇ×öÁËÔÝʱ¸ôÀ룬£¬£¬£¬ÈçTLB¸ôÀëµÈ£¬£¬£¬£¬¿ÉÊÇδÀ´½«»áÓÐÒ»Ð©ÈÆ¹ýÊÖÒջ᷺Æð£¬£¬£¬£¬Ìæ»»Ó²¼þ²ÅÊdz¹µ×ÐÞ¸´Õâ¸öÎÊÌâµÄÒªº¦¡£¡£¡£¡£
4.ÔÚÈíÓ²¼þÉè¼Æ·½Ã棬£¬£¬£¬¿ª·¢ÕßÐèҪ˼Á¿ÐÔÄܺÍÇå¾²ÐÔÖ®¼äÈ¡µÃƽºâ¡£¡£¡£¡£


¾©¹«Íø°²±¸11010802024551ºÅ