¶«É­Æ½Ì¨ADLab£ºCPU¡°ÓÄÁ顱©¶´·ÖÎöÓëÑéÖ¤

Ðû²¼Ê±¼ä 2018-01-08

1 Ç° ÑÔ

        ½üÈÕ£¬CPUµ×²ã©¶´Äþ¾²Ê¼þÒѾ­²¨¼°È«Çò¼¸ºõËùÓеÄÊÖ»ú¡¢µçÄÔ¡¢ÔƼÆËã²úÎï¡£Õâ´ÎµÄ©¶´·Ö±ðÆðÃûMeltdown(Íß½â)ºÍSpectre(ÓÄÁé)¡£ÕâÁ½¸ö©¶´¿ÉÄÜ»áÔì³ÉÊܱ£»¤µÄÃÜÂë¡¢Ãô¸ÐÐÅϢй¶¡£

        ¶«É­Æ½Ì¨ADLabÔÚÈý´ó²Ù×÷ϵͳ(windows¡¢macos¡¢linux)£¬ÑéÖ¤É豸£¨°üÂÞ¸öÈĘ̈ʽµçÄÔ¡¢Ìõ¼Ç±¾¼°·þÎñÆ÷É豸£©ÉÏÍê³ÉÁË¡°ÓÄÁ顱©¶´ÑéÖ¤ÊÂÇé¡£

        ±¾ÎÄÖصã¶Ô¡°ÓÄÁ顱©¶´µÄ©¶´µÄÔ­Àí¡¢Â©¶´ÑéÖ¤¡¢Î£º¦¼°·À»¤½øÐнéÉÜ¡£

2 ©¶´Ô­Àí

        ÓÉÓÚ¸ßËÙCPUºÍµÍËÙÄÚ´æÖ®¼äµÄI/OÆ¿¾±£¬ÏÖ´ú´¦ÖÃÆ÷»áÀûÓÃÁ÷Ë®Ïß¼¼ÊõÌá¸ßÐÔÄÜ£¬Í¨¹ýÔ¤²âÏÂÒ»²½ÒªÖ´ÐеÄÖ¸Áî²¢ÌáÇ°°ÑÕâЩָÁî·ÅÔÚÁ÷Ë®ÏßÉÏ£¬ÒÔÌá¸ßËٶȡ£µ«ÊÇÈç¹û·¨Ê½ÓзÖÖ§ÌøתµÄ»°£¬ÕâЩÁ÷Ë®ÏßÉϵÄԤȡµÄÖ¸Áȫ²¿×÷·Ï, CPUÐèÒªÇå¿ÕËùÓеÄÖ¸Áî, È»ºó¼ÓÔØÃüÖеØÖ·µÄÖ¸ÁÔÙ½«ºóÐøÖ¸Áî¼ÓÔØÔËÐС£

        Èç¹û·¨Ê½ÓÐ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¹ÙÍø£©£º

  • Intel? Core? i3 processor (45nm and 32nm)
  • Intel? Core? i5 processor (45nm and 32nm)
  • Intel? Core? i7 processor (45nm and 32nm)
  • Intel? Core? M processor family (45nm and 32nm)
  • 2nd generation Intel? Core? processors
  • 3rd generation Intel? Core? processors
  • 4th generation Intel? Core? processors
  • 5th generation Intel? Core? processors
  • 6th generation Intel? Core? processors
  • 7th generation Intel? Core? processors
  • 8th generation Intel? Core? processors
  • Intel? Core? X-series Processor Family for Intel? X99 platforms
  • Intel? Core? X-series Processor Family for Intel? X299 platforms
  • Intel? Xeon? processor 3400 series
  • Intel? Xeon? processor 3600 series
  • Intel? Xeon? processor 5500 series
  • Intel? Xeon? processor 5600 series
  • Intel? Xeon? processor 6500 series
  • Intel? Xeon? processor 7500 series
  • Intel? Xeon? Processor E3 Family
  • Intel? Xeon? Processor E3 v2 Family
  • Intel? Xeon? Processor E3 v3 Family
  • Intel? Xeon? Processor E3 v4 Family
  • Intel? Xeon? Processor E3 v5 Family
  • Intel? Xeon? Processor E3 v6 Family
  • Intel? Xeon? Processor E5 Family
  • Intel? Xeon? Processor E5 v2 Family
  • Intel? Xeon? Processor E5 v3 Family
  • Intel? Xeon? Processor E5 v4 Family
  • Intel? Xeon? Processor E7 Family
  • Intel? Xeon? Processor E7 v2 Family
  • Intel? Xeon? Processor E7 v3 Family
  • Intel? Xeon? Processor E7 v4 Family
  • Intel? Xeon? Processor Scalable Family
  • Intel? Xeon Phi? Processor 3200, 5200, 7200 Series
  • Intel? Atom? Processor C Series
  • Intel? Atom? Processor E Series
  • Intel? Atom? Processor A Series
  • Intel? Atom? Processor x3 Series
  • Intel? Atom? Processor Z Series
  • Intel? Celeron? Processor J Series
  • Intel? Celeron? Processor N Series
  • Intel? Pentium? Processor J Series
  • Intel? Pentium? Processor N Series
  • 5 ©¶´µÄ·À»¤

    1.Ãô¸ÐÊý¾Ý·ÃÎʺÍÔËË㾡¿ÉÄÜÔÚ¶ÀÁ¢µÄÄþ¾²Ð¾Æ¬ÉÏÔËÐУ¬Ê¹µÃÆÕͨȨÏÞµÄÖ´Ðл·¾³ºÍ¸ßȨÏÞµÄÖ´Ðл·¾³ÔÚÎïÀíÉϸôÀ룬´Ó¶øÖÆÖ¹Ãô¸ÐÐÅϢй©¡£

    2.¼°Ê±Éý¼¶²¹¶¡£¬ÌرðÊǹ«ÓÐÔÆƽ̨¡£ÓÉÓÚÔÆ·þÎñÌåϵµÄÅÓ´ó¡¢ÅÓ´ó£¬ÔÆ·þÎñ³§¼ÒÓ¦¾¡ÔçµØ½øÐЩ¶´ÐÞ²¹£¬ÖÆÖ¹Òªº¦Êý¾ÝºÍÒþ˽µÄй¶¡¢µÇ½ƾ֤±»ÇÔÈ¡µ¼ÖÂÁ¬Ëø¹¥»÷µÈ´ÎÉúÔÖº¦¡£

    3.Ä¿Ç°»ùÓÚÈí¼þ²¹¶¡Ö»ÊÇ×öÁËÁÙʱ¸ôÀ룬ÈçTLB¸ôÀëµÈ£¬µ«ÊÇδÀ´½«»áÓÐһЩÈƹý¼¼Êõ»á·ºÆ𣬸ü»»Ó²¼þ²ÅÊdz¹µ×ÐÞ¸´Õâ¸öÎÊÌâµÄÒªº¦¡£

    4.ÔÚÈíÓ²¼þÉè¼Æ·½Ã棬¿ª·¢ÕßÐèÒª¿¼ÂÇÐÔÄܺÍÄþ¾²ÐÔÖ®¼äÈ¡µÃƽºâ¡£