°ø°ÝÁ¶°Ç ±î´Ù·Î¿î ¸¸Å ÇÑ Á¶°Ç¸¸ Àß ¸·¾Æµµ ¹æ¾î °¡´ÉÇØ
[º¸¾È´º½º=³ë±Ô³² °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå °â ÃÖ°í±â¼úÃ¥ÀÓÀÚ] Spectre Variant 2ÀÎ ¡®Branch Target Injection¡¯Àº MeltDown¿¡ ºñÇØ »ó´ëÀûÀ¸·Î »ç¶÷µéÀÌ ´ú ÀÎÁöÇÏ´Â Ãë¾àÁ¡ÀÌ´Ù. MeltDown Ãë¾àÁ¡À» ¹æÄ¡ÇÒ °æ¿ì °¡´ÉÇÑ »óȲ¿¡ ´ëÇؼ´Â Àß ¾Ë·ÁÁø ¹Ý¸é ÀÌ Ãë¾àÁ¡À¸·Î °ø°ÝÀÚ°¡ ¹«¾ùÀ» ÇÒ ¼ö ÀÖ´ÂÁö¿¡ ´ëÇؼ´Â Àß ¸ð¸£´Â °æ¿ì°¡ ¸¹¾Æ¼ ±×·¸Áö ¾ÊÀ»±î »ý°¢ÇÑ´Ù.
[À̹ÌÁö=iclickart]
»ç½Ç Spectre Variant 2´Â ÀÌ ¼¼ °¡Áö À¯Çü Áß¿¡¼µµ ¸Å¿ì Ưº°ÇÑ ÇüÅ´Ù. °ø°ÝÀ» À§ÇÑ Äڵ尡 ±Ø´ÜÀûÀ¸·Î º¹ÀâÇÏ°í ¾î·Á¿î ±â¼úÀ» »ç¿ëÇÑ´Ù´Â Á¡ÀÌ Ã¹ ¹ø°°í, ¼¼ °¡Áö Áß À¯ÀÏÇÏ°Ô VM escapeÀÌ °¡´ÉÇÑ Ãë¾àÁ¡À̶ó´Â °ÍÀÌ µÎ ¹ø°´Ù. ´Ù½Ã ¸»ÇØ ÀÌ Ãë¾àÁ¡ÀÌ ÆÐÄ¡µÇÁö ¾Ê´Â´Ù¸é guest VM¿¡¼ host kernel ¶Ç´Â ´Ù¸¥ guest VMÀÇ ¸Þ¸ð¸®¸¦ ÀÐÀ» ¼ö ÀÖ´Â °¡´É¼ºÀÌ Á¸ÀçÇÏ°Ô µÈ´Ù.
¹°·Ð ¾Õ¼ ¼³¸íÇÑ´ë·Î °ø°Ý¹æ½ÄÀÌ ¸Å¿ì º¹ÀâÇϱ⠶§¹®¿¡ °ø°ÝÀ» ¼º°ø½ÃÅ°±â À§ÇÑ Áغñ ÀÛ¾÷ºÎÅÍ ¾ÆÁÖ ±î´Ù·Ó´Ù. ±¸±ÛÀÇ PoC Äڵ忡¼´Â KVM host°¡ hypervisorÀÇ ¸Þ¸ð¸®¸¦ ÃÊ´ç 1500¹ÙÀÌÆ®¾¿ ÀÐÀ» ¼ö ÀÖ¾ú´Âµ¥ ÀÌ ÀÛ¾÷À» À§ÇØ 10~30ºÐÀÇ ÃʱâÈ °úÁ¤ÀÌ ÇÊ¿äÇßÀ» Á¤µµ´Ù. ´õºÒ¾î ÀÌ Ãë¾àÁ¡Àº ÀÎÅÚ°è¿ CPU¿¡¸¸ ±¹ÇѵǴ °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡ AMD CPU, ARM, ¸ðµç Á¾·ùÀÇ Çö¼¼´ë CPU°¡ °ø°Ý´ë»óÀÌ µÈ´Ù´Â Á¡¿¡¼ ½É°¢¼ºÀÌ ´õÇÏ´Ù. ´ç¿¬È÷ ÁüÀÛÇÏ°ÚÁö¸¸ guest VMÀÌ host kernelÀ» °ø°ÝÇÒ ¼ö ÀÖ´Ù´Â °Ç ÀÏ¹Ý ¾îÇø®ÄÉÀ̼ÇÀÌ Ä¿³ÎÀ» °ø°ÝÇÏ´Â Àϵµ °¡´ÉÇÏ´Ù´Â ¶æÀÌ´Ù.
Indirect Branch Target Injection
ÀÌ Ãë¾àÁ¡¿¡ ´ëÇØ ¼³¸íÇÏ·Á¸é ÀÌ¿¡ ¾Õ¼ ºÐ±â¿¹Ãø¿¡ ´ëÇÑ »ó¼¼ÇÑ ¼³¸íÀÌ ÇÊ¿äÇÏ´Ù. ¿©±â¼ Branch TargetÀ̶ó´Â °ÍÀº ºÐ±âÀÇ ¸ñÀûÁöÀε¥, ÀÌ °æ¿ì °ø°Ý´ë»óÀÌ µÇ´Â °ÍÀº Á» ´õ Á¤È®ÇÏ°Ô ¸»ÇÏ¸é °£Á¢ºÐ±â ¸ñÀûÁö(Indirect Branch Target)ÀÌ´Ù. Á÷Á¢ºÐ±â´Â ºÐ±âÀÇ ¸ñÀûÁö¸¦ ¸í½ÃÀûÀ¸·Î Ç¥½ÃÇÏÁö¸¸, °£Á¢ºÐ±â¿¡¼´Â ·¹Áö½ºÅͳª ¸Þ¸ð¸®ÀÇ ³»¿ëÀ» ÅëÇØ °£Á¢ÀûÀ¸·Î ¸ñÀûÁö¸¦ ÁöÁ¤ÇÑ´Ù. ¸»ÇÏÀÚ¸é ´ÙÀ½°ú °°´Ù.
¸Þ¸ð¸® AÀÇ ÁÖ¼Ò·Î ºÐ±âÇÑ´Ù(Á÷Á¢ºÐ±â) : ÄÄÆÄÀÏŸÀÓ¿¡ ºÐ±âÁÖ¼Ò¸¦ ¾Ë ¼ö ÀÖ´Ù.
¸Þ¸ð¸® AÀÇ °ªÀÌ °¡¸®Å°´Â ÁÖ¼Ò·Î ºÐ±âÇÑ´Ù(°£Á¢ºÐ±â) : ÄÄÆÄÀÏŸÀÓ¿¡´Â ºÐ±âÁÖ¼Ò¸¦ ¾Ë ¼ö ¾ø°í, ·±Å¸ÀÓ¿¡¸¸ ¾Ë ¼ö ÀÖ´Ù.
Á÷Á¢ºÐ±âÀÇ °æ¿ì´Â ¾îµð·Î ºÐ±âÇÑ´Ù¶ó´Â ÁÖ¼Ò°¡ ¸íÈ®ÇϹǷΠÃßÃø½ÇÇàÀ̳ª ºÐ±â¿¹ÃøÀÌ »ó´ëÀûÀ¸·Î ½±´Ù. ¾î¶² ÁÖ¼Ò·Î À̵¿ÇÏ´ÂÁö ±×·¸Áö ¾ÊÀºÁö¸¸ ÆÇ´ÜÇÏ¸é µÇ±â ¶§¹®ÀÌ´Ù. ÇÏÁö¸¸ °£Á¢ºÐ±âÀÇ °æ¿ì´Â °ªÀÌ µé¾î ÀÖ´Â ÁÖ¼Ò¸¦ º¸°í ±×·ÎºÎÅÍ ºÐ±âÇØ¾ß ÇϹǷΠÈξÀ ¿¹ÃøÀÌ ¾î·Á¿öÁø´Ù. ¾Æ´Ï ¾î·Æ´Ù´Â ¾ê±â Àü¿¡, ¡®¾î¶² °ªÀÌ µé¾î ÀÖ´ÂÁö ¸ð¸£´Âµ¥ ±×·± ºÐ±â¸¦ ¿¹ÃøÇÑ´Ù´Ï ÀÌ°Ô °¡´ÉÇÑ ÀÏÀΰ¡?¡¯¶ó´Â »ý°¢ÀÌ µé ¼öµµ Àִµ¥ ½ÇÁ¦·Î °¡´ÉÇÏ´Ù. °Ô´Ù°¡ »ó´çÈ÷ ³ôÀº È¿À²À» º¸¿©Áֱ⠶§¹®¿¡ ÀÛ±ÝÀÇ CPUµé¿¡ ÀÖ¾î¼ °£Á¢ºÐ±â¿¹ÃøÀº ¼º´É Çâ»ó Â÷¿ø¿¡¼ ¾ÆÁÖ Áß¿äÇÑ ±â´É Áß Çϳª´Ù. ÀÛ¾÷¿¡ µû¶ó ´Ù¸£Áö¸¸ ¾î¶² »óȲ¿¡¼´Â 90% ÀÌ»óÀÇ ÀûÁß·üÀ» º¸¿©Áֱ⵵ ÇÑ´Ù. ƯÈ÷ Çö´ëÀûÀÎ °³¹ß¾ð¾îµéÀº ¸ðµÎ °´Ã¼ÁöÇâÀû Ư¡À» Æ÷ÇÔÇÏ°í Àִµ¥ °´Ã¼ÁöÇâ¿¡¼ ¹Ýµå½Ã ÇÊ¿äÇÑ ¼Ó¼º Áß ÇϳªÀÎ »ó¼ÓÀÇ °¡»óÇÔ¼ö Å×À̺íÀ» ±¸ÇöÇÒ ¶§ ÀÌ °£Á¢ºÐ±â¸¦ »ç¿ëÇÑ´Ù. ±×·¸±â ¶§¹®¿¡ Çö´ëÀûÀÎ ¹æ¹ýÀ¸·Î °³¹ßµÈ ¾ÖÇø®ÄÉÀ̼ÇÀϼö·Ï ÀÌ °£Á¢ºÐ±â¿¹ÃøÀ¸·ÎºÎÅÍ ÀÌÀÍÀ» ¾òÀ» °¡´É¼ºÀÌ ³ô¾ÆÁø´Ù.
´Ù½Ã °£Á¢ºÐ±â ÁÖÁ¦·Î µ¹¾Æ¿Í º¸ÀÚ. °£Á¢ºÐ±â´Â BTB(Branch Target Buffer)¶ó´Â °ÍÀ» »ç¿ëÇØ ¿¹ÃøÇÑ´Ù. ÀÌ ±¸Á¶Ã¼´Â ÇϳªÀÇ Äھ »ç¿ëÇÏ´Â ¾ÖÇø®ÄÉÀÌ¼Ç °£¿¡´Â °øÀ¯µÇ¸ç ºÐ±âÁ¡ÀÇ ÁÖ¼Ò, ű×, ºÐ±âÇÏ´Â ÁÖ¼Ò¸¦ ÀúÀåÇÏ´Â ÀÏÁ¾ÀÇ ·è¾÷ Å×À̺íÀÌ´Ù. CPU´Â ºÐ±â¿¹ÃøÀ» ÇÒ ¶§ BTB¸¦ ã¾Æº¸°í ¸¸¾à ÇöÀç ºÐ±âÀÇ ÁÖ¼Ò°¡ Å×ÀÌºí¿¡ ÀÖ´Ù¸é ÀÌÀü¿¡ ÀÌ ÁÖ¼Ò¿¡¼ ¾î¶² °÷À¸·Î ºÐ±âÇß´ÂÁö ¾Ë ¼ö ÀÖ´Ù. ¸¸¾à ÀÌ ÁÖ¼Ò¿¡¼ÀÇ ºÐ±â°¡ Ç×»ó ƯÁ¤ÇÑ ¸ñÀûÁö·Î °£´Ù¸é À̹ø ºÐ±â¿¡¼µµ ±×·¸°Ô µÉ °¡´É¼ºÀÌ ³ô´Ù°í ÆÇ´ÜÇÒ ¼ö ÀÖ°í, ±× °æ¿ì´Â ÇØ´ç ¸ñÀûÁö·Î ºÐ±âÇÏ´Â ÃßÃø½ÇÇàÀ» ÇÏ´Â °ÍÀÌ °¡Àå ÀÌÀÍÀÌ µÇ´Â °áÁ¤ÀÏ °ÍÀÌ´Ù. °£Á¢ºÐ±â¿¹Ãøµµ ¸¶Âù°¡Áö·Î, BTB¿¡¼ ºÐ±âÁ¡ÀÇ ÁÖ¼Ò¸¦ ã°í ¿©±â¼ ¾îµð·Î °¡Àå ¸¹ÀÌ ºÐ±âÇß´ÂÁö¸¦ È®ÀÎÇϸé ÃßÃø½ÇÇà ½Ã ½ÇÇàÇÒ ÄÚµåÀÇ ÁÖ¼Ò¸¦ È®ÀÎÇÒ ¼ö ÀÖ°Ô µÇ´Â °ÍÀÌ´Ù.
¹®Á¦´Â BTB¿¡¼ ºÐ±âÇÏ´Â ÁÖ¼Ò´Â Àüü¸¦ »ç¿ëÇÏÁö¸¸, ºÐ±âÁ¡ÀÇ ÁÖ¼Ò´Â Àüü¸¦ ±â·ÏÇÏÁö ¾Ê°í ÀϺθ¸À» ÀúÀåÇÑ´Ù´Â Á¡ÀÌ´Ù. ±¸ÇöÀº CPU¿¡ µû¶ó Á¶±Ý¾¿ ´Ù¸£Áö¸¸ ±¸±ÛÀÇ ³í¹®¿¡ µû¸£¸é ¿©±â¼ Å×½ºÆ®Çß´ø ÀÎÅÚ ÇϽºÀ£ CPU´Â ÁÖ¼ÒÀÇ ¸¶Áö¸· 31ºñÆ®¸¸À» À妽º·Î »ç¿ëÇÑ´Ù. »ç½Ç 31ºñÆ®¸¸ »ç¿ëÇÏ´õ¶óµµ ºÐ±âÁ¡ÀÇ À妽º°¡ °ãÄ¥ È®·üÀº 20¾ïºÐÀÇ 1·Î ´ë´ÜÈ÷ ³·¾Æ¼ ½ÇÁ¦ ¼öÇà ½Ã¿¡´Â ¾Æ¹«·± ¹®Á¦°¡ ¾ø´Ù. ÇÏÁö¸¸ Á¤±³ÇÏ°Ô Á¶ÀÛÇÑ Äڵ带 ÅëÇØ °ø°Ý´ë»óÀÌ µÇ´Â ºÐ±âÁ¡ ÁÖ¼Ò¿Í ¸¶Áö¸· 31ºñÆ®°¡ µ¿ÀÏÇÑ ´Ù¸¥ ºÐ±âÁ¡ ÁÖ¼Ò°¡ ÀÖ´Ù¸é CPU´Â À̸¦ ±¸ºÐÇÒ ¼ö ¾ø°Ô µÈ´Ù. ±×¸®°í µ¿ÀÏÇÑ Äھ »ç¿ëÇÏ´Â ¾ÖÇø®ÄÉÀÌ¼Çµé °£¿¡ BTB´Â °øÀ¯µÈ´Ù. Áï ÇÑ ÇÁ·Î¼¼½ºÀÇ °£Á¢ºÐ±â°á°ú´Â ´Ù¸¥ ÇÁ·Î¼¼½ºÀÇ °£Á¢ºÐ±â¿¹Ãø¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. Äھ °øÀ¯Çϱ⸸ ÇÑ´Ù¸é ÇØ´ç ÇÁ·Î¼¼½º°¡ ¹«¾ùÀÌµç »ó°üÀÌ ¾ø´Ù. µû¶ó¼ ÇϳªÀÇ OS¿¡¼ ¿î¿µµÇ´Â µÎ°³ÀÇ ´Ù¸¥ ÇÁ·Î¼¼½º °£, hypervisor¿¡¼ ¿î¿µµÇ´Â µÎ °³ÀÇ guest VM°£¿¡µµ ¿µÇâÀ» ÁÙ ¼ö ÀÖÀ¸¸ç, ±¸±ÛÀÇ PoC¿¡¼ È®ÀÎÇÑ ´ë·Î guest VMÀÌ hypervisorÀÇ °£Á¢ºÐ±â¿¹Ãø¿¡ °£¼·ÇÏ´Â Àϵµ °¡´ÉÇØÁö´Â °ÍÀÌ´Ù.
À§ ±×¸²Àº CPU°¡ jmp1°ú jmp2ÀÇ ºÐ±âÁ¡ ÁÖ¼Ò¸¦ ±¸ºÐÇÒ ¼ö ¾ø´Ù´Â °É º¸¿©ÁØ´Ù. [Ãâó=EVTYUSHKIN, D., PONOMAREV, D. V., AND ABUGHAZALEH, N. B. Jump over ASLR: attacking branch predictors to bypass ASLR. In MICRO (2016), IEEE Computer Society, pp. 1–13]
Spectre Variant 2ÀÇ °ø°Ý±¸Á¶
Spectre Variant 2´Â ÀÌ·± °£Á¢ºÐ±â¿¹ÃøÀÇ ±¸Á¶¿¡ Âø¾ÈÇÑ °ÍÀ¸·Î, °ø°ÝÀ» Çϱâ À§Çؼ´Â °¡Àå ¸ÕÀú ´ë»óÀÌ µÇ´Â ÇÁ·Î¼¼½º ³»¿¡¼ °ø°Ý¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ÄÚµåÁ¶°¢À» ã¾Æ¾ß ÇÑ´Ù. Spectre Variant 1¿¡¼ ¼³¸íÇÑ ´ë·Î À̸¦ gadgetÀ̶ó Çϸç, ÇÁ·Î¼¼½º¿¡ µû¶ó »ç¿ëÇÏ´Â gadgetÀº ´Þ¶óÁú °ÍÀÌ°í ¾î¶² °æ¿ì¿¡´Â ÀûÀýÇÑ °ÍÀ» ãÁö ¸øÇÒ ¼öµµ ÀÖ´Ù. ¶ÇÇÑ Spectre Variant 1´Â °ø°Ý´ë»óÀÎ Á¶°ÇºÐ±â¹®ÀÇ ´ÙÀ½¿¡ ³ª¿À´Â Äڵ尡 ¹Ù·Î gadgetÀÌ µÇ¾î¾ß ÇϹǷΠÀûÀýÇÑ °ÍÀ» ã±â ¾î·ÆÁö¸¸ Spectre Variant 2´Â °£Á¢ºÐ±âÁÖ¼Ò¸¦ ¸¶À½´ë·Î ÁöÁ¤ÇÏ¿© °ø°ÝÇÒ ¼ö ÀÖÀ¸¹Ç·Î °ø°Ý´ë»óÀÇ ÁÖ¼Ò°ø°£ ¾È¿¡ ÀÖ´Â ¾î¶² ¹ÙÀÌÆ®½ºÆ®¸²µµ Á¶°Ç¿¡ ¸Â´Â´Ù¸é »ç¿ëÇÒ ¼ö ÀÖ´Ù. °ø°Ý¹æ½ÄÀº ´Ù¸£Áö¸¸ ÇØÄ¿µéÀÌ Ä§ÇظñÀûÀ¸·Î ÀÌ·± gadgetÀ» »ç¿ëÇØ¿Â Áö´Â ÀÌ¹Ì ¿À·¡µÆ±â ¶§¹®¿¡ ÀÌ·± ÀÛ¾÷À» »ç¶÷ÀÌ ÀÏÀÏÀÌ ÇÏ°Ô µÇÁö´Â ¾Ê°í ÇÁ·Î¼¼½º °ø°£À» °Ë»öÇÏ¿© ¾î¶² ƯÁ¤ÇÑ ¸ñÀû¿¡ ¸Â´Â gadgetµéÀ» ã¾ÆÁÖ´Â µµ±¸µéÀÌ ÀÌ¹Ì ³ª¿Í ÀÖ´Ù. µû¶ó¼ ½ÇÁ¦ °ø°Ý ½Ã¿¡´Â ÀÌ·± µµ±¸µéÀ» »ç¿ëÇÏ¿© ½Ã°£À» ´ÜÃàÇÏ°Ô µÈ´Ù. gadget ¾øÀÌ´Â ´ç¿¬È÷ °ø°ÝÀ» ÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ¿©·¯ °¡Áö ¹æ¹ýÀ» µ¿¿øÇØ gadgetÀÌ µÉ ¼ö ÀÖ´Â Äڵ带 ã¾Æ³»´Â °ÍÀÌ Áß¿äÇÏ´Ù. ±¸±ÛÀÇ ³í¹®¿¡ ³ª¿Â ¿¹¸¦ µéÀÚ¸é Windows 8°ú Windows 10ÀÇ ntdll.dll¿¡´Â ´ÙÀ½°ú °°Àº gadgetÀÌ Á¸ÀçÇÑ´Ù. ÀÌ ¹ÙÀÌÆ®½ºÆ®¸²ÀÌ ¿ø·¡ ¾î¶² ¸ñÀûÀ¸·Î »ç¿ëµÇ´ÂÁö´Â Áß¿äÇÏÁö ¾Ê´Ù.
13 BC 13 BD 13 BE 13
12 17
ÀÌ gadgetÀº ¾î¼Àºí¸®·Î ¾²¸é ´ÙÀ½°ú °°Àº Äڵ尡 µÈ´Ù.
adc edi,dword ptr [ebx+edx+13BE13BDh]
adc dl,byte ptr [edi]
ÀÌ gadgetÀº ·¹Áö½ºÅÍ edi¿¡ ebx+edx+13BE13BDhÀÌ °¡¸®Å°´Â ÁÖ¼ÒÀÇ °ªÀ» ´õÇÏ°í, ±× ÈÄ ¹Ù·Î ¹Ù·Î ·¹Áö½ºÅÍ edi°¡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ 1¹ÙÀÌÆ® °ªÀ» dl¿¡ ´õÇÏ´Â ¸Å¿ì °£´ÜÇÑ ÄÚµåÀÌ´Ù. ÀÌ gadgetÀ» ½ÇÇà½ÃÅ°±â Àü¿¡ ·¹Áö½ºÅÍ edi, ebx, edx¸¦ ¸ðµÎ Á¶ÀÛÇÒ ÇÊ¿ä°¡ Àִµ¥ ÀÏ´Ü ebx¿Í edx¿¡ ´ÙÀ½°ú °°Àº °ªµéÀ» »ç¿ëÇß´Ù°í °¡Á¤ÇÏÀÚ. ¿©±â¼ mÀº Àб⸦ ¿øÇÏ´Â °ø°Ý´ë»ó ¸Þ¸ð¸®ÀÇ ÁÖ¼ÒÀÌ´Ù.
ebx = m – 0x13BE13BD – edx
edx = 3
·¹Áö½ºÅÍ °ªÀ» ÀÌ·¸°Ô ¼³Á¤Çß´Ù¸é ù ¹ø° ¿¬»êÀº m–0x13BE13BD–3+3+0x13BE13BD=m, Áï ¸Þ¸ð¸® ÁÖ¼Ò m¿¡¼ 32bit °ªÀ» ÀÐ¾î¼ edi¿¡ ´õÇÏ°Ô µÈ´Ù. µÎ ¹ø° ¿¬»ê¿¡¼´Â °è»êµÈ ediÀÇ °ª¿¡ ÇØ´çÇÏ´Â ÁÖ¼Ò¿¡¼ 1¹ÙÀÌÆ®¸¦ ÀÐ¾î¼ dl¿¡ ´õÇϴµ¥ dl ·¹Áö½ºÅÍ ÀÚü´Â ¾Æ¹«·± Àǹ̵µ ¾ø´Ù. ¿©±â¼ Áß¿äÇÑ °ÍÀº ÀÌ ÁּҷκÎÅÍ µ¥ÀÌÅ͸¦ ÀоúÀ¸¹Ç·Î ÀÌ µ¥ÀÌÅÍ°¡ ij½¬¿¡ ¿Ã¶ó°¡ ÀÖÀ» °ÍÀ̶ó´Â Á¡ÀÌ´Ù. ¶ÇÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç °£ °øÀ¯µÇ´Â DLLÀº Çϳª¸¸ ¸Þ¸ð¸®¿¡ ·ÎµåµÇ¸ç, ÀÌ DLLÀÌ »ç¿ëÇÏ´Â °¡»ó¸Þ¸ð¸® ÁÖ¼Ò´Â ¸ðµç ¾ÖÇø®ÄÉÀ̼ǿ¡¼ µ¿ÀÏÇÏ´Ù. µû¶ó¼ DLL¿¡¼ ¾²´Â ¸Þ¸ð¸® ¿µ¿ªÀ» ÅëÇØ ¼·Î ´Ù¸¥ ÇÁ·Î¼¼½º °£¿¡ µ¥ÀÌÅ͸¦ °øÀ¯ÇÏ´Â ÀÏÀÌ °¡´ÉÇѵ¥ ¸¸¾à edi¿¡ ÇØ´çÇÏ´Â ÁÖ¼Ò°¡ ÀÌ ¿µ¿ª¿¡ Á¸ÀçÇÑ´Ù¸é °ø°ÝÀÚ ÇÁ·Î¼¼½º°¡ ÀÌ ÁÖ¼Ò¸¦ ÀÐÀ» ¼ö ÀÖ´Ù. ±×¸®°í m¿¡¼ ÀÐÀº °ª x¿¡ µû¶ó edi+x¿¡ ÇØ´çÇÏ´Â ÁÖ¼Ò°¡ ij½¬¿¡ ¿Ã¶ó¿Í ÀÖÀ» °ÍÀ̹ǷΠ¾Õ¼¿Í °°Àº Side Channel AttackÀ¸·Î ´ë»óÀÇ ¸Þ¸ð¸®°ªÀ» È®ÀÎÇÏ¸é µÈ´Ù. ½ÇÁ¦·Î´Â ij½¬¶óÀÎÀÌ ÀÖÀ¸¹Ç·Î edi¸¦ ÀûÀýÇÏ°Ô Áõ°¡½ÃÄÑ°¡¸é¼ ¹Ýº¹ Å×½ºÆ®ÇØ Á¤È®ÇÑ °ªÀ» ¾ò¾î¾ß ÇÒ °ÍÀÌ´Ù. ¸¸¾à ¸®´ª½º¿¡¼¶ó¸é DLLÀÌ ¾Æ´Ï¶ó shared library¸¦ »ç¿ëÇØ °°Àº °ø°ÝÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Ù.
½ÇÁ¦ Spectre Variant2¸¦ ÀÌ¿ëÇØ °ø°ÝÀ» ÇÒ ¶§´Â, °¡Àå ¸ÕÀú Á¶ÀÛÀ» ÅëÇØ °ø°Ý´ë»óÀÇ ºÐ±âÁ¡ ÁÖ¼Ò¿Í ¸¶Áö¸· 31ºñÆ®°¡ µ¿ÀÏÇÑ ÁÖ¼Ò¸¦ Çϳª ¼±ÅÃÇØ ¿©±â¿¡ °£Á¢ºÐ±âÁ¡À» µÐ´Ù. ±×¸®°í ÇØ´ç °£Á¢ºÐ±âÁ¡¿¡¼ °ø°ÝÀÚ°¡ ½ÇÇàÇÏ°í ½ÍÀº ÄÚµå(Áï gadget)·Î °è¼Ó ºÐ±âÇϵµ·Ï ½ÇÇàÀ» ¹Ýº¹ÇØ ÇнÀÇÑ´Ù. ±× ÈÄ °ø°Ý´ë»óÀÌ ½ÇÁ¦ ºÐ±âÁ¡¿¡¼ ÃßÃø½ÇÇàÀ» ÅëÇØ ºÐ±â ¸ñÀûÁöÀÇ Äڵ带 ½ÇÇàÇÏ·Á°í ÇÒ ¶§´Â BTBÀÇ ³»¿ë¿¡ ±Ù°ÅÇØ gadgetÀÌ ½ÇÇàµÅ¾ß ÇÑ´Ù°í ÃßÃøÇÏ°Ô ¸¸µå´Â °ÍÀÌ´Ù. ¹°·Ð ÀÌ °æ¿ì´Â ¿Ã¹Ù¸¥ ÃßÃøÀÌ ¾Æ´Ï¹Ç·Î ¹Ù·Î ÆÄÀÌÇÁ¶óÀÎÀº ºñ¿öÁö°í ½ÇÇàÀº Ãë¼ÒµÈ´Ù. ÇÏÁö¸¸ À§ÀÇ ¿¹¿¡¼ º¸¾ÒµíÀÌ gadgetÀÌ °ø°Ý´ë»óÀÇ ¸Þ¸ð¸®¸¦ Àаí À̸¦ ij½¬¶óÀο¡ ³²±ä´Ù¸é ½ÇÇàÀÌ Ãë¼ÒµÉÁö¶óµµ ¾Õ¼ÀÇ °ø°Ý°ú ¸¶Âù°¡Áö·Î ij½¬¿Í ÀÏ¹Ý ¸Þ¸ð¸® Á¢±Ù ¼ÓµµÂ÷¿¡ ÀÇÇØ Á¤º¸¸¦ Àо ¼ö ÀÖ´Ù. ¾Õ¼ ¾ð±ÞÇÑ ´ë·Î CPU´Â ¾î¶² ¾îÇø®ÄÉÀ̼ÇÀÌ BTB¸¦ »ç¿ëÇÏ´ÂÁö ¾Ë ¼ö ¾ø´Ù. µû¶ó¼ °°Àº Äھ ¾²´Â ¾ÖÇø®ÄÉÀÌ¼Ç µÎ °³¸¦ ¶ç¿ö¼ ÇÑÂÊ¿¡¼ ´Ù¸¥ ÂÊÀÇ °£Á¢ºÐ±â½Ã gadgetÀ» ½ÇÇàÇϵµ·Ï ÇнÀ½ÃÅ°´Â ÇüÅÂÀÇ °ø°ÝÀÌ °¡´ÉÇØÁö´Â °ÍÀÌ´Ù.
Spectre Variant 2ÀÇ ´ëÀÀ
ÀÌ Ãë¾àÁ¡¿¡ ´ëÇؼ´Â ±¸±ÛÀÌ retpolineÀ̶ó´Â ¹æ¹ýÀ» Á¦½ÃÇÑ ¹Ù Àִµ¥, À̴ ƯÁ¤ ÁÖ¼Ò·Î °£Á¢ºÐ±âÇÒ ¶§ ÁÖ¾îÁø ÁÖ¼Ò·Î ¹Ù·Î ºÐ±âÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÄݽºÅÿ¡ ºÐ±âÇÒ ÁÖ¼Ò¸¦ ½×°í ret·Î ¸®ÅÏÇÏ¸é¼ ÇØ´ç ÁÖ¼Ò·Î À̵¿ÇÏ°Ô ÇÏ´Â ¹æ¹ýÀÌ´Ù. °£Á¢ºÐ±â°¡ ¾Æ´Ï¹Ç·Î BTB¸¦ »ç¿ëÇÏÁö ¾Ê°í ÃßÃø½ÇÇà ½Ã¿¡´Â ¹«ÇÑ·çÇÁ¿¡ ºüÁö´Â ±¸Á¶·Î µÅ Àֱ⠶§¹®¿¡ °á°úÀûÀ¸·Î´Â ¸ðµç ÃßÃø½ÇÇàÀÌ ½ÇÆÐÇÏ¸ç ¾à°£ÀÇ ¼º´ÉÇ϶ôÀ» °¨¼öÇÏ¸é¼ ÇØ´ç Ãë¾àÁ¡¿¡ ¾ÈÀüÇÑ ±¸Á¶¸¦ ¸¸µé ¼ö ÀÖ´Ù. ±¸±ÛÀÌ Á¦½ÃÇÑ ¿¹Á¦ ÄÚµå Çϳª¸¦ µû¶ó°¡¸é¼ È®ÀÎÇغ¸ÀÚ. ¿ø·¡ÀÇ °£Á¢ºÐ±â ÄÚµå´Â ´ÙÀ½°ú °°Àº ¸í·ÉÀÌ´Ù.
jmp *%r11
ÀÌ ¸í·ÉÀº ·¹Áö½ºÅÍ r11ÀÌ °¡¸®Å°´Â ÁÖ¼Ò·Î ºÐ±âÇ϶ó´Â ÀüÇüÀûÀÎ °£Á¢ºÐ±â ÄÚµåÀÌ´Ù. ¾Õ¼ ¼³¸íÇÑ ´ë·Î ÀÌ ºÐ±âÁ¡ÀÇ ÁÖ¼Ò´Â BTB¿¡ ÀúÀåµÆ´Ù°¡ ±× È£Ãâ³»¿ª¿¡ µû¶ó ÃßÃø½ÇÇà ½Ã ºÐ±âÇÒ ÁÖ¼Ò¸¦ ÃßÁ¤ÇÏ´Â µ¥ »ç¿ëµÈ´Ù. µû¶ó¼ BTB¸¦ ¿À¿°½ÃÅ°´Â Spectre Variant 2ÀÇ Ãë¾àÁ¡¿¡ ÀÇÇØ °ø°Ý¹ÞÀ» ¼ö ÀÖ´Ù. ±×·±µ¥ ÀÌ Äڵ带 ´ÙÀ½°ú °°ÀÌ º¯°æÇغ¸ÀÚ.
¡¡¡¡call set_up_target;¡¡¡¡(1)
capture_spec:¡¡¡¡¡¡¡¡¡¡¡¡(4)
¡¡¡¡pause;
¡¡¡¡jmp capture_spec;
set_up_target:
¡¡¡¡mov %r11, (%rsp);¡¡¡¡(2)
¡¡¡¡ret;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡(3)
(1)¿¡¼ ¸ÕÀú set_up_targetÀ» ÇÔ¼öÈ£ÃâÇÑ ÈÄ (2)¿¡¼´Â °£Á¢ºÐ±âÇØ¾ß ÇÏ´Â ÁÖ¼ÒÀÎ r11¸¦ rspÀÇ À§Ä¡¿¡ ÀúÀåÇÑ´Ù. ±×·±µ¥ rsp´Â ÇÔ¼ö°¡ µ¹¾Æ°¥ À§Ä¡¸¦ ÀúÀåÇÏ´Â ½ºÅÃÆ÷ÀÎÅÍÀ̹ǷΠ(3)¿¡¼ retÀ» ½ÇÇàÇÒ ¶§ µ¹¾Æ°¡´Â ÁÖ¼Ò´Â ¿ø·¡ÀÇ È£Ãâ À§Ä¡ ¹Ù·Î ´ÙÀ½ÀÎ (4)°¡ ¾Æ´Ï¶ó r11ÀÌ µÈ´Ù. Áï ¿ø·¡ ÄÚµåÀÇ Àǵµ´ë·Î r11ÀÇ À§Ä¡·Î À̵¿ÇÏ´Â Äڵ尡 ¿Ï¼ºµÇ´Â °ÍÀÌ´Ù. ¸¸¾à ÀÌ Äڵ带 ÃßÃø½ÇÇàÇÏ·Á°í Çصµ CPU´Â ½ºÅÃÆ÷ÀÎÅ͸¦ µ¤¾î ¾´´Ù´Â ÀÌ·ÊÀûÀÎ »óȲ¿¡ ´ëÇؼ´Â ¾ËÁö ¸øÇϹǷΠ(1) (2) (3) (4)¸¦ Â÷·Ê·Î ÆÄÀÌÇÁ¶óÀο¡ ÀûÀçÇÑ ÈÄ ¸¶Áö¸·À¸·Î jmp capture_specÀ» ½ÇÇàÇÏ´Â ¹«ÇÑ·çÇÁ·Î¸¸ ÀνÄÇÑ´Ù. µû¶ó¼ BTB¸¦ ¿À¿°½ÃÅ´À¸·Î½á gadgetÀ¸·Î °£Á¢ºÐ±â¸ñÇ¥¸¦ ÁöÁ¤ÇÏ·Á´Â °ø°ÝÀÚÀÇ Àǵµ´Â ½ÇÆÐÇÏ°Ô µÈ´Ù. ÀÌ´Â CPU ·¹º§ÀÇ Á¶Ä¡ ¾øÀÌ Spectre Variant 2¸¦ È¿°úÀûÀ¸·Î ¹æ¾îÇÒ ¼ö ÀÖ´Â ´ëÃ¥À̸ç, ¿¹»óµÇ´Â ¼º´É»óÀÇ ºÒÀÌÀ͵µ Å©Áö ¾Ê´Ù. ´Ù¸¸ retpolineÀ¸·Î ÀÌ Ãë¾àÁ¡¿¡ ´ëÀÀÇÑ´Ù¸é Spectre Variant 1°ú ¸¶Âù°¡Áö·Î °³º° OS³ª ¾îÇø®ÄÉÀÌ¼Ç ´ÜÀ§·Î ´ëÀÀÇÏÁö ¾ÊÀ¸¸é ¾È µÈ´Ù.
ÀÌ¹Ì ¸®´ª½º Áø¿µ¿¡¼´Â retpolineÀ» Àû¿ëÇÑ Ä¿³ÎÀÌ ¸±¸®ÁîµÆÀ¸¸ç, gcc¿¡µµ -mindirect-branch={thunk|thunk_inline} ¿É¼ÇÀ» Á༠À¯»çÇÑ °£Á¢ºÐ±âÄڵ带 jmp & call ÇüÅ·ΠÄÄÆÄÀÏÇØÁÖ´Â ±â´ÉÀÌ Ãß°¡µÆ´Ù. ¸®´ª½ºÀÇ °æ¿ì »ç¿ëÇÏ´Â ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¿ÀǼҽºÀÎ °æ¿ì°¡ ¸¹À¸¹Ç·Î À̶§´Â Ä¿³ÎÀ» ÆÐÄ¡ÇÏ°í »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀ» ¸ðµÎ retpoline ½ºÅ¸ÀÏÀ¸·Î ¸®ºôµåÇϸé ÀÌ Ãë¾àÁ¡À¸·ÎºÎÅÍ ¾ÈÀüÇÏ°Ô ¿î¿µÇÒ ¼ö ÀÖ´Ù.
ÀÌ Ãë¾àÁ¡¿¡ ´ëÀÀÇÏ´Â ´Ù¸¥ ¹æ¹ýÀº, CPU ·¹º§ÀÇ ¸¶ÀÌÅ©·ÎÄÚµå ¾÷µ¥ÀÌÆ®¸¦ ÅëÇØ °£Á¢ºÐ±â¿¹Ãø °ø°ÝÀ» ¸øÇϵµ·Ï ¿øõÀûÀ¸·Î Â÷´ÜÇÏ´Â °ÍÀÌ´Ù. MS°¡ ÀÌ·± ¹æ½ÄÀÇ ¾÷µ¥ÀÌÆ®¸¦ Á¦°øÇÏ°í Àִµ¥, ½ÇÁúÀûÀ¸·Î À©µµ¿ì¿¡¼ ¸ðµç ¾ÖÇø®ÄÉÀ̼ÇÀ» ´Ù½Ã ºôµåÇÏ´Â ÀÏÀº ºÒ°¡´ÉÇϱ⠶§¹®¿¡ ºÒ°¡ÇÇÇÑ ¼±ÅÃÀ̾úÀ» °ÍÀÌ´Ù. ¹°·Ð ¸®´ª½º¿¡¼µµ °°Àº ¹æ½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ½ÇÁ¦ ÆÐÄ¡ÀÇ ³»¿ëÀº CPUÀÇ ¸¶ÀÌÅ©·ÎÄÚµå ¾÷µ¥ÀÌÆ® ÈÄ IBRS, STIBP, IBPB ±â´ÉÀ» È°¼ºÈÇÏ´Â °ÍÀÌ´Ù. µû¶ó¼ OS ·¹º§¿¡¼ ÇÏ´Â ÀÏÀº º°·Î ¾ø°í °ø°Ý¹æ¾î´Â ÀüÀûÀ¸·Î CPUÀÇ »õ ±â´É¿¡ ÀÇÁ¸ÇÑ´Ù. °¢ ±â´ÉÀÇ ³»¿ëÀº ´ÙÀ½°ú °°´Ù.
IBRS(Indirect Branch Restricted Speculation) : °£Á¢ºÐ±â¿¹Ãø ±â´É ÀÚü¸¦ ¿ÏÀüÈ÷ ²¨¹ö¸®´Â °ÍÀÌ´Ù. Ä¿³Î¸ðµå, ¶Ç´Â Ä¿³Î ¹× »ç¿ëÀÚ ¸ðµå ¾çÂÊ ¸ðµÎ¿¡¼ ¼±ÅÃÀûÀ¸·Î ²ø ¼ö ÀÖ´Ù.
STIBP(Single Thread Indirect Branch Predictors) : ´ÜÀÏ ÄÚ¾î ³» ÇÏÀÌÆÛ¾²·¹µùÀ¸·Î ÄÜÆ®·ÑµÇ´Â °£Á¢ºÐ±â¿¹ÃøÀ» ¸·´Â´Ù.
IBPB(Indirect Branch Prediction Barriers) : »ç¿ëÀÚ ¸ðµå °£, ¶Ç´Â Ä¿³Î ¸ðµå·Î ÄÁÅؽºÆ® ½ºÀ§ÄªÀ» ÇÒ ¶§ BTB¸¦ ºñ¿ö¼ °ø°ÝÀÇ °¡´É¼ºÀ» Á¦°ÅÇÑ´Ù.
ÀÌ·± Á¾·ùÀÇ ¾÷µ¥ÀÌÆ®´Â CPUÀÇ ³»ºÎ ÀÛµ¿ ±âÀÛÀ» ¹Ù²Ù´Â ¸Å¿ì Å« º¯°æÀ̶ó ÃæºÐÇÑ Å×½ºÆ®¸¦ °ÅÃļ »ç¿ëÀÚ¿¡°Ô Àü´ÞµÇ¾î¾ß Çϳª À̹ø¿¡´Â »ç¾ÈÀÌ »ç¾ÈÀÎ ¸¸Å ¸Å¿ì ±Þ¹ÚÇÏ°Ô ¸¸µé¾î¼ ¹èÆ÷µÉ ¼ö¹Û¿¡ ¾ø¾úÀ¸¸ç ±× ¶§¹®ÀÎÁö ÃÖ±Ù±îÁö Àû¿ë ÈÄ ºí·ç½ºÅ©¸°À̳ª ÀçºÎÆÃÀÌ »ý±ä´Ù´Â º¸°í°¡ ¼ÓÃâÇÏ°í ÀÖ´Ù. ¶Ç, °¢ CPU ¼¼´ë¸¶´Ù ³»ºÎ ¾ÆÅ°ÅØó°¡ ¸ðµÎ ´Ù¸£±â ¶§¹®¿¡ °¢°¢ ´Ù¸¥ ¼Ö·ç¼ÇÀ» Á¦°øÇÒ ¼ö¹Û¿¡ ¾ø´Âµ¥, »ç¿ëÀÚ ÀÔÀåÀ» »ý°¢Çϸé ÇöÀç ½ÃÀå¿¡¼ »ç¿ëµÇ´Â ¸ðµç CPU¿¡ ´ëÇÑ ÆÐÄ¡¸¦ ÀÛ¼ºÇØ¾ß Çϳª ±×·¯±â¿¡´Â ³Ê¹« ºÎ´ãÀÌ Å©±â ¶§¹®¿¡ Á¦Á¶»çµéÀÇ °í¹ÎÀÌ ±í¾îÁö°í ÀÖ´Ù.
ÀÎÅÚÀÇ Ã¹ ¹ø° ÆÐÄ¡´Â ºê·ÎµåÀ£, ÇϽºÀ£, ½ºÄ«ÀÌ·¹ÀÌÅ©, Ä«ºñ·¹ÀÌÅ©, Ä¿ÇÇ·¹ÀÌÅ©¿¡ ´ëÀÀÇÏ´Â °ÍÀ̾úÀ¸³ª ¾ÈÁ¤¼º ¹®Á¦°¡ ´ëµÎµÇÀÚ ÀÎÅÚÀº ÀÌ·ÊÀûÀ¸·Î ÀڽŵéÀÇ ÆÐÄ¡¸¦ Àû¿ëÇÏÁö ¸»¶ó´Â °øÁö¸¦ ³½ ÈÄ µÎ ¹ø° ÆÐÄ¡¸¦ ³»³õ¾ÒÀ¸¸ç ÀÌ ¾÷µ¥ÀÌÆ®´Â ÇöÀçÀÇ ÁÖ·ÂÁ¦Ç°ÀÎ ½ºÄ«ÀÌ·¹ÀÌÅ©¿Í Ä«ºñ·¹ÀÌÅ©, Ä¿ÇÇ·¹ÀÌÅ©±îÁö¸¸ ´ëÀÀÇÑ´Ù. ºê·ÎµåÀ£, ÇϽºÀ£Àº ¾ÆÁ÷±îÁö ¼Ò½ÄÀÌ ¾ø°í, ±×º¸´Ù ¿¹Àü ÇÁ·Î¼¼¼ÀÎ »÷µðºê¸´Áö, ¾ÆÀ̺ñºê¸´Áö¿¡ ´ëÇÑ ÄÚµå´Â ¿©ÀüÈ÷ º£Å¸ Å×½ºÆ®ÁßÀ̶ó´Â °ÍÀÌ ÀÎÅÚÀÇ ÀÔÀåÀÌ´Ù. »÷µðºê¸´Áö°¡ ÄÚ¾î ¾ÆÅ°ÅØóÀÇ µÎ ¹ø° ¼¼´ë Á¦Ç°(2011³â)À̶ó´Â °ÍÀ» »ý°¢ÇÏ¸é ±×ÀüÀÇ ³×ÇÒ·½(2008³â)±îÁö Áö¿øÇϱâ´Â ¾î·Á¿ö º¸ÀÌ°í ÀÎÅÚÀÇ ¾÷µ¥ÀÌÆ®´Â ÀÌ ¼öÁØ¿¡¼ ¸¶¹«¸® µÉ °¡´É¼ºÀÌ ³ô´Ù. ¶Ç ÆÐÄ¡ ÀÚü°¡ ¾ÈÁ¤µÇ¾î ÀÖÁö ¾Ê¾Æ¼ ¼º´É¿¡ ´ëÇÑ °ËÁõÀº ¾ÆÁ÷ ½ÃÀÛµµ ¸øÇÑ »óÅÂÀ̹ǷΠƯº°ÇÑ »çÁ¤ÀÌ ÀÖÁö ¾Ê´Ù¸é ÀÌ Ãë¾àÁ¡¿¡ ´ëÇÑ ´ëÀÀÀº ¾î´À Á¤µµ ´ë±âÇÏ´Â ÆíÀÌ ±ÇÀåµÈ´Ù(¼º´É»ó ºÒÀÌÀÍÀº ÇÑÁ¤ÀûÀÏ °ÍÀ¸·Î ÃßÁ¤ÇÑ´Ù). MeltDownó·³ ¸Å¿ì Å©¸®Æ¼ÄÃÇÏ°í ½Ã±ÞÇÏ°Ô ´ëÀÀÇØ¾ß ÇÏ´Â Á¤µµÀÇ À§Ç輺ÀÌ ÀÖ´Â °ÍÀº ¾Æ´Ï¹Ç·Î ºí·ç½ºÅ©¸°À̳ª Ä¿³ÎÆдÐÀÇ ¸®½ºÅ©¸¦ °¨¼öÇϸ鼱îÁö »¡¸® ÆÐÄ¡ÇØ¾ß ÇÏ´Â °Ç ¾Æ´Ñ °ÍÀÌ´Ù.
ÇöÀç ÀÎÅÚ»Ó¸¸ ¾Æ´Ï¶ó AMD, ARM °³º° CPU¿¡ ´ëÇÑ ÆÐÄ¡µéµµ °ÅÀÇ ³ª¿Í ÀÖÁö¸¸ ÀÌ ÆÐÄ¡´Â BIOS¸¦ Æ÷ÇÔÇÑ Çϵå¿þ¾î º¥´õÀÇ µµ±¸¸¦ ÅëÇؼ¸¸ ¼³Ä¡ÇÒ ¼ö Àֱ⠶§¹®¿¡ ´ëÀÀÀÌ ´Ê¾îÁö°í ÀÖ´Ù. Áï ÀÎÅÚÀÌ Æ¯Á¤ CPU¿¡ ´ëÇÑ ¸¶ÀÌÅ©·ÎÄÚµå ¾÷µ¥ÀÌÆ®¸¦ ³»³õ¾Ò´Ù°í ÇÏ´õ¶óµµ º¸µå³ª ¼¹öº¥´õ°¡ BIOS ÆÐÄ¡ ÆÐÅ°Áö¸¦ Á¦°øÇÏÁö ¾ÊÀ¸¸é ¾÷µ¥ÀÌÆ®°¡ µÇÁö ¾Ê´Â °ÍÀÌ´Ù. µû¶ó¼ ¿À·¡µÈ ¸ÞÀκ¸µå¸¦ ¾²´Â »ç¿ëÀÚµéÀÇ °æ¿ì´Â »ç½Ç»ó ÆÐÄ¡¸¦ Àû¿ëÇÒ ¹æ¹ýÀÌ ¾ø´Ù.
ÇÏÁö¸¸ Spectre Variant 1°ú ¸¶Âù°¡Áö·Î ÀÌ Ãë¾àÁ¡µµ ¼º¸³Çϱâ À§ÇÑ ¿©·¯ °¡Áö ÀüÁ¦Á¶°ÇµéÀÌ ÀÖ¾î¼ ½ÇÁ¦ °ø°ÝÀº ¸Å¿ì ±î´Ù·Î¿î ÆíÀÌ´Ù. °ø°Ý´ë»ó¿¡¼ ÀûÀýÇÑ gadgetÀ» ã¾Æ¾ß ÇÏ°í, °ø°ÝÀÚ¿Í °ø°Ý´ë»óÀÌ ¸ðµÎ Á¢±Ù °¡´ÉÇÑ ÁÖ¼Ò°ø°£ÀÌ ÀÖ¾î¾ß Çϸç, °°Àº BTB¸¦ »ç¿ëÇØ¾ß ÇϹǷΠÄھ ´Ù¸£¸é °ø°ÝÀÇ È¿°ú°¡ ¾ø¾î¼ ±¸±ÛÀÇ PoC¿¡¼Ã³·³ °ø°ÝÀÚ¿Í °ø°Ý´ë»óÀÌ µ¿ÀÏÇÑ Äھ »ç¿ëÇϵµ·Ï pinÇØ¾ß ÇÑ´Ù. °ø°ÝÇÏ°íÀÚ ÇÏ´Â °£Á¢ºÐ±âÄÚµåÀÇ ÁÖ¼Ò¸¦ ¸ÕÀú ¾Ë¾Æ¾ß ÇÏ°í ±×·ÎºÎÅÍ ÀÌ¿Í ÇÏÀ§ÁÖ¼Ò°¡ µ¿ÀÏÇÑ °ø°ÝÄڵ带 ¸¸µéÁö ¾ÊÀ¸¸é ¾È µÈ´Ù.
ÀÏ·Ê·Î VM¿¡¼ hypervisor¸¦ °ø°ÝÇÏ·Á°í ÇÑ´Ù¸é ÀÏ´Ü ¾î¶² hypervisor¸¦ ¾²´ÂÁö ¾Ë¾Æ¾ß Çϸç, ÇØ´ç hypervisorÀÇ ¹öÀü, ¸Þ¸ð¸® ·¹À̾ƿô, »ç¿ë °¡´ÉÇÑ gadgetÀÇ À§Ä¡, °£Á¢ºÐ±â°¡ ÀϾ´Â ½ÃÁ¡, hypervisor ÀÔÀå¿¡¼ Àб⳪ ¾²±â¸¦ ÇÒ VMÀÇ ¸Þ¸ð¸® ÁÖ¼Ò µîÀ» ¸ðµÎ ¾Ë°í ÀÖ¾î¾ß ÇÏ°í, hypervisor kernelÀÌ ½ÇÇàµÇ´Â ÄÚ¾î¿Í °ø°ÝÀÚÀÇ Äھ µ¿ÀÏÇØ¾ß Çϸç, °£Á¢ºÐ±â ½Ã gadget¿¡¼ »ç¿ëÇÏ´Â ·¹Áö½ºÅÍ°ªÀÌ º¯°æµÇ¸é ¾È µÈ´Ù. ¾Æ¹«·± »çÀü ÀÛ¾÷ ¾øÀÌ ÀÌ·± Á¶°ÇµéÀ» ¸ðµÎ ¸ÂÃß´Â °Ç »ç½Ç»ó ºÒ°¡´É¿¡ °¡±î¿ì¸ç ±×·¸±â ¶§¹®¿¡ ½ÇÁ¦ Spectre Variant 2°¡ À¯È¿ÇÏ°Ô ÀÛµ¿Çϱâ À§Çؼ´Â ´Ù¸¥ ¹æ¹ýÀÇ Ä§Çظ¦ ÅëÇØ °ø°ÝÇÏ°íÀÚ ÇÏ´Â ½Ã½ºÅÛ¿¡ ´ëÇÑ Á¤º¸¸¦ ¸ÕÀú ¹Ì¸® È®º¸ÇÏ´Â ÀÛ¾÷ÀÌ ÇʼöÀûÀÏ °ÍÀÌ´Ù.
ÀÌ·± ±î´Ù·Î¿î Á¶°ÇÀÌ Àֱ⠶§¹®¿¡ »ç½Ç Spectre Variant 1°ú ¸¶Âù°¡Áö·Î À¯È¿ÇÑ °ø°Ý¼³°è¸¦ ÇÏ´Â µ¥´Â »ó´çÇÑ ³ë·ÂÀÌ µé¾î°¡°Ô µÇ¸ç µÚÁý¾î ¾ê±âÇÏÀÚ¸é ¹æ¾îÇÏ´Â Ãø¿¡¼ ÀÌ·± ÀüÁ¦Á¶°Çµé Áß ÃÖ¼Ò Çϳª ÀÌ»ó¸¸ Àß ¸·À¸¸é °ø°ÝÇϱⰡ ¸Å¿ì ¾î·Á¿öÁø´Ù´Â ¶æµµ µÈ´Ù. µû¶ó¼ Spectre Variant 1°ú ¸¶Âù°¡Áö·Î attack surface°¡ ¾îµð¿¡ ÀÖ´ÂÁö¸¦ Àß »ìÆ캸°í °ü¸®ÇØ¾ß Çϸç Ãâó°¡ ºÒºÐ¸íÇÑ ¸ðµâÀ» ¼³Ä¡Çؼ´Â ¾È µÈ´Ù. CPU¸¦ pinÇÏ´Â ¼³Á¤ÀÌ ÀÖ´Ù¸é ÀáÀçÀûÀ¸·Î BTB¸¦ ¿À¿°½Ãų °¡´É¼ºÀÌ ÀÖÀ¸´Ï ºñÈ°¼ºÈÇÒÁö¿¡ ´ëÇؼµµ ÆÇ´ÜÇغÁ¾ß ÇÑ´Ù. BIOS ÆÐÄ¡°¡ ÀÖÀ¸¸é ÁÁ°ÚÁö¸¸ Çϵå¿þ¾î º¥´õ¿¡¼ Á¦°øÇÏÁö ¾Ê´Â´Ù¸é ÇØ´ç ½Ã½ºÅÛÀº °¢º°È÷ º¸¾È¿¡ ½Å°æ ½á¾ß ÇÏ°í °¡´ÉÇÏ´Ù¸é ¿ÜºÎ ³×Æ®¿öÅ©·ÎºÎÅÍ ºÐ¸®ÇÏ¿© ³»ºÎ¸Á¿¡¸¸ µÎ´Â ¾Èµµ °í·ÁÇØ¾ß ÇÑ´Ù.
¡®CPUÃë¾àÁ¡ Á¾ÇÕº¸°í¼¡¯ ¿¬À縦 ¸¶Ä¡¸ç
¡ã³ë±Ô³² °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå/CTO
MeltDownÀº ½É°¢ÇÑ Ãë¾àÁ¡À̱â´Â Çϳª ¹æ¾îÃ¥ÀÌ ¾øÁö´Â ¾Ê°í ÀÏÁ¤ ºÎºÐ ¼º´ÉÀ» Èñ»ýÇؼ ¸·À» ¼ö ÀÖ´Â °ÍÀ̹ǷΠ´ëÀÀ¸¸ »¡¸® ÇÑ´Ù¸é ¾ÆÁÖ Å« ¹®Á¦°¡ µÇÁö´Â ¾ÊÀ» ¼öµµ ÀÖ´Ù. ¶Ç ·ÎÄà Ãë¾àÁ¡À̶ó ¸ÕÀú °ø°Ý½Ã½ºÅÛÀÇ ±ÇÇÑÀ» ¾òÁö ¾ÊÀ¸¸é °ø°ÝÀÌ ºÒ°¡´ÉÇϹǷΠÁö±Ý±îÁö º¸¾ÈÀ» Àß °ü¸®ÇØ¿Â Á¶Á÷À̶ó¸é MeltDown ¶§¹®¿¡ °©Àڱ⠺¸¾ÈÀÌ Ãë¾àÇØÁø´Ùµç°¡ ÇÏ´Â ÀÏÀº »ý±âÁö ¾ÊÀ» °ÍÀÌ´Ù. Spectreµµ ¸¶Âù°¡Áö·Î Á¦´ë·Î °ø°ÝÇßÀ» °æ¿ì µ¥ÀÌÅÍ À¯ÃâÀº ½É°¢ÇØÁöÁö¸¸ °ø°ÝÀÇ ¼º¸³ Á¶°ÇÀÌ ±×¸¸Å ±î´Ù·Ó±â ¶§¹®¿¡ Ãß°¡ÀûÀÎ º¸¾È°ÈÁ¶Ä¡ ¸î °¡Áö¸¸À¸·Îµµ °ø°Ý °¡´É¼ºÀ» Å©°Ô ÁÙÀÏ ¼ö ÀÖ´Ù.
±×¸®°í Áö±ÝÀº Çϵå¿þ¾îÀûÀÎ Ãë¾àÁ¡À» ¼ÒÇÁÆ®¿þ¾î·Î ¸·´Â Çü±¹À̶ó ±Ùº»ÀûÀ¸·Î´Â CPU¾÷°è¿¡¼ ÀÌ·± ¹®Á¦¸¦ ÇؼÒÇÑ »õ·Î¿î Á¦Ç°À» ³»³õ¾Æ¾ß ÀÌ »óȲÀÌ ¸¶¹«¸® µÉ ÅÙµ¥ Áö³ 20¿© ³â°£ ¹ßÀü½ÃÄÑ¿Ô´ø ±âº» ¾ÆÅ°ÅØó ±¸Á¶¿¡¼ ¹ß»ýÇÑ Ãë¾àÁ¡À̶ó ¿ÏÀüÇÑ ÇØ°áÀÌ ½±Áö´Â ¾ÊÀ» °Í °°´Ù. ´çºÐ°£Àº Çаè¿Í »ê¾÷°è°¡ ¸Ó¸®¸¦ ¸Â´ë°í »õ·Î¿î ÇØ°áÃ¥°ú ÀÌ·ÐÀÇ ¿¬±¸¿¡ ¸ÅÁøÇØ¾ß ÇÒ °ÍÀ¸·Î º¸ÀδÙ. ¾î·°Å³ª ÀÌ Ãë¾àÁ¡µéÀº ´çºÐ°£ À¯·É(specter)ó·³ ¿ì¸® ÁÖÀ§¸¦ ¶°³ªÁö ¾Ê°í °°ÀÌ »ì°Ô µÉ ¿î¸íÀÌ°ÚÁö¸¸ ´Ã ±×·¡¿ÔµíÀÌ ¾î·Á¿î »óȲ¿¡¼µµ ´äÀ» ã°í ¹ßÀüÇØ ³ª°¡´Â °ÍÀº Àΰ£ÀÇ ¼Ó¼ºÀ̹ǷΠÆ÷±âÇÏÁö ¾Ê´Â´Ù¸é ¹®Á¦´Â °á±¹ ÇØ°áµÉ °ÍÀ¸·Î º»´Ù.
[±Û_ ³ë±Ô³² °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå °â ÃÖ°í±â¼úÃ¥ÀÓÀÚ(ngn@gabia.com)]
¡á CPU Ãë¾àÁ¡ Á¾ÇÕº¸°í¼ ¿¬Àç¼ø¼
¨ç Ãë¾àÁ¡ÀÇ ±âº»¿ø¸®
¨è MeltDown°ú Spectre Variant 1
¨é Spectre Variant 2[³¡]
ÇÊÀÚ ¼Ò°³_ ³ë±Ô³²Àº °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå °â ÃÖ°í±â¼úÃ¥ÀÓÀÚ(CTO)·Î¼, IT ¾÷°è¿¡¼ ¼ö½Ê ³â°£ ½×Àº °æÇèÀ» ¹ÙÅÁÀ¸·Î °¡ºñ¾ÆÀÇ ÀÎÇÁ¶ó¸¦ °íµµÈÇÏ°í ¹ßÀü½ÃÅ°´Â ¿ªÇÒÀ» ¸Ã°í ÀÖ´Ù. ÃÖ±Ù¿¡´Â ³»ºÎ¿¡ ½×ÀÌ´Â ¼ºñ½º °ü·Ã µ¥ÀÌÅ͸¦ ½Å°æ¸ÁÀ¸·Î ó¸®ÇØ ¿î¿µÀ» ÀÚµ¿ÈÇÏ°í º¸¾È°ú Ŭ¶ó¿ìµå ÀÎÇÁ¶ó¸¦ °íµµÈÇÏ´Â °Í¿¡ °ü½ÉÀ» °®°í ÀÖ´Ù. °¡Ä¡ÅõÀÚ»çÀÌÆ® ¹ë·ù½ºÅ¸ ±â¼úÀÌ»ç, ¿µ»óº¸¾È¼ºñ½º ¿¡¹öºä ´ëÇ¥À̻縦 ¿ªÀÓÇß´Ù.
[¿À´ÙÀÎ ±âÀÚ(boan2@boannews.com)]
<ÀúÀÛ±ÇÀÚ: º¸¾È´º½º(www.boannews.com) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>