CVE-2020-10713 | GRUB2 BootHole·ì϶¹«¸æ

°ä²¼¹¦·ò 2020-07-30

0x00 ·ì϶¸ÅÊö


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


Eclypsium×êÑÐÈËÔ±ÔÚÎÞÊýLinuxϵͳʹÓõÄGRUB2Êèµ¼·¨Ê½Öз¢ÏÖÁËÒ»¸ö·ì϶½«Æä¶¨ÃûΪ¡°BootHole¡±£¨CVE-2020-10713£©£¬ £¬£¬£¬£¬£¬£¬£¬¼´±ãÆôÓÃÁËSecure Boot£¬ £¬£¬£¬£¬£¬£¬£¬Ò²¿ÉÔÚÆô¶¯¹ý³ÌÖÐÖ´ÐÐËÁÒâ´úÂë¡£¡£¡£¡£¡£¡£¡£¹¥»÷Õß¿ÉÀûÓø÷ì϶װÖÃÓÆ¾ÃÇÒÒþÃØµÄbootkit»ò¶ñÒâÊèµ¼·¨Ê½À´½ÚÔìÉ豸¡£¡£¡£¡£¡£¡£¡£

¸Ã·ì϶ӰÏìʹÓÃSecure BootµÄϵͳ£¬ £¬£¬£¬£¬£¬£¬£¬¼´±ãËüÃDz»Ê¹ÓÃGRUB2¡£¡£¡£¡£¡£¡£¡£ËùÓÐÊðÃûµÄGRUB2¾ùÊÜÓ°Ï죬 £¬£¬£¬£¬£¬£¬£¬ÕâÒâζ×ÅÏÕЩËùÓеÄLinux ¿¯Ðаæ¾ùÊÜÓ°Ïì¡£¡£¡£¡£¡£¡£¡£´Ë±íGRUB2»¹Ö§³ÔìäËü²Ù×÷ϵͳ¡¢Äں˺ÍÖÎÀí·¨Ê½ÈçXen¡£¡£¡£¡£¡£¡£¡£Õâ¸ö·ì϶»¹Éæ¼°µ½ÈκÎʹÆ÷ÓµÓг߶ÈMicrosoft Third Party UEFI Certificate AuthorityµÄSecure BootµÄWindowsÉ豸£¬ £¬£¬£¬£¬£¬£¬£¬ÀýÈ繤ҵ¡¢Ò½ÁÆ¡¢½ðÈÚµÈÐÐÒµÖÐʹÓõÄÉ豸¾ùÊÜÓ°Ïì¡£¡£¡£¡£¡£¡£¡£¸Ã·ì϶µ¼ÖÂÕâЩÉ豸Ò×Ôâµ½ÀýÈç×î½üʹÓöñÒâUEFIÊèµ¼·¨Ê½µÄ¹¥»÷»î¶¯¡£¡£¡£¡£¡£¡£¡£

EclypsiumÒѺͶà¼ÒÐÐÒµÈçOS³§ÉÌ¡¢ÍÆËã»úÔì×÷É̺ÍÓ¦¼±ÏìÓ¦ÖÐÐÄЭµ÷Åû¶¸Ã·ì϶¡£¡£¡£¡£¡£¡£¡ £»£»£»£»£»£»£»º½â´ëʩҪÇóÊðÃûºÍ²¿ÊðеÄÊèµ¼·¨Ê½£¬ £¬£¬£¬£¬£¬£¬£¬ÕâÑùÄܹ»Ô¤·À¹¥»÷ÕßʹÓÃÀϾɡ¢Ò×Êܹ¥»÷°æ±¾¡£¡£¡£¡£¡£¡£¡£ÕâÒ»¹ý³Ì¿ÉÄܼ«¶ÈÂþ³¤£¬ £¬£¬£¬£¬£¬£¬£¬ÓÉÓÚ×éÖ¯»ú¹¹ÊµÏÖ½¨¸´±ØÒª´óÁ¿¹¦·ò¡£¡£¡£¡£¡£¡£¡£


0x01 ·ì϶ÏêÇé


