OG¶«·½ÌüADLab£º£ºCPU¡°¹í»ê¡±·ì϶·ÖÎöÓëÑéÖ¤

°ä²¼¹¦·ò 2018-01-08

1 ǰ ÑÔ

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

        OG¶«·½Ìü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 ÑéÖ¤Á˾Ö

        ÎÒÃDZðÀëÔÚÈýÌ¨ÍÆËã»úÉ϶Էì϶½øÐÐÁËÑéÖ¤£¬£¬ÕâÈýÌ¨ÍÆËã»úµÄ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

OG¶«·½Ìü¡¤(Öйú´ó½)

3.1.2  ³¢ÊÔ2

        ²âÊÔ»·¾³£º£º   ubuntu 16.04 LTS  

        Äں˰汾 4.10.0-42 64λ  

        ´¦ÖÃÆ÷ÐͺÅ£º£ºintel core i5-7360U cpu 2.30GHZ*4

OG¶«·½Ìü¡¤(Öйú´ó½)

3.1.3 ³¢ÊÔ3

          ²Ù×÷ϵͳ£º£ºwin10

          CPUÐͺÅ£º£ºintel core i7-4790K cpu 4.00GHZ*4

OG¶«·½Ìü¡¤(Öйú´ó½)

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.ÔÚÈíÓ²¼þÉè¼Æ·½Ã棬£¬¿ª·¢Õß±ØÒªË¼¿¼»úÄܺͰ²È«ÐÔÖ®¼ä»ñµÃƽºâ¡£