CVE-2020-10713 | GRUB2 BootHole·ì϶¹«¸æ
°ä²¼¹¦·ò 2020-07-300x00 ·ì϶¸ÅÊö
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ÌìÉúµÄ½âÎöÆ÷ÒýÇæ½«´Ë½ç˵Ô̺¬ÎªÁîÅÆ´¦ÖôúÂëµÄÒ»²¿ÃÅ£º£º
ÔÚÕâ¸öºêÖУ¬£¬ÌìÉúµÄ´úÂë¼ì²âµ½ËüÓöµ½µÄÁîÅÆÌ«´ó¶øÎÞ·¨·ÅÈëflexµÄÄÚ²¿½âÎö»º³åÇø²¢Å²ÓÃYY_FATAL_ERROR()£¬£¬ÕâÊÇʹÓÃflexÌìÉúµÄ½âÎöÆ÷µÄÈí¼þÌṩµÄÔ®ÊÖº¯Êý¡£¡£¡£
µ«ÊÇ£¬£¬YY_FATAL_ERROR()GRUB2Èí¼þ°üÖÐÌṩµÄʵÏÖÊÇ£º£º
Ëü²»»áÖÕ³¡Ö´ÐлòÍ˳ö£¬£¬¶øÖ»Êǽ«ÃýÎóÊä³öµ½½ÚÖÆÌ¨²¢·µ»Øµ½Å²Óú¯Êý¡£¡£¡£²»ÐÒµÄÊÇ£¬£¬ÔÚ±àдflex´úÂëʱ¾Í½øÕ¹YY_FATAL_ERROR()²»»áÔÙ·µ»ØÈκÎŲÓᣡ£¡£Õâµ¼ÖÂyy_flex_strncpy()±»Å²Ó㬣¬²¢½«Ô´×Ö·û´®´ÓÅäÖÃÎļþ¸´ÖƵ½Ò»¸ö̫С¶øÎÞ·¨°üÈÝËüµÄ»º³åÇøÖС£¡£¡£
³ýÁËÕâ¸öÌØ¶¨µÄõè¾¶Ö®Í⣬£¬flexÌìÉúµÄ´úÂëÖеĺܶàÆäËû´¦ËùÒ²½øÕ¹¶ÔYY_FATAL_ERROR()µÄÈκÎŲÓÃʼÖÕ²»»á·µ»Ø£¬£¬²¢ÇÒÔÚ½øÕ¹±»·ÛËéʱִÐв»°²È«µÄ²Ù×÷¡£¡£¡£APIµÄ³ö²úÕߺÍÏû·ÑÕßÖ®¼äµÄÈç¹û²»Æ¥ÅäÊÇÒ»¸ö¼«¶È³£¼ûµÄ·ì϶ÆðÔ´¡£¡£¡£
×îÖÕ£¬£¬Í¨¹ýΪÅäÖÃÎļþÌṩÊäÈëÁîÅÆ£¬£¬½âÎöÆ÷ÎÞ·¨´¦ÖÃÕâЩ̫³¤µÄÁîÅÆ£¬£¬´Ë»º³åÇøÒç³ö½«¸²¸Ç¶ÑÖеĹؼü½á¹¹¡£¡£¡£ÕâЩ±»¸²¸ÇµÄ×Ö¶ÎÔ̺¬½âÎöÆ÷½á¹¹ÔªËØ£¬£¬ËüÄܹ»ÓÃ×÷ËÁÒâµÄwrite-what-whereÔÓ£¬ÒÔ»ñÈ¡ËÁÒâ´úÂëÖ´Ðв¢½Ù³ÖÊèµ¼¹ý³Ì¡£¡£¡£
»¹Òª°ÑÎȵÄÊÇ£¬£¬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°ä²¼·ì϶¹«¸æ


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