BootHole·ì϶ÊǽâÎögrub.cfgÎļþʱÔÚGRUB2ÖвúÉúµÄ»º³åÇøÒç³ö¡£¡£¡£¡£¡£¡£¡£´ËÅäÖÃÎļþÊÇͨ³£Î»ÓÚEFIϵͳ·ÖÇøÖÐµÄ±í²¿Îļþ£¬ £¬£¬£¬£¬£¬£¬£¬Òò¶øÄܹ»ÓÉÓµÓÐÖÎÀíÔ±ÌØÈ¨µÄ¹¥»÷ÕßÅú¸Ä£¬ £¬£¬£¬£¬£¬£¬£¬¶øÎÞÐè¸ü¸ÄÒÑÊðÃû¹©¸øÉÌshimºÍGRUB2 bootloader¿ÉÖ´ÐÐÎļþµÄÆëÈ«ÐÔ¡£¡£¡£¡£¡£¡£¡ £»£»£»£»£»£»£»º³åÇøÒç³öʹ¹¥»÷ÕßÄܹ»ÔÚUEFIÖ´Ðл·¾³ÖлñµÃËÁÒâ´úÂëÖ´ÐÐȨÏÞ£¬ £¬£¬£¬£¬£¬£¬£¬¸Ã´úÂëÄܹ»ÓÃÓÚÔËÐжñÒâÈí¼þ£¬ £¬£¬£¬£¬£¬£¬£¬¸ü¸ÄÆô¶¯¹ý³Ì£¬ £¬£¬£¬£¬£¬£¬£¬Ö±½Ó½¨²¹OSÄں˻òÖ´ÐжñÒâ´úÂë¡£¡£¡£¡£¡£¡£¡£

ΪÁË´¦ÖÃÀ´×Ô±í²¿ÅäÖÃÎļþµÄºÅÁ £¬£¬£¬£¬£¬£¬£¬GRUB2ʹÓÃflexºÍbison´Ó˵»°ÃèÊöÎļþºÍÔ®ÊÖ·¨Ê½º¯ÊýÌìÉúÕë¶ÔÌØ¶¨Óò˵»°£¨DSL£©µÄ½âÎöÒýÇæ¡£¡£¡£¡£¡£¡£¡£

ºÍΪÿ¸öDSLÊÖ¶¯±àд×Ô½ç˵½âÎöÆ÷Ïà±È£¬ £¬£¬£¬£¬£¬£¬£¬Í¨³£ÒÔΪÕâÊÇÒ»ÖÖ¸üºÃµÄ²½Öè¡£¡£¡£¡£¡£¡£¡£µ«ÊÇGRUB2¡¢flexºÍbison¶¼ÊǸ´ÔÓµÄÈí¼þ°ü£¬ £¬£¬£¬£¬£¬£¬£¬ÓµÓÐ×Ô¼ºµÄÉè¼ÆÈç¹û£¬ £¬£¬£¬£¬£¬£¬£¬ºÜÈÝÒ׺öÂÔ¡£¡£¡£¡£¡£¡£¡£ÕâЩ²»Æ¥ÅäµÄÉè¼ÆÈç¹û¿ÉÄܻᵼÖÂÒ×Êܹ¥»÷µÄ´úÂë¡£¡£¡£¡£¡£¡£¡£

flexÌìÉúµÄ½âÎöÆ÷ÒýÇæ½«´Ë½ç˵Ô̺¬ÎªÁîÅÆ´¦ÖôúÂëµÄÒ»²¿ÃÅ£º


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


ÔÚÕâ¸öºêÖУ¬ £¬£¬£¬£¬£¬£¬£¬ÌìÉúµÄ´úÂë¼ì²âµ½ËüÓöµ½µÄÁîÅÆÌ«´ó¶øÎÞ·¨·ÅÈëflexµÄÄÚ²¿½âÎö»º³åÇø²¢Å²ÓÃYY_FATAL_ERROR()£¬ £¬£¬£¬£¬£¬£¬£¬ÕâÊÇʹÓÃflexÌìÉúµÄ½âÎöÆ÷µÄÈí¼þÌṩµÄÔ®ÊÖº¯Êý¡£¡£¡£¡£¡£¡£¡£

µ«ÊÇ£¬ £¬£¬£¬£¬£¬£¬£¬YY_FATAL_ERROR()GRUB2Èí¼þ°üÖÐÌṩµÄʵÏÖÊÇ£º


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


Ëü²»»áÖÕ³¡Ö´ÐлòÍ˳ö£¬ £¬£¬£¬£¬£¬£¬£¬¶øÖ»Êǽ«ÃýÎóÊä³öµ½½ÚÔį̀²¢·µ»Øµ½Å²Óú¯Êý¡£¡£¡£¡£¡£¡£¡£²»ÐÒµÄÊÇ£¬ £¬£¬£¬£¬£¬£¬£¬ÔÚ±àдflex´úÂëʱ¾Í½øÕ¹YY_FATAL_ERROR()²»»áÔÙ·µ»ØÈκÎŲÓᣡ£¡£¡£¡£¡£¡£Õâµ¼ÖÂyy_flex_strncpy()±»Å²Ó㬠£¬£¬£¬£¬£¬£¬£¬²¢½«Ô´×Ö·û´®´ÓÅäÖÃÎļþ¸´Ôìµ½Ò»¸öÌ«Ó×¶øÎÞ·¨°üÈÝËüµÄ»º³åÇøÖÓ×£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


³ýÁËÕâ¸öÌØ¶¨µÄõè¾¶Ö®±í£¬ £¬£¬£¬£¬£¬£¬£¬flexÌìÉúµÄ´úÂëÖеĺܶàÆäËû´¦ËùÒ²½øÕ¹¶ÔYY_FATAL_ERROR()µÄÈκÎŲÓÃʼÖÕ²»»á·µ»Ø£¬ £¬£¬£¬£¬£¬£¬£¬²¢ÇÒÔÚ½øÕ¹±»·ÛËéʱִÐв»°²È«µÄ²Ù×÷¡£¡£¡£¡£¡£¡£¡£APIµÄ³ö²úÕߺÍÏû·ÑÕßÖ®¼äµÄÈç¹û²»Æ¥ÅäÊÇÒ»¸ö¼«¶È³£¼ûµÄ·ì϶ÆðÔ´¡£¡£¡£¡£¡£¡£¡£

×îÖÕ£¬ £¬£¬£¬£¬£¬£¬£¬Í¨¹ýΪÅäÖÃÎļþÌṩÊäÈëÁîÅÆ£¬ £¬£¬£¬£¬£¬£¬£¬½âÎöÆ÷ÎÞ·¨´¦ÖÃÕâЩ̫³¤µÄÁîÅÆ£¬ £¬£¬£¬£¬£¬£¬£¬´Ë»º³åÇøÒç³ö½«¸²¸Ç¶ÑÖеĹؼü½á¹¹¡£¡£¡£¡£¡£¡£¡£ÕâЩ±»¸²¸ÇµÄ×Ö¶ÎÔ̺¬½âÎöÆ÷½á¹¹ÔªËØ£¬ £¬£¬£¬£¬£¬£¬£¬ËüÄܹ»ÓÃ×÷ËÁÒâµÄwrite-what-whereÔ­Ó £¬£¬£¬£¬£¬£¬£¬ÒÔ»ñÈ¡ËÁÒâ´úÂëÖ´Ðв¢½Ù³ÖÊèµ¼¹ý³Ì¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


»¹Òª°ÑÎȵÄÊÇ£¬ £¬£¬£¬£¬£¬£¬£¬UEFIÖ´Ðл·¾³Ã»ÓеØÖ·¿Õ¼ä²¼¾ÖËæ»ú»¯£¨ASLR£©»òÊý¾ÝÖ´Ðб £»£»£»£»£»£»£»¤£¨DEP / NX£©»òÆäËûϵͳÖг£¼ûµÄ»º½â·ì϶µÄ¼¼Êõ£¬ £¬£¬£¬£¬£¬£¬£¬Òò¶ø£¬ £¬£¬£¬£¬£¬£¬£¬´ËÀà·ì϶ºÜÈÝÒ×ÀûÓ㬠£¬£¬£¬£¬£¬£¬£¬¶ÑÊÇÆëÈ«¿ÉÖ´Ðеģ¬ £¬£¬£¬£¬£¬£¬£¬ÎÞÐè¹¹½¨ROPÁ´¡£¡£¡£¡£¡£¡£¡£

¼øÓÚGRUB2 ½âÎöÅäÖÃÎļþµÄ²½ÖèÖдæÔÚÒ»¸öÈõµã£¬ £¬£¬£¬£¬£¬£¬£¬¹¥»÷ÕßÄܹ»Ö´ÐÐËÁÒâ´úÂ룬 £¬£¬£¬£¬£¬£¬£¬ÈƹýÊðÃûÑéÖ¤¡£¡£¡£¡£¡£¡£¡£BootHole·ì϶¿É±»ÓÃÓÚ×°ÖÿÉÓÆ¾ÃºÍÒþÃØµÄbootkit»òÕß¼´±ãÔÚÆôÓÃSecure Boot µÄÇé¿öÏÂÒ²¿ÉÔËÐеĶñÒâÊèµ¼·¨Ê½¡£¡£¡£¡£¡£¡£¡£¹¥»÷Õß¿ÉÄÜÔÚ²Ù×÷ϵͳ֮ǰÔËÐжñÒâ´úÂë²¢½ÚÔì²Ù×÷ϵͳµÄ¼ÓÔØ·½Ê½¡¢Ö±½Ó½¨¸´²Ù×÷ϵͳ¡¢ÉõÖÁʹÊèµ¼·¨Ê½Åú¸ÄOS¾µÏñ¡£¡£¡£¡£¡£¡£¡£

ËùÓдÓgrub.cfgÎļþÖжÁÈ¡ºÅÁîµÄGRUB2 ÊðÃû°æ±¾¾ùÒ×Êܹ¥»÷£¬ £¬£¬£¬£¬£¬£¬£¬Ó°ÏìËùÓÐLinux ¿¯Ðа档¡£¡£¡£¡£¡£¡£½ØÖÁĿǰ£¬ £¬£¬£¬£¬£¬£¬£¬ÒÑÓÐ80¶à¸öshimÊÜÓ°Ïì¡£¡£¡£¡£¡£¡£¡£³ýÁËLinux ϵͳ±í£¬ £¬£¬£¬£¬£¬£¬£¬ÈκÎʹÆ÷ÓµÓг߶È΢ÈíUEFI CAµÄSecure BootµÄϵͳҲÊܸ÷ì϶ӰÏì¡£¡£¡£¡£¡£¡£¡£Òò¶ø£¬ £¬£¬£¬£¬£¬£¬£¬×êÑÐÈËÔ±ÒÔΪµ±Ç°Ê¹ÓõĴóÎÞÊýϵͳ£¬ £¬£¬£¬£¬£¬£¬£¬ÒÔ¼°´óÁ¿»ùÓÚLinux µÄOT ºÍIoTϵͳ£¬ £¬£¬£¬£¬£¬£¬£¬¾ù¿ÉÄÜÊÜÕâЩ·ì϶µÄÓ°Ïì¡£¡£¡£¡£¡£¡£¡£

Áí±í£¬ £¬£¬£¬£¬£¬£¬£¬ÈκÎÒÀÀµUEFI Secure Boot µÄÓ²¼þ¸ùÐÅÀµ»úÔì¾ù¿É±»Èƹý¡£¡£¡£¡£¡£¡£¡£


0x02 ´ëÖý¨Òé


ÊÜÓ°Ïì³§Ḛ́䲼°²È«²¼¸æºÍ¸üУº

? Microsoft

? Security advisory

? https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV200011

? UEFI Forum

? Updated Revocation List

? https://uefi.org/revocationlistfile

? Debian

? Security advisory

? https://www.debian.org/security/2020-GRUB-UEFI-SecureBoot

? Canonical:

? Security advisory

? https://ubuntu.com/security/notices/USN-4432-1

? KnowledgeBase article

? https://wiki.ubuntu.com/SecurityTeam/KnowledgeBase/GRUB2SecureBootBypass

? Red Hat

? Customer documentation

? https://access.redhat.com/security/vulnerabilities/grub2bootloader

? CVE information

? https://access.redhat.com/security/cve/cve-2020-10713

? Vulnerability response article

? https://access.redhat.com/security/vulnerabilities/grub2bootloader

? SUSE

? Security advisory:

? https://www.suse.com/c/suse-addresses-grub2-secure-boot-issue/

? Knowledge Base article:

? https://www.suse.com/support/kb/doc/?id=000019673

? HP

? Security advisory

? HPSBHF03678 rev. 1 ¨C GRUB2 Bootloader Arbitrary Code Execution£ºhttps://support.hp.com/us-en/document/c06707446

? HPE

? Security advisory

? https://techhub.hpe.com/eginfolib/securityalerts/Boot_Hole/boot_hole.html

? VMware

? Knowledge Base article

? https://kb.vmware.com/s/article/80181

? Upstream Grub2 project

? GRUB2 Git Repository£ºhttp://git.savannah.gnu.org/gitweb/?p=grub.git&view=view+git+repository

? GRUB Developer Mailing List£ºhttps://lists.gnu.org/mailman/listinfo/grub-devel/

±ØÒª°ÑÎȵÄÊǺÍUEFIÓйصĸüÐÂÔøµ¼ÖÂÉ豸²»³ÉÓ㬠£¬£¬£¬£¬£¬£¬£¬Òò¶ø³§É̱ØÒª¼«¶ÈÉóÉ÷¡£¡£¡£¡£¡£¡£¡£ÈôÊÇÔÚ¸üеÄLinuxÊèµ¼¼ÓÔØ·¨Ê½ºÍshim֮ǰ¸üÐÂÁ˳·³ýÁÐ±í£¨dbx£©£¬ £¬£¬£¬£¬£¬£¬£¬Ôò½«²»»áÊ赼ϵͳ¡£¡£¡£¡£¡£¡£¡£

¸ü¸´ÔÓµÄÇé¿öÊÇ£¬ £¬£¬£¬£¬£¬£¬£¬ÆóÒµÔÖ±¸»úÔìÒ²»áÓöµ½´ËÎÊÌ⣬ £¬£¬£¬£¬£¬£¬£¬Áí±í£¬ £¬£¬£¬£¬£¬£¬£¬µ±Ó²¼þ¹ÊÕ϶ø±ØÒª½øÐÐÉ豸¸üÐÂʱ£¬ £¬£¬£¬£¬£¬£¬£¬Ò»ÑùÐͺŵÄÐÂϵͳ¿ÉÄÜÒѾ­ÀûÓÃÁËdbx¸üУ¬ £¬£¬£¬£¬£¬£¬£¬²¢ÇÒÔÚ³¢ÊÔÊèµ¼ÏÈǰװÖõIJÙ×÷ϵͳʱ»áʧ°Ü¡£¡£¡£¡£¡£¡£¡£


½¨Ò飺

1¡¢¼à¿ØÊèµ¼·¨Ê½·ÖÇø£¨EFI·¨Ê½·ÖÇø£©µÄÄÚÈÝ£¬ £¬£¬£¬£¬£¬£¬£¬Õ⽫ΪÆäÓàµÄ¹ý³Ì½Ú¼ó¹¦·ò£¬ £¬£¬£¬£¬£¬£¬£¬²¢ÓÐÖúÓÚÈ·¶¨ÊÜÓ°ÏìµÄϵͳ £»£»£»£»£»£»£»

2¡¢³ÖÐø¸üÐÂϵͳ£¬ £¬£¬£¬£¬£¬£¬£¬ÒÔÏ÷¼õ¹¥»÷µÄ¿ÉÄÜÐÔ¡£¡£¡£¡£¡£¡£¡£³ö¸ñÊǸüÐÂºó£¬ £¬£¬£¬£¬£¬£¬£¬¾ÉµÄÊèµ¼·¨Ê½½¨Òéɾ³ý¡£¡£¡£¡£¡£¡£¡£ËüÔ̺¬¼±¾ÈÅÌ¡¢×°Ö÷¨Ê½¡¢ÆóÒµ»Æ½ð¾µÏñ¡¢Ðé¹¹»ú»òÆäËü¿ÉÊ赼ý½é £»£»£»£»£»£»£»

3¡¢²âÊÔ³·ÏúÁбí¸üС£¡£¡£¡£¡£¡£¡£È·±£²âÊÔµÄÊÇÔÚʹÓõĹ̼þ°æ±¾ºÍÐͺ𣡣¡£¡£¡£¡£¡£

4¡¢Òª½â¾ö´Ë·ì϶ÎÊÌ⣬ £¬£¬£¬£¬£¬£¬£¬Ê×ÏÈÒª²¿Êð³·³ý¸üС£¡£¡£¡£¡£¡£¡£

5¡¢ÁªÏµ¹©¸øÉÌ£¬ £¬£¬£¬£¬£¬£¬£¬È·ÈÏËûÃÇÔÚ½â¾ö´ËÎÊÌâ¡£¡£¡£¡£¡£¡£¡£

EclypsiumÓµÓпÉÓõÄpowershellºÍbash¾ç±¾£¬ £¬£¬£¬£¬£¬£¬£¬ÓÃÓÚ¼ì²â´Ëdbxupdate³·³ýµÄÊèµ¼·¨Ê½£¬ £¬£¬£¬£¬£¬£¬£¬²Î¿¼Á´½Ó£ºhttps://github.com/eclypsium/BootHole/¡£¡£¡£¡£¡£¡£¡£


0x03 ÓйØÐÂÎÅ


https://www.zdnet.com/article/boothole-attack-impacts-windows-and-linux-systems-using-grub2-and-secure-boot/#ftag=RSSbaffb68


0x04 ²Î¿¼Á´½Ó


https://eclypsium.com/2020/07/29/theres-a-hole-in-the-boot/


0x05 ¹¦·òÏß


2020-07-29 Eclypsium°ä²¼»ã±¨

2020-07-30 VSRC°ä²¼·ì϶¹«¸æ


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website