
ä¿¡é Œæ§ãäœããããããªãŒã«äŸåããCMOS SRAMã«äŸåããããšãªããèšå®ãSPIãããã«ã»ãŒæ°žä¹ ã«ä¿åã§ãããšããäžèŠè¯ãã¢ã€ãã¢ã¯ãUEFIéçºè ãšéåžžã«æ®é ·ãªåè«ãæŒããçŸåšãæšæºã®ãã¹ãŠã®æ°ããããŒãžã§ã³ã®NVRAMã¯ãŸããŸãå¢ããŠããŸãæŸèæãšå°éå ·ããããŠãã®ããã»ã¹ã®çµããã¯èŠããŸããã 圌ããæŸèæã§ããã¯ã¢ããããããšããŠããããšã«èå³ããããªãããã®èšäºã¯ããªãã®ããã§ãã
äŒçµ±çã«ãäœããã®çç±ã§æåã® 3ã€ã® éšåãèªãã§ããªã人ã¯èª°ã§ã-ç§ã¯ãããããå§ããããšããå§ãããŸããç§ã¯ã«ããã®äžã§æ®ãã楜ãã¿ã«ããŠããŸãã
ããŒã4 NVRAM
ãã€ãã¹100äžã®ã¢ã€ãã¢
æ£çŽãªãšãããèšå®ãªããžããªãäœäžçŽã«ãããã£ãŠé 眮ãããŠããCMOS SRAMããã¡ã€ã³ãããã«è»¢éãããšããã¢ã€ãã¢ã誰ãæãã€ããã®ãã¯ããããŸããããçŸæç¹ã§ã¯ãããã¯éã®çç£è ãšéçºè ãžã®ã¯ããµãŒãã¹ã§ãããšèšããŸããã¡ãŒã ãŠã§ã¢ãããã³ãšã³ããŠãŒã¶ãŒã«ã ã©ããããIntelã«ã¯ããã€ãã®çç±ããã£ãããã4ã€ã®ã©ã³ã¿ã€ã ãµãŒãã¹GetVariable / GetNextVariableName / QueryVariableInfo / SetVariableã§è¡šãããNVRAMãžã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãæåã«å ¬éãããIntelã®äžéšã«ãªããŸããïŒUEFIãã©ãŒã©ã ã®çµç¹ãã»ãŒç¬å çã«æ©èœããåã«ïŒæšæºEFI 1.10ãUEFIã®çŸåšã®ãã¹ãŠã®å®è£ ã®å é§è ãNVRAMã¯ã©ã®ããã«æ©èœããŸããïŒ
è«ççã«ãNVRAMïŒUEFIä»æ§ã«æºæ ïŒã¯å€æ°ã®ã»ããã§ãããåå€æ°ã«ã¯GUIDïŒå¿ ãããäžæã§ã¯ãªãïŒãååïŒUCS2ãšã³ã³ãŒãã£ã³ã°ïŒãå±æ§ïŒä»¥äžã§èª¬æïŒãããã³ãã®å€æ°ã«æ ŒçŽãããŠããããŒã¿ããããŸããã¿ã€ãããšã«ãå€æ°ã¯éåžžã®å€æ°ïŒRAMã«ä¿åããããªããŒãæã«å€ãä¿åããªãïŒã NV ïŒå²ãåœãŠãããSPIãããé åã«ä¿åãããåèµ·åæã«ããããèªã¿åãããïŒããã³HR ïŒSPIãããã«ä¿åãããããNVãOSãšã¯å¥ã«æ€åºãããããŒããŠã§ã¢ãšã©ãŒã«ã€ããŠãã¡ãŒã ãŠã§ã¢ã«éç¥ããããã®UEFIãµããŒãïŒã
ã¢ã¯ã»ã¹ã¬ãã«ã«ãã£ãŠãå€æ°ã¯æåã«2ã€ã®ã¿ã€ãã«åããããŸãã-BS ïŒOSãããŒããéå§ããåŸã¯äœ¿çšäžå¯ïŒãšRT ïŒåžžã«äœ¿çšå¯èœïŒã§ãããUEFI 2.3.1CèŠæ Œã«SecureBootãã¯ãããžãŒãå°å ¥ããããããéåžžã®RTå€æ°ã«ããã«2ã€ã®äºçš®ãè¿œå ãããŸãã-AWïŒèšé²çšïŒèªèšŒãå¿ èŠïŒããã³TA ïŒåãã§ããããªãã¬ã€æ»æããä¿è·ããããã®ã¿ã€ã ã¹ã¿ã³ãä»ãïŒã
å€æ°ã®ã¿ã€ãã¯ããã®å±æ§ã«ãã£ãŠæ±ºãŸããŸãã NV + BS + RTã¯ãèµ·åæãšOSã®äž¡æ¹ã§èªã¿åããšæžã蟌ã¿ãå¯èœãªSPIãããã«ä¿åãããŠããå€æ°ã§ãã ãŸããæšæºã§ã¯å€æ°ã®åŠçèŠåãå®çŸ©ãããŠããŸããããšãã°ãRTå±æ§ã®ååšã¯BSã®ååšãèªåçã«æ瀺ããNVå±æ§ã®ãªãå€æ°ãžã®æžã蟌ã¿ã¯OSããäžå¯èœã§ãïŒãã®ãããªå€æ°ã¯ãã¹ãŠãUEFIããŒãããŒããŒãçµäºããExitBSã€ãã³ãã®åŸã«èªã¿åãå°çšã«ãªããŸãïŒ ã
äžèšã®ã€ã³ã¿ãŒãã§ãŒã¹ãå¯äžã®ãã®ã§ãããå€æ°ã«ã¢ã¯ã»ã¹ããããã«åœŒã ãã䜿çšãããå Žåããã¹ãŠãããŸãããã§ãããã æ®å¿µãªãããããã¯å®å šã«çå®ã§ã¯ãªããäžéšã®NVå€æ°ã¯HIIãã©ã€ããŒã䜿çšããŠNVRAMãã©ã€ããŒãã»ãšãã©ãã€ãã¹ããããããŠãŒã¶ãŒã«BIOSã»ããã¢ããã¡ãã¥ãŒãæäŸããããããNVå€æ°ã®ä¿å圢åŒãæšæºåããå¿ èŠããããNVRAMã¯SPIãããã§ã¯ãªããã©ããã«ä¿åãããŸããããã¯ãŸã ããªãé£ããã§ãã
æãæåãªãã®ãããªãã¥ã¢ã«ã¢ã¯ã»ã¹å€æ°ã¯Setupã§ãBIOSã»ããã¢ããããå€æŽã§ããèšå®ã®ã»ãŒ100ïŒ ïŒãã¹ã¯ãŒããšããã€ãã®ãã®ãé€ãïŒãä¿åããŸãã ãã®ãã©ãŒãããã¯ãã»ãŒãã¹ãŠã®ããŒãžã§ã³ãšãã¹ãŠã®ã·ã¹ãã ã§äžæã§ããã HIIãã©ã€ããŒã¯ãã©ã®èšå®ãã©ã®ãªãã»ããã§ããããæ£ç¢ºã«èªèããŠããããªãŒãã³ãœãŒã¹ãŠãŒãã£ãªãã£ã®ãã¢ã䜿çšãããã¡ãŒã ãŠã§ã¢ã€ã¡ãŒãžãããå Žåããã®ç¥èã¯éåžžã«ç°¡åã«æœåºãããŸããããã«ãããæ»æè ã«ãšã£ãŠæœåšçã«å±éºãªæ©äŒãéãããŸãã
NVRAMãžã®æ»æ
玳士ç©å¿ã2
ãªããªã NVå€æ°ãä¿åããã«ã¯ãSPIãããã䜿çšããŸããNVRAMã®åäœã«ã¯ãOSã®åäœäžã«æžã蟌ãå¿ èŠããããŸããããã«ããã ROããããŸãã¯PRã¬ãžã¹ã¿ã®å©ããåããŠããã«ä¿è·ãçµäºããŸãã ããã«ãããããããå€ãã®ã·ã¹ãã ã¡ãŒã«ãŒã¯äŸç¶ãšããŠPRã¬ãžã¹ã¿ã䜿çšããŠãããNVRAMãæžã蟌ã¿ä¿è·ãããŠããªããšãªã¢ã«åé¡ãããããã«èšå®ããŠããŸãããåæã«ãNVRAMçšã®SMMãã©ã€ããŒãšSMM_BWP / SpiRomProtectããããèšå®ããŸãã å¿åŽã®çµæã¯ãèªèšŒãå¿ èŠãšããSecureBootå€æ°ïŒããã«ãã¯ãããžå šäœãå®å šã«åœ¹ã«ç«ããªãããïŒãã»ããã¢ããïŒãã¡ãŒã ãŠã§ã¢ã®æ®ãã®éšåã®ä¿è·ãç¡å¹ã«ããåèµ·ååŸã«æ¢ã«ãã£ã±ãã«ãªããªã©ãå±æ§ã«é¢ä¿ãªããã¹ãŠã®NVå€æ°ãžã®ãã«ã¢ã¯ã»ã¹ã§ãã SPIãããã®ãã¹ãŠã®ã³ã³ãã³ããžã®ã¢ã¯ã»ã¹ïŒãäžè¬çãªDoSã¯èšããŸã§ããããŸããã ãã®ãããªåçŽãªæ»æã«å¯ŸããŠè匱ãªã·ã¹ãã ã®æ°ã¯é©ãã¹ããã®ã§ããããšãã°ãã»ãšãã©ãã¹ãŠã®Acerã©ãããããã¯ãã®æ¹æ³ã§ãä¿è·ããããŠããŸããå¿ãã£ãœãã®ãã1ã€ã®äŸã¯ãã»ããã¢ãããªã©ã®éèŠãªå€æ°ã®ãããã°çšã«RTãé 眮ãããã®å±æ§ãåé€ããã®ãå¿ããããšã§ãã ãã®çµæãOSããçŽæ¥èšå®ãå€æŽã§ããŸããéåžžã«äŸ¿å©ã§ãããSecureBootå šäœãç¡é§ã«ãªããŸãã
çžãè¶ããŠ
å¥ã®æ»æã¯ãäžçã§å€ããç°¡åãªãã®ã§ãã倧ããªå€æ°ãå°ããªå€æ°ãå€ãã®å€æ°ã1ã€ã®åãå€æ°ãNVRAMã«100åæžã蟌ã¿ãŸãã 次ã«ãåèµ·åããŠåå¿ã確èªããŸãã NVRAMã®æ£ããå®è£ ã¯ãäžå¿ èŠãªEFI_OUT_OF_RESOURCESãªã¯ãšã¹ãã«ãã¹ãŠåçãããªããŒãåŸã«ãã¹ãŠãæ©èœããŸãããNVRAMã厩å£ããŠã·ã¹ãã ãäžæããããŒããç¶è¡ã§ããªãå ŽåãäŸãçµæãç°ãªããŸãã ã»ãšãã©ã®å ŽåãDoSã¯ããããååŸãããŸãããæ»æè ãæ¬åœã«å¿ èŠãªå Žåã¯ãäžèšãåç §ããŠãã ãããUEFIããŒããŒã®é襲
ãŸãããã®æ»æã¯ããã»ã©æ°ãããã®ã§ã¯ãããŸããã2013幎ã«ã¯ãåªãããã¹ãåå¿ãããŸããã åœæèš æ»æã®æ¬è³ªã¯ãããŒããŒïŒå°ãªããšãGRUBãå°ãªããšãUEFI Shellãå°ãªããšãUEFIã¢ããªã±ãŒã·ã§ã³ã䜿çšã§ããïŒãExitBSã€ãã³ããçºçããåã«ä»»æã®ã³ãŒããå®è¡ã§ããããšã§ãã ããŒãããŒããŒã®åæ段éã§ã¯ãã»ããã¢ãããå«ãBSå€æ°ã«å®å šã«ã¢ã¯ã»ã¹ã§ããŸãã BIOSã®ã»ããã¢ãããåŒã³åºãããã®æéæ ãçµäºããåŸããã©ãããã©ãŒã ã®è£œé å ããã®å€æ°ãžã®æžã蟌ã¿ãçŠæ¢ããªãã£ãå ŽåïŒãã®ãããªä¿è·ã¯1ã€ã®ç£æ¥çšããŒãã§ããèŠãããŸããã§ããïŒãããŒãããŒããŒïŒãŸãã¯ããŒãããŒããŒã«ã·ã§ã«ãããå Žåã¯ãŠãŒã¶ãŒïŒ ïŒSetupå€æ°ã®å 容ãèªã¿åã£ãŠå€æŽã§ããŸãã5åç®ã¯ããã®å±éºæ§ã«ã€ããŠã¯æžããŸããã ãã®ãããªãããŒãããŒããŒã«å¯Ÿããææ¡ãããŠããä¿è·ã¯SecureBootã§ãããããã©ã«ãã§ããŒã䜿çšãããšãMicrosoftãç²ç®çã«ä¿¡é Œããããšããå§ãããŸãïŒIBVã¯ã·ã§ã«ã§ããŒãããŒããŒã«çœ²åããªãããšãèªããŸããïŒãããã³ããã©ã«ãããŒãæã€ãªãŒãã³OSã®æ奜家ã®ããã«ãMSã ãã§ãªãã Canonicalãæåéããã®æ»æã«å¯ŸããŠé²åŸ¡ãããã®ã¯ãããŸãã-CanonicalããŒã§çœ²åãããã·ã§ã«ããã³ãã®ä»ã®ã°ããºãåããææ°ã®GRUB2ãã«ãã¯UbuntuãªããžããªããçŽæ¥ããŠã³ããŒãã§ããŸããæåŸã®éšåã®çµè«ãšããŠãBIOSã®ãã¹ã¯ãŒãã¯æ£çŽãªäººã®ãã®ã§ãããšè¿°ã¹ãŸããã ç§ã¯èª¬æããŸãïŒããã¯ãã»ãšãã©ã®å Žåãèšå®ãžã®äžæ£ã¢ã¯ã»ã¹ããããããŠBIOSã»ããã¢ããã€ã³ã¿ãŒãã§ãŒã¹ããã¢ã¯ã»ã¹å¯èœãªãã®ããã®ã¿ãä¿è·ããŸãã NVRAMïŒ Read Universal ïŒã«ã¢ã¯ã»ã¹ããããã®é©åãªãŠãŒãã£ãªãã£ãUEFIã€ã¡ãŒãžããŒãµãŒïŒ UEFITool ã PhoenixTool ã uefi-firmware-parser ïŒããã³IFRïŒ Universal IFR Extractor ïŒããŒãµãŒã䜿çšãããšãé衚瀺ã®èšå®ãå«ããã¹ãŠã®èšå®ãžã®ã¢ã¯ã»ã¹ãæŽçã§ããŸãããã¹ã¯ãŒãããã€ãã¹ããBIOSã»ããã¢ããã§ããã§ã³ã¹ã®ç©Žããæãé²ãã®ã«é£œãããšãã«ããã®åããã¹ã¯ãŒãããªã»ããããŸãã
瀟äŒäž»çŸ©ã®ãªã¢ãŒã
æåŸã«ãæšæºã®Linux efibootmgrãŠãŒãã£ãªãã£ãçãã®ãªãBIOSã§å®è¡ã§ããæãç¡å®³ãªNVRAMé¢é£ã®æ»æã æã®äœçžãšå®å®ç·ã®åŒ·åºŠã«å¿ããŠãæã«ã¯æ žã®æ¬¡ã®æŽæ°ã§ã次ã®å€æ°BootXXXXãè¿œå ããã ãã§ãªãããã®åŸããã€ãã®é£æ¥ãããã®ãåé€ããããšãå€æããä»åã®å ç·ãç¹ã«é«ãšãã«ã®ãŒã§ããå Žå-ããã ãã§ãã ãã®åŸãPhoenixãŸãã¯Insydeã«ããUEFIå®è£ ã®çŽ30ïŒ ãå®å šã«åæ¢ããŸããçµå±ãBDSãã§ãŒãºã¯çµäºããèµ·åãããã®ã¯ãããããŸããã åæã«ãBIOSã»ããã¢ãããªã©ã®stè¿·ããæãåºãå¯èœæ§ããã¹ãŠBootXXXXã®äžã«ããããŠãŒã¶ãŒã¯Crisis Recoveryãµãã·ã¹ãã ïŒRTFMã§å¯èœãªå ŽåïŒã䜿çšããããã·ã¹ãã ããµãŒãã¹ã«æã¡èŸŒãå¿ èŠããããŸãã éå»æ°å¹Žã«ããã£ãŠãç§ã¯3ã€ã®æ ¹æ¬çã«ç°ãªãã·ã¹ãã ã§ãã®æ»æã«4åééããŸããã 圌ããèšãããã«ãå®å®æ§ã¯ç¿çã®å åã§ããæé«ã®é²åŸ¡
é説çã«èããããããããŸããããNVRAMã§èµ·ãããããã¹ãŠã®åé¡ã«å¯Ÿããæåã®ä¿è·ã¯ãNVRAMããNVãåé€ããããšã§ãã SPIãããã«ãããã¹ãŠã®å€æ°ãRAMã«è»¢éããBIOSã»ããã¢ããã®çŽåŸã«PRã¬ãžã¹ã¿ã䜿çšããŠãããã®é åã«æžã蟌ã¿ä¿è·ãèšå®ããŸãïŒä»¥åã«è¡ã£ãå Žåãèšå®ã¯ä¿åãããªããªããŸãïŒã NVRAMã®èšé²ãäœããã®æ¹æ³ã§äœ¿çšããå¯äžã®ææ°ã®OSã¯MacOS Xã§ãããSMMãšSecureBootã䜿çšããªãç¬èªã®lunaparkãããããããããã«ã€ããŠã¯å¥ã®è°è«ããããŸãã WindowsãšLinuxã¯ãNV + RTå€æ°ãä¿åãããªããªããã€ã³ã¹ããŒã©ãŒãåé¡ïŒããŒãããŒããŒãBootXXXXã§èšè¿°ããŸãããä¿åãããªããæ²ãã¿ïŒãšããã€ãã®éåžžã«ç¹æ®ãªãœãããŠã§ã¢ïŒéŒ»è¡ãåºãïŒãçµéšããã®ã«åªããŠããŸãå€æ°ãå¿ èŠã§ããããã®ãããªãœãããŠã§ã¢ãèŠãããšã¯ãããŸããïŒã OSã§ã®éåžžã®åäœããCapsule Updateã¡ã«ããºã ã䜿çšãããã¡ãŒã ãŠã§ã¢ã¢ããããŒãïŒãŸãã¯ãã®åã ã®ã³ã³ããŒãã³ãïŒã§ããä¿è·ãããŠããªãNVRAMã®åœ±é¿ã¯ã»ãšãã©ãããŸããã æåããå¿ èŠã ã£ãã®ã ããã...ãããã«
ãµã€ã¯ã«ã¯åŸã ã«çµããã«è¿ã¥ããŠããŸããSecureBootã«å¯Ÿããããã€ãã®æŽå²çãªæ»æã眲åãããŠããªããªãã·ã§ã³ROMã®å±éºæ§ããããŠé¡èãªåé¡ã®å€ããçºèŠãããé¡èãªç·æ§ïŒããã³å¥³æ§ïŒã«ã€ããŠèªã£ãŠããŸãã ããã€ãã®éšåã§ååã§ãã
èªè ã®çããã®æ³šæããã¡ãŒã ãŠã§ã¢ã®æåã«æè¬ããŸããèŠããŠãããŠãã ãããNVRAMã¯è¥ã幎霢ããä¿è·ããå¿ èŠããããŸãã