Home > Àüü±â»ç

[Ưº°±â°í] CPUÃë¾àÁ¡ Á¾ÇÕº¸°í¼­¨è: MeltDown°ú Spectre Variant 1

ÀÔ·Â : 2018-02-28 17:38
ÆäÀ̽ººÏ º¸³»±â Æ®À§ÅÍ º¸³»±â ³×À̹ö ¹êµå º¸³»±â Ä«Ä«¿À ½ºÅ丮 º¸³»±â ³×À̹ö ºí·Î±× º¸³»±â
MeltDown ¹× Spectre Variant 1ÀÇ ¿ø¸®ºÐ¼®°ú ±× ´ëÀÀ¹æ¹ý,
MeltDown°ú ¸ÖƼÅ׳ÍÆ®, MeltDown ÆÐÄ¡¿Í ¼º´É Ç϶ô À̽´±îÁö


[º¸¾È´º½º=³ë±Ô³² °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå °â ÃÖ°í±â¼úÃ¥ÀÓÀÚ] 1ȸ ±â°í¹®([Ưº°±â°í] CPU Ãë¾àÁ¡ Á¾ÇÕº¸°í¼­¨ç: Ãë¾àÁ¡ÀÇ ±âº»¿ø¸®)ÀÌ º¸µµµÈ ÈÄ, MeltDownPrime ¹× SpectrePrime(ÀÌÇÏ Prime °ø°Ý)ÀÇ ¼³¸í¿¡ ´ëÇØ ¡®¾²±â¿¡µµ ij½¬°¡ Àû¿ë µÉ ÅÙµ¥ ¾î°¼­ ij½¬°¡ Å»¶ôµÇ´Â°¡¡¯¶ó´Â Áú¹®À» ÇϽŠµ¶ÀÚ°¡ ÀÖ´Ù. ´ç½Ã ¼³¸íÀ» °£·«ÇÏ°Ô Çؼ­ ÀÚ¼¼ÇÑ ³»¿ëÀÌ Àü´ÞµÇÁö ¾ÊÀº °Í °°Àºµ¥ ÇØ´ç Áú¹®¿¡ ´ëÇÑ ´äÀ» ±â°í¿¡¼­ °øÀ¯Çϸé ÁÁÀ» °ÍÀ¸·Î »ý°¢ÇØ ºÎ¿¬ÇÑ´Ù.

[À̹ÌÁö=iclickart]


ÀÏ´Ü ¾²±â¿¡µµ ij½¬°¡ Àû¿ëµÇ´Â °Ç ¸Â±â ¶§¹®¿¡, ´Ü¼øÇÑ ¾²±â¸¸À¸·Î´Â ij½¬°¡ Å»¶ôµÇÁö ¾Ê´Â´Ù. ÇÏÁö¸¸ Prime °ø°ÝÀÌ ±âÁ¸°ú ´Ù¸¥ Á¡Àº Prime+Probe¸¦ »ç¿ëÇÑ´Ù´Â °Í ¿Ü¿¡ Çϳª°¡ ´õ Àִµ¥, ±×°Ç °ø°ÝÀÚ¿Í °ø°Ý´ë»óÀÌ ´Ù¸¥ Äھ À§Ä¡ÇØ¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. Áï, °°Àº Äھ¼­ °ø°ÝÀÚ¿Í °ø°Ý´ë»ó ÇÁ·Î¼¼½º°¡ ÀÛµ¿ÇÏ°í ÀÖ´Ù¸é ÀÌ ¹æ¹ýÀº ÅëÇÏÁö ¾Ê´Â´Ù. ¶Ç ¾çÂÊÀÇ °ø°Ý¹ýÀ» ¼³¸íÇϸ鼭 ¸ðµÎ ¡®Ä³½¬¡¯¶ó°í ¹¶¶×±×·Á¼­ ¾ê±âÇßÁö¸¸, Á¤È®ÇÏ°Ô ¸»ÇÏÀÚ¸é ÃÖ±ÙÀÇ ÀÎÅÚ CPU(½ºÄ«ÀÌ·¹ÀÌÅ© ÀÌÈÄ)¸¦ °¡Á¤ÇÒ ¶§ Prime °ø°Ý¿¡¼­ ÁÖ·Î ¾ê±âÇÏ´Â °Ç °¢ Äھ¼­ µ¶¸³ÀûÀ¸·Î »ç¿ëÇÏ´Â L1, L2 ij½¬ÀÌ¸ç ¸ðµç Äھ °øÀ¯ÇÏ´Â L3 ij½¬´Â ÇØ´ç »çÇ×ÀÌ ¾ø´Ù. Âü°í·Î ±âÁ¸ °ø°Ý ¹æ½Ä¿¡¼­´Â ¾î¶² ij½¬µç »ó°ü¾øÀÌ Á¸ÀçÇϱ⸸ ÇÏ¸é µ¥ÀÌÅ͸¦ À¯ÃâÇÒ ¼ö ÀÖ´Ù.

[Ãâó=Intel(R) Xeon(R) Scalable Processor Architecture Deep Dive]


À§ ±×¸²¿¡¼­ ¿À¸¥ÂÊÀÌ ½ºÄ«ÀÌ·¹ÀÌÅ©ÀÇ Ä³½¬ ±¸Á¶ÀÌ´Ù. L3´Â °øÀ¯µÇÁö¸¸ L2´Â °¢ Äھ Á¾¼ÓµÈ °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

°¢ Äھ µ¶¸³ÀûÀ¸·Î ij½¬¸¦ °®´Â´Ù´Â °Ç ÇϳªÀÇ CPU ³» µ¿ÀÏÇÑ ¸Þ¸ð¸®¿¡ ´ëÇÑ Ä³½¬ »çº»ÀÌ º¹¼ö °³ Á¸ÀçÇÒ ¼ö ÀÖ´Ù´Â °ÍÀε¥, ¸¸¾à ÄÚ¾î 1ÀÌ ¸Þ¸ð¸® X¿¡ ´ëÇÑ Ä³½¬¸¦ °¡Áö°í ÀÖ°í ÄÚ¾î 2µµ µ¿ÀÏÇÑ ¸Þ¸ð¸® X¿¡ ´ëÇÑ Ä³½¬¸¦ °¡Áö°í ÀÖ´Ù¸é ¹Ýµå½Ã ÀÌ µÎ ij½¬´Â °°Àº ³»¿ëÀ̾î¾ß ÇÑ´Ù. ´ç¿¬ÇÏÁö¸¸ ÀÌ µÎ°³ ij½¬ÀÇ ³»¿ëÀÌ ´Þ¶óÁø´Ù¸é ¸ÖƼÄÚ¾î ½Ã½ºÅÛÀº Á¦´ë·Î ÀÛµ¿ÇÒ ¼ö ¾ø´Ù. ÀÌ°ÍÀ» ij½¬ ÀÏ°ü¼º(cache coherence)À̶ó ÇÑ´Ù. ±×·¸±â ¶§¹®¿¡ °¢ ÄÚ¾î´Â ¸Þ¸ð¸®¿¡ ¾²±â Àü¿¡ ÀÚ½ÅÀÌ ÇØ´ç ¸Þ¸ð¸®ÀÇ ¾²±â ±ÇÇÑÀ» ȹµæÇÏ°íÀÚ ÇÑ´Ù´Â °ÍÀ» ºê·Îµåij½ºÆ®ÇÏ°í, ÀÌ ¸Þ½ÃÁö¸¦ ¹ÞÀº ÄÚ¾îµéÀº ´ë»óÀÌ µÇ´Â ¸Þ¸ð¸®ÀÇ Ä³½¬¸¦ °¡Áö°í ÀÖÀ» °æ¿ì À̸¦ ¹«È¿È­(invalidate)ÇØ ¹ö¸°´Ù. ÀÌÈÄ ½ÇÁ¦ ¸Þ¸ð¸®¿¡ ¾²¸é¼­ ÇØ´ç ÄÚ¾îÀÇ Ä³½¬´Â ¾÷µ¥ÀÌÆ® µÇÁö¸¸, ±×¿Ü ÄÚ¾îÀÇ Ä³½¬´Â ¸ðµÎ ¹«È¿È­µÇ¾ú±â ¶§¹®¿¡ ÀÌ Ä³½¬´Â CPU³»ÀÇ À¯ÀÏÇÑ Ä³½¬°¡ µÇ°í ÀÏ°ü¼ºÀº ÁöÄÑÁø´Ù. ÀÌ°ÍÀÌ ¾²±â ¿äûÀ¸·Î ÀÎÇÑ Ä³½¬ Å»¶ôÀÌ´Ù.

[Ãâó=https://www.scss.tcd.ie/Jeremy.Jones/vivio/caches/MESI.htm]


À§ ±×¸²Àº ij½¬ ÀÏ°ü¼ºÀ» À¯ÁöÇϱâ À§ÇÑ ÇÁ·ÎÅäÄÝÀÎ MESI ½Ã¹Ä·¹ÀÌÅ͸¦ º¸¿©ÁØ´Ù. CPU 0ÀÌ read a0, CPU 1ÀÌ write a0À» ÇÑ Á÷ÈÄÀÇ »óÅÂ. CPU 0ÀÇ a0¿¡ ´ëÇÑ Ä³½¬´Â I(Invalid) »óÅ°¡ µÈ °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

±×·¯¸é Prime °ø°ÝÀÌ ±âÁ¸ °ø°Ý ¹æ½Ä°ú ºñ±³ÇÏ¿© ¹«½¼ Â÷ÀÌ°¡ Àִ°¡¿¡ ´ëÇÑ »ý°¢À» Çغ¸Áö ¾ÊÀ» ¼ö°¡ ¾ø´Âµ¥, ÀÌ °ø°ÝÀº ±âÁ¸ÀÇ MeltDownÀ̳ª Spectre¸¦ ¼º´É ¸é¿¡¼­ Á» ´õ ÃÖÀûÈ­ÇÑ °ÍÀÌ¶ó º¼ ¼ö ÀÖ´Ù. ij½¬¿Í ¸Þ¸ð¸®´Â ¼ö½Ê ¹è ÀÌ»ó ¼Óµµ Â÷ÀÌ°¡ ³ª±â ¶§¹®¿¡ ij½¬¿¡ ¸Þ¸ð¸®ÀÇ ³»¿ëÀÌ ¾ø´Â °æ¿ì À̸¦ Àо ÀûÀçÇÏ·Á¸é ij½¬¿¡¼­ ¹Ù·Î Àд °Íº¸´Ù ÈξÀ ¸¹Àº ½Ã°£ÀÌ °É¸®°Ô µÈ´Ù. ±×·±µ¥ ¾î¶² Á¾·ùÀÇ ¸Þ¸ð¸® ¾²±â ÀÛ¾÷µµ ÀÏ´Ü Ä³½¬¿¡ ¾´ ÈÄ ½Ç¸Þ¸ð¸®·Î Àü´ÞµÇ¹Ç·Î(write back, Çö¼¼´ë CPU´Â ¸ðµÎ write backÀ» »ç¿ëÇÑ´Ù), ¸Þ¸ð¸®¿¡ ¾²´Â ÀÛ¾÷Àº ij½¬¿¡ ¾²´Â °Í¸¸À¸·Î ³¡³ª°í, ij½¬°¡ ³ÑÄ¡´Â »óȲÀÌ ¹ß»ýÇÏÁö ¾Ê´Â ÀÌ»ó Àд ÀÛ¾÷º¸´Ù Ç×»ó ºü¸£´Ù. Áï ÃßÃø½ÇÇà¿¡¼­ ¡®Àб⡯¸¦ ÇÏ´Â °Íº¸´Ù ¡®¾²±â¡¯¸¦ ÇÏ´Â °ÍÀÌ ´õ ºü¸£±â ¶§¹®¿¡, ¸Å¿ì ªÀº misspeculation window ³»¿¡ °ø°ÝÀ» ¸¶ÃÄ¾ß ÇÏ´Â °ø°ÝÀÚ ÀÔÀå¿¡¼­´Â ¾²±â°¡ ´õ È¿À²ÀûÀÎ °ø°Ý ¹æ½ÄÀ̶ó´Â °á·ÐÀ» ³»¸± ¼ö ÀÖ´Â °ÍÀÌ´Ù.

½ÇÁ¦·Î ÇØ´ç ³í¹®¿¡¼­ Å×½ºÆ®ÇÑ °á°ú¸¦ º¸¸é µ¿ÀÏÇÑ Çϵå¿þ¾î¿¡¼­ Spectre°¡ 97.9% È®·ü·Î °ø°Ý¿¡ ¼º°øÇѵ¥ ºñÇØ SpectrePrimeÀº 99.95%·Î »ó´çÈ÷ ¼º°ø·üÀÌ °³¼±µÇ¾ú´Ù´Â »ç½ÇÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¹°·Ð °ø°ÝÀÚ¿Í °ø°Ý´ë»óÀÌ °¢°¢ ´Ù¸¥ Äھ pinµÅ¾ß ÇÑ´Ù´Â Ãß°¡ÀûÀÎ Á¶°ÇÀÌ Àֱ⠶§¹®¿¡ Çʵ忡¼­ÀÇ ¹ü¿ë¼ºÀº Á» ¶³¾îÁú °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ·± ½ÄÀ¸·Î °è¼Ó °ø°Ý È¿À²ÀÌ Çâ»óµÈ´Ù¸é, ÇâÈÄ ÀÌ Ãë¾àÁ¡µé¿¡ ´ëÇØ ¾ÈÀüÇÏ´Ù°í ¾Ë·ÁÁø CPUµé¿¡ ´ëÇؼ­µµ °ø°Ý¿¡ ¼º°øÇÏ´Â »ç·Ê°¡ ³ª¿ÃÁöµµ ¸ð¸¥´Ù.

MeltDown
ÀÌÁ¦ À̹ø ȸÀÇ º» ÁÖÁ¦ Áß ÇϳªÀÎ MeltDown¿¡ ´ëÇÑ ¾ê±â¸¦ Çغ¸ÀÚ. Àüȸ¿¡ ¼³¸íÇÑ ´ë·Î À̹ø¿¡ ¹ß°ßµÈ Ãë¾àÁ¡µéÀº CPUÀÇ ÃßÃø½ÇÇà°ú ºñ¼øÂ÷½ÇÇà ±¸Á¶ ÀÚü¸¦ °ø°ÝÇÏ´Â °ÍÀ¸·Î, ¿ø¸®´Â À¯»çÇϳª ±¸Çö¹æ¹ý¿¡¼­ Â÷ÀÌ ÀÖ´Â °ø°Ý ¼¼ °¡Áö°¡ Á¸ÀçÇÑ´Ù. ±×¸®°í ³í¹®ÀÌ °ø°³µÈ ÀÌÈÄ ´Ù½Ã ARM Cortex-A15, Cortex-A57, Cortex-A72¿¡¼­ ÀÛµ¿ÇÏ´Â ¸¶Áö¸· °ø°ÝÀÇ º¯ÇüÀÌ Çϳª ¹ß°ßµÇ¾ú´Ù.

Variant 1: Bounds Check Bypass, CVE-2017-5753 (Spectre)
Variant 2: Branch Target Injection, CVE-2017-5715 (Spectre)
Variant 3: Rogue Data Cache Load, CVE-2017-5754 (MeltDown)
SubVariant 3a : Privileged register reads from unprivileged code (MeltDown)


Àß ¾Ë·ÁÁø ´ë·Î Variant 1ÀÎ Bounds Check Bypass¿Í Variant 2ÀÎ Branch Target InjectionÀ» Spectre, Variant 3ÀÎ Rogue Data Cache Load¸¦ MeltDownÀ̶ó Çϸç, ³ªÁß¿¡ ¹ß°ßµÈ Privileged register reads from unprivileged codeµµ Variant 3°ú ºñ½ÁÇÑ ¼º°ÝÀ¸·Î º¸¾Æ SubVariant 3aÀÎ MeltDownÀ¸·Î ºÐ·ùÇÏ°í ÀÖ´Ù. Variant 3aÀÇ °æ¿ì Variant 3°ú ¸¹Àº ºÎºÐÀÌ À¯»çÇÏÁö¸¸ °ø°Ý ´ë»óÀÌ ¸Þ¸ð¸®°¡ ¾Æ´Ï¶ó ·¹Áö½ºÅͶó´Â Á¡¿¡¼­ Â÷ÀÌ°¡ ÀÖ´Â Á¤µµÀ̸ç, »ó´ëÀûÀ¸·Î ´Ù¸¥ Ãë¾àÁ¡¿¡ ºñÇØ °ø°ÝÀÇ ¿µÇâÀº ÀÛ´Ù. ¾ÕÀ¸·Î ÀÌ ¿ø°í¿¡¼­´Â Variant 3¿¡ ÇÑÁ¤Çؼ­ MeltDownÀ̶ó´Â ¿ë¾î¸¦ »ç¿ëÇÏ°í ¼³¸íÇϵµ·Ï ÇÏ°Ú´Ù.

MeltDownÀº À̸§¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ ÀϹݰú Ư±ÇÀÇ ¿µ¿ª°æ°è°¡ ¹«³ÊÁ®¼­ ÀÏ¹Ý À¯Àú ±ÇÇÑ ÇÁ·Î¼¼½º°¡ Ä¿³ÎÀÇ º¸È£µÇ´Â ¸Þ¸ð¸® ¿µ¿ªÀ» ¹«Á¦ÇÑÀûÀ¸·Î ÀÐÀ» ¼ö ÀÖ´Â Ãë¾àÁ¡À¸·Î, ÀÎÅÚ°ú ARM °è¿­ ÀϺΠCPU¿¡¼­¸¸ °ø°Ý ¼º°øÀÌ È®ÀεƴÙ. AMD³ª ´Ù¸¥ ARM ÇÁ·Î¼¼¼­, PowerPC µî¿¡¼­ ÀÌ °ø°ÝÀ» ¼º°ø½ÃÅ°Áö ¸øÇÑ °ÍÀº ±¸ÇöÀÇ Â÷ÀÌ¿¡ µû¸¥ °ÍÀ¸·Î »ý°¢µÇÁö¸¸ ½ÇÁ¦ CPU ³»ºÎÀÇ ¸¶ÀÌÅ©·ÎÄڵ尡 ¾î¶² ½ÄÀ¸·Î ÀÛµ¿ÇÏ´ÂÁö´Â È®ÀÎÇÒ ¼ö ¾øÀ¸¹Ç·Î ÃßÃø¸¸ ÇÒ »ÓÀÌ´Ù. ¾Õ¼­ ¾ê±âÇÑ ´ë·Î ÀÌ °ø°ÝÀÌ ¼º°øÇÏ·Á¸é ÃßÃø½ÇÇà ÀÌÈÄ Ãë¼ÒµÇ±â Àü±îÁö(Áï misspeculation window µ¿¾È) µ¥ÀÌÅÍ À¯ÃâÀÌ °¡´ÉÇÏ°Ô²û Äڵ尡 ½ÇÇàµÅ¾ß ÇÑ´Ù. MeltDown °ø°ÝÀº ´ë·« ´ÙÀ½°ú °°Àº ½ÄÀ¸·Î ±¸ÇöÇÒ ¼ö ÀÖ´Ù. Âü°í·Î ¾Æ·¡ ³»¿ëÀº ¿ø¸®¸¦ ¼³¸íÇϴµ¥ ÁÖ¾ÈÁ¡À» µÐ ¹æ½ÄÀÌ¸ç ½ÇÁ¦ °ø°Ý ½Ã¿¡´Â ÀÌ·¸°Ô ºñÈ¿À²ÀûÀ¸·Î 1ºñÆ®¾¿ ÀÐÁö ¾Ê°í ¹è¿­À» »ç¿ëÇÏ¿© 1¹ÙÀÌÆ®ÀÇ ³»¿ëÀ» ÇÑ ¹ø¿¡ È®ÀÎÇÑ´Ù. ij½¬µµ ÇÑ ¹ø¿¡ Àд ´ÜÀ§(ij½¬¶óÀÎ)°¡ À־ Äڵ带 ÀÛ¼ºÇÒ ¶§ ±× ºÎºÐµµ °í·ÁÇØÁÖ¾î¾ß ÇÑ´Ù.

1) ¸Þ¸ð¸® a0°ú a1À» FlushÇÑ´Ù(ij½¬¸¦ ¼Ò°Å).
2) ·¹Áö½ºÅÍ R¿¡ º¸È£µÈ ¸Þ¸ð¸® ¿µ¿ª ap(°ø°Ý´ë»ó)¸¦ ÀÐ¾î µéÀδÙ. ap´Â Ä¿³Î ¸Þ¸ð¸®¿¡ Á¸ÀçÇϹǷΠ¿©±â¼­ º¸È£ºñÆ®¿¡ ÀÇÇØ ¿¹¿Ü°¡ ¹ß»ýÇÏ°í ¾Æ·¡ÀÇ 3) 4)´Â ½ÇÇàµÇÁö ¾Ê¾Æ¾ß ÇÑ´Ù.
3) RÀÇ 0¹ø ºñÆ®°¡ 0À̸é a0, 1À̸é a1À» ¸Þ¸ð¸® ax¿¡ ´ëÀÔÇÑ´Ù.
4) axÀÇ ¸Þ¸ð¸® ÁÖ¼Ò ³»¿ëÀ» Àд´Ù. Áï a0 ¶Ç´Â a1ÀÌ ÀÐÇôÁö°í ij½¬¿¡ ³²´Â´Ù.
5) CPU´Â ÃÖ´ëÇÑ ÆÄÀÌÇÁ¶óÀÎÀ» ½¬Áö ¾Ê°Ô ½ÇÇàÇÏ·Á°í ÇϹǷΠ3) 4)´Â °°ÀÌ ½ÇÇàµÆ´Ù°¡ Ãë¼ÒµÉ ¼ö ÀÖ´Ù. ±×·¡µµ ij½¬¿¡´Â a0 ¶Ç´Â a1ÀÌ ³²¾Æ ÀÖ´Ù.
6) ij½¬¿¡ Á÷Á¢ Á¢±ÙÇÏ´Â °Ç ºÒ°¡´ÉÇÏÁö¸¸, a0°ú a1¸¦ °¢°¢ ÀÐÀ¸¸é¼­ ½Ã°£À» ÃøÁ¤Çϸé ij½¬¿¡ Á¸ÀçÇÏ´Â µ¥ÀÌÅÍ°¡ ´õ »¡¸® ÀÐÈù´Ù. ÀÌÁ¦ apÀÇ 0¹ø ºñÆ®°¡ 0ÀÎÁö 1ÀÎÁö¸¦ ¾Ë ¼ö ÀÖ´Ù.
7) °°Àº ¿ø¸®·Î apÀÇ ´Ù¸¥ ºñÆ®µéµµ ÀÐÀ» ¼ö ÀÖ°í, ¹Ýº¹Çϸé Ä¿³Î ¸Þ¸ð¸®¸¦ óÀ½ºÎÅÍ ¸ðµÎ ´ýÇÁÇÒ ¼ö ÀÖ´Ù.


ÀϹÝÀûÀ¸·Î Ä¿³Î ¸Þ¸ð¸®¿¡´Â º¸È£ºñÆ®°¡ ¼³Á¤µÅ À־ ÀÏ¹Ý ¸ðµå ¾ÖÇø®ÄÉÀ̼ÇÀÌ ÀÐÀ¸·Á°í ÇÏ¸é ¿¹¿Ü°¡ ¹ß»ýÇϸ鼭 °Å±â¼­ ½ÇÇàÀÌ ¸ØÃá´Ù. µû¶ó¼­ ¼øÂ÷ÀûÀ¸·Î ¸í·ÉÀ» ½ÇÇàÇÑ´Ù¸é 2)¿¡¼­ ÇÁ·Î±×·¥Àº ¸ØÃç¾ß ÇÏ°í ±× ÀÌÇÏÀÇ ¸í·ÉµéÀº ½ÇÇàµÇÁö ¾Ê¾Æ¾ß ÇÑ´Ù. ÇÏÁö¸¸ Çö´ëÀû CPU´Â ¼öÆÛ½ºÄ®¶ó ±¸Á¶¿¡ ÀÇÇØ º¹¼ö °³ ÆÄÀÌÇÁ¶óÀο¡ ÇѲ¨¹ø¿¡ ¸í·ÉÀ» ÀûÀçÇϹǷΠÀÌ¹Ì ¸í·É 3) 4)±îÁö°¡ Fetch-Decode¸¦ °ÅÃļ­ ½ÇÇàÀ¯´Ö¿¡ ¿Ã¶ó¿Í ÀÖÀ» ¼ö ÀÖ°í, ÀÌ °æ¿ì 2)¿¡¼­ ¿¹¿Ü°¡ ¹ß»ýÇϱâ Àü¿¡ apÀÇ °ªÀÌ Àü´ÞµÅ 3) 4)±îÁö ½ÇÇàÀÌ µÈ´Ù¸é a0 ¶Ç´Â a1 µÑ ÁßÀÇ ÇÑ ¸Þ¸ð¸®°¡ ij½¬¿¡ ³²°Ô µÈ´Ù. ±× ÈÄ ¿¹¿Ü°¡ ¹ß»ýÇϸé 3) 4)°¡ ÆÄÀÌÇÁ¶óÀο¡¼­ »èÁ¦µÇ¸é¼­ ¸í·ÉÀÇ ½ÇÇàÀº Ãë¼ÒµÇÁö¸¸ ÀÌ¹Ì ÀÐÀº ¸Þ¸ð¸®¿¡ ´ëÇÑ Ä³½¬±îÁö ¿ø·¡´ë·Î º¹±¸µÇÁö´Â ¾ÊÀ¸¹Ç·Î ÀÌ µ¥ÀÌÅ͸¦ ÅëÇØ °£Á¢ÀûÀ¸·Î º¸È£µÈ ¸Þ¸ð¸®ÀÇ ³»¿ëÀ» È®ÀÎÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ¿©±â¼­ Áß¿äÇÑ °Ç ¿ª½Ã ¼Óµµ·Î, 2)ÀÇ ¸í·É¿¡ ÀÇÇØ ¿¹¿Ü°¡ ¹ß»ýÇϱâ Àü¿¡ ÃÖ¼Ò 3) 4)±îÁö ½ÇÇàÀÌ ¿Ï·áµÅ¾ß °ø°ÝÀÌ ¼º°øÇÏ°Ô µÈ´Ù.

ƯÈ÷ ÀÎÅÚ CPUÀÇ °æ¿ì ÀÎÅÚ °íÀ¯ÀÇ TSX(Transactional Synchronization Extensions) ¸í·ÉÀ» °°ÀÌ »ç¿ëÇϸé Ä¿³Î ¸Þ¸ð¸®¿¡ Á¢±ÙÇϸ鼭 ¹ß»ýÇÏ´Â ¿¹¿Ü ÀÚü¸¦ ¾ï´©¸¦ ¼ö Àֱ⠶§¹®¿¡ ´õ¿í È¿À²ÀûÀÎ °ø°ÝÀÌ °¡´ÉÇÏ´Ù. AMD CPUµµ µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î °ø°ÝÇÒ ¼ö ÀÖÁö¸¸ Áö±Ý±îÁö ¼º°øÇß´Ù´Â ¼Ò½ÄÀº µé·Á¿ÀÁö ¾Ê´Âµ¥ À̷κÎÅÍ AMD CPU´Â °°Àº °ø°Ý¿¡ ´ëÇؼ­ ¿¹¿Ü°¡ ¹ß»ýÇϸé ÀÎÅÚº¸´Ù ´õ »¡¸® ½ÇÇàÀ» Ãë¼ÒÇÒ °ÍÀ̶ó´Â ÃßÁ¤ÀÌ °¡´ÉÇÏ´Ù. ¶Ç Ãʱ⿡ ARM¿¡¼­´Â MeltDown ¹ö±×°¡ ¾ø´Ù°í ¾Ë·ÁÁ³Áö¸¸ ÀÌÈÄ ÀϺΠCPU±º¿¡¼­ °ø°Ý¿¡ ¼º°øÇß´Ù´Â Á¡À» »ý°¢Çϸé ÀÌ °ø°ÝÀÇ ¼º°ø ¿©ºÎ´Â ¾ó¸¶³ª ÃÖÀûÈ­µÈ °ø°ÝÄڵ带 ½ÇÇàÇϴ°¡¿¡ ´Þ·Á ÀÖ´Ù´Â »ç½Çµµ ¾Ë ¼ö ÀÖ´Ù. ´Ù½Ã ¸»ÇØ ÀÎÅÚ CPU´Â ÃßÃø½ÇÇà ½Ã ÀÏ¹Ý ¾ÖÇø®ÄÉÀ̼ÇÀÌ Ä¿³Î ¸Þ¸ð¸®¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°Ô µÅ ÀÖÀ¸³ª AMD CPU³ª ARMÀº ±×·¸Áö ¾Ê´Ù, °¡ ¾Æ´Ï´Ù. ¸ðµç CPU¿¡¼­ ÀÏ¹Ý ¾ÖÇø®ÄÉÀ̼ÇÀÌ º¸È£ºñÆ®°¡ ¼³Á¤µÈ Ä¿³Î ¸Þ¸ð¸®¿¡ Á¢±ÙÇÒ ¶§´Â ¿¹¿Ü°¡ ¹ß»ýÇϸç, ÀÌ´Â ¾î¶² CPU¶óµµ ºñ½ÁÇÏ°Ô Àû¿ëµÈ´Ù. ÇÏÁö¸¸ °ø°ÝÀÌ ³Ê¹« ´À¸®´Ùµç°¡, ±¸Á¶ÀûÀÎ Â÷ÀÌ°¡ Àִٵ簡, ÇÏ´Â ¿©·¯ °¡Áö ÀÌÀ¯µé·Î ÀÎÇØ ¼º°øÇϱ⵵ ÇÏ°í ±×·¸Áö ¾Ê°Ô µÇ±âµµ ÇÏ´Â °Í»ÓÀÌ´Ù. ³í¹®¿¡¼­µµ AMD CPU³ª ARM CPU¿¡¼­ MeltDownÀÌ ¼º°øÇÏÁö ¸øÇÑ ÀÌÀ¯¿¡ ´ëÇØ ¡®°ø°ÝÀÌ ³Ê¹« ´À·È´ø °Í¡¯ÀÏ ¼ö ÀÖÀ¸¸ç, Á» ´õ ÃÖÀûÈ­µÈ ¹öÀüÀ̶ó¸é ¼º°øÇÒÁöµµ ¸ð¸¥´Ù´Â ÀÇ°ßÀ» ±â¼úÇÏ°í ÀÖ´Ù. Ãë¾àÁ¡ÀÌ ¹ßÇ¥µÈ Áö ÇÑ ´Þ ÀÌ»ó Áö³­ Áö±Ý±îÁö MeltDown PoC¸¦ ¼º°øÇÑ CPU´Â ¿©ÀüÈ÷ ÀÎÅÚ °è¿­°ú ARM ÀϺο¡ ±¹ÇѵŠÀÖ±â´Â ÇÏÁö¸¸, ¾Õ¼­ ¼³¸íÇÑ Prime °ø°Ýó·³ ´õ ÃÖÀûÈ­µÈ º¯Çü°ø°ÝµéÀÌ ³ª¿Â´Ù¸é ÀÌÈÄ ¾î¶»°Ô µÉÁö´Â ¿©ÀüÈ÷ ¾Ë ¼ö ¾ø´Â »óȲÀÌ´Ù.

MeltDownÀÇ ´ëÀÀ
MeltDownÀº ÀÏ´Ü 1) exploitÀ» ´ë»ó ½Ã½ºÅÛ¿¡ ¾÷·ÎµåÇÒ ¼ö ÀÖ¾î¾ß ÇÏ°í 2) ÇØ´ç exploitÀ» ½ÇÇàÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù¶ó´Â µÎ °¡Áö Á¶°Ç¸¸ ÃæÁ·ÇÏ¸é °ø°ÝÀÌ ¼º¸³ÇÑ´Ù. Áï ¿¹Àü¿¡ ¹®Á¦°¡ µÇ¾ú´ø SMB attackó·³ ³×Æ®¿öÅ©¿¡ Á¢¼Ó¸¸ ÇÏ¸é °¨¿°µÇ´Â ±×·± Á¾·ù´Â ¾Æ´Ï°í local exploit¿¡ ÇØ´çÇÑ´Ù°í ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ´Ù¸¥ Á¾·ùÀÇ °ø°ÝÀ» ÅëÇØ ½©(¿¹¸¦ µé¾î À¥½©)À» ¾òÀ¸¸é ¾Õ¼­ÀÇ µÎ °¡Áö Á¶°ÇÀº ¾ÆÁÖ °£´ÜÇÏ°Ô ¸ÂÃçÁö¹Ç·Î ³×Æ®¿öÅ©·ÎºÎÅÍÀÇ °ø°Ý¿¡ ¿ÏÀüÈ÷ ¾ÈÀüÇÏ´Ù°í ¸»ÇÒ ¼öµµ ¾ø´Ù. ½É°¢ÇÑ Á¡Àº ÀÌ Ãë¾àÁ¡ÀÇ ¿ø¸®°¡ ´ë´ÜÈ÷ ½É¿ÀÇѵ¥ ºñÇØ °ø°Ý ¹æ¹ýÀÌ °£´ÜÇÏ°í Á¶°ÇÀ» ¸ÂÃ߱Ⱑ ±î´Ù·ÓÁö ¾Ê±â ¶§¹®¿¡ ÆÐÄ¡°¡ µÇÁö ¾ÊÀº ½Ã½ºÅÛ¿¡ ´ëÇÑ °ø°ÝÀº ¾ÆÁÖ ³ôÀº È®·ü·Î ¼º°øÇÑ´Ù´Â °ÍÀÌ´Ù. ¾ÏȣȭµÈ ºñ¹Ðµµ °á±¹Àº »ç¿ëÇϱâ À§ÇØ º¹È£È­ÇØ ¸Þ¸ð¸®¿¡ ¿Ã·Á¾ß Çϴµ¥, ÀÌ ºÎºÐÀ» ¾Æ¹«·± ÈçÀûµµ ³²±âÁö ¾Ê°í ½±°Ô ÀÐÀ» ¼ö Àִٴµ¥ MeltDownÀÇ ½É°¢¼ºÀÌ ÀÖ´Ù.

¶ÇÇÑ ÀÌ °æ¿ì 1Â÷ÀûÀÎ °ø°Ý´ë»óÀÌ µÇ´Â °Ç Ä¿³Î ¸Þ¸ð¸®ÀÌÁö¸¸ Ä¿³Î ¸Þ¸ð¸®¿¡´Â ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×À̺íÀÌ ÀúÀåµÅ ÀÖ´Ù. Àß ¾Ë·ÁÁø ´ë·Î Çö´ëÀûÀÎ CPU¿¡¼­´Â ¸Þ¸ð¸®¸¦ À¯¿¬ÇÏ°Ô »ç¿ëÇϱâ À§ÇØ ¸ðµç ÁÖ¼Ò¸¦ °¡»óÈ­ÇÏ¿© »ç¿ëÇϸç ÀÌ °¡»óÈ­µÈ ¸Þ¸ð¸®¿Í ½ÇÁ¦ ¹°¸® ¸Þ¸ð¸®¸¦ ¸ÊÇÎÇÏ´Â µ¥ÀÌÅ͸¦ °®´Â °ÍÀÌ ÆäÀÌÁö Å×À̺íÀÌ´Ù. Áï ÀÌ ÆäÀÌÁö Å×À̺íÀÌ ¾øÀÌ´Â ¸Þ¸ð¸®·ÎºÎÅÍ 1¹ÙÀÌÆ®µµ ÀÐÀ» ¼ö ¾ø´Âµ¥ Ä¿³Î ¸Þ¸ð¸®¿¡ Á¦ÇÑ ¾øÀÌ Á¢±ÙÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº °ð ´Ù¸¥ ÇÁ·Î¼¼½ºÀÇ ¸Þ¸ð¸®µµ µ¿ÀÏÇÏ°Ô Àо ¼ö ÀÖ´Ù´Â »ç½ÇÀ» ÀǹÌÇÏ´Â °ÍÀÌ´Ù.

µû¶ó¼­ À§ÀÇ µÎ °¡Áö Á¶°ÇÀ» ÃæÁ·Çϰųª ±×·² °¡´É¼ºÀÌ ÀÖ´Â ½Ã½ºÅÛµéÀº ÆÐÄ¡¸¦ ÇØ¾ß Çϸç, Ä¿³Î¿¡ ´ëÇÑ °ø°ÝÀ̹ǷΠOS¿¡ ´ëÇÑ ÆÐÄ¡°¡ ÀÌ Ãë¾àÁ¡¿¡ ´ëÇÑ ´ëÀÀ¹æ¹ýÀÌ µÈ´Ù. ÆÐÄ¡ÀÇ ³»¿ëÀº °£´ÜÇÏ°Ô Ä¿³ÎÀÇ ÆäÀÌÁö Å×À̺í°ú ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÆäÀÌÁö Å×À̺íÀ» ºÐ¸®ÇÏ¿© ½ÇÁ¦·Î º¸È£µÈ ¸Þ¸ð¸®ÀÇ ³»¿ëÀº Ä¿³ÎÀÌ ¾Æ´Ï¸é ÀÐÁö ¸øÇÏ°Ô ÇÏ´Â °ÍÀÌ´Ù. ¸®´ª½º¿¡¼­´Â ÀÌ¹Ì KPTI(Kernel Page Table Isolation)À̶ó´Â À̸§À¸·Î Àû¿ëµÅ ÀÖÀ¸¸ç, À©µµ¿ìÀÇ ÆÐÄ¡µµ ÆäÀÌÁöÇ®À» º¹»çÇÏ´Â À¯»çÇÑ ³»¿ëÀÌ´Ù. Áö±Ý±îÁö´Â È¿À²À» À§ÇØ ¸ðµç ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÆäÀÌÁö Å×ÀÌºí¿¡ Ä¿³ÎÀÇ ÆäÀÌÁö Å×À̺íÀ» º¹»çÇؼ­ Æ÷ÇÔ½ÃÄÑ µÎ¾ú´Ù. °á±¹ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ½Ã½ºÅÛÄÝÀ» ÇÏ°Ô µÇ¸é Ä¿³ÎÀÇ ÁÖ¼Ò°ø°£¿¡ À§Ä¡ÇÑ API ÇÔ¼öµé¿¡ Á¢±ÙÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù. À̹ø ÆÐÄ¡´Â ¾ÖÇø®ÄÉÀ̼ǰú Ä¿³ÎÀÌ ÄÁÅؽºÆ® ½ºÀ§ÄªÀ» ÇÒ ¶§ ¾çÂÊÀÇ ÆäÀÌÁö Å×À̺íÀ» ±×¶§¸¶´Ù º¹»çÇؼ­ ±³Ã¼ÇϹǷΠ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ MeltDown Ãë¾àÁ¡À» ÀÌ¿ëÇØ Ä¿³ÎÁÖ¼ÒÀÇ ³»¿ëÀ» ÀÐÀ¸·Á°í Çصµ ±×¿¡ ÇØ´çÇÏ´Â ÆäÀÌÁö Å×À̺íÀÌ ¾ø¾î¼­ ½ÇÁ¦ ³»¿ëÀ» ÀÐÁö ¸øÇÏ°Ô ÇÏ´Â °ÍÀÌ´Ù.

[Ãâó=https://en.wikipedia.org/wiki/Kernel_page-table_isolation]


À§ ±×¸²Àº KPTIÀÇ °£´ÜÇÑ ¸ð½Äµµ´Ù. º¸¶ó»ö ºÎºÐÀÌ Kernel Space¿¡ ´ëÇÑ ÆäÀÌÁö Å×À̺íÀε¥ À̸¦ ¿À¸¥ÂÊó·³ Ä¿³Î ¸ðµå¿Í »ç¿ëÀÚ ¸ðµå·Î ºÐ¸®ÇÏ´Â °ÍÀÌ KPTIÀÌ´Ù. ÆÐÄ¡ ÈÄ °ø°ÝÀÚ´Â ÇϾá»öÀÇ ºñ¾îÀÖ´Â ºÎºÐÀº ÀÐÀ» ¼ö ¾ø°í API È£ÃâÀ» À§ÇÑ ÃÖ¼ÒÇÑÀÇ ¿µ¿ªÀÎ º¸¶ó»ö ºÎºÐ¿¡¸¸ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.

¸ÖƼÅ׳ÍÆ®¿Í MeltDown
¸ÖƼÅ׳ÍÆ® ½Ã½ºÅÛ, Áï ¸¹Àº °í°´(Å׳ÍÆ®)ÀÌ ÇϳªÀÇ ¼­ºñ½º³ª ½Ã½ºÅÛÀ» °øÀ¯ÇÏ´Â °æ¿ì MeltDownÀº ¸Å¿ì À§ÇùÀûÀÌ¶ó ¸»ÇÒ ¼ö Àִµ¥, MeltDownÀÇ °ø°Ý ´ë»óÀÎ Ä¿³ÎÀ» °øÀ¯ÇÏ´Â ½Ã½ºÅÛÀ̶ó¸é »óÈ£°£¿¡ °ø°ÝÀ¸·Î ÀÎÇÑ Á¤º¸À¯ÃâÀÌ °¡´ÉÇØÁö±â ¶§¹®ÀÌ´Ù. À¥È£½ºÆÃÀ̳ª ÄÁÅ×À̳Ê, ¹Ý°¡»óÈ­(Para-Virtualization) ±â¼úÀ» »ç¿ëÇÏ´Â VMµîÀÌ ´ëÇ¥ÀûÀ¸·Î Ä¿³ÎÀ» °øÀ¯ÇÏ´Â ¼­ºñ½ºÀε¥ ÀÌ ¼­ºñ½ºµéÀº ¸ðµÎ ÆÄÀÏÀ» ¾÷·ÎµåÇϱâ À§ÇÑ °ø°£°ú ÀÛ¾÷À» Çϱâ À§ÇÑ ½©Á¢¼ÓÀ» Á¦°øÇϹǷΠ¾Õ¼­ ¾ð±ÞÇÑ MeltDown °ø°ÝÀÌ ¼º¸³Çϱâ À§ÇÑ Á¶°Ç µÎ °¡Áö¸¦ °£´ÜÇÏ°Ô ÃæÁ·Çعö¸°´Ù. Áï À¥È£½ºÆà °èÁ¤À» Çϳª ½ÅûÇؼ­ ½©À» ¾òÀ¸¸é ±× ¼­¹ö¿¡ Á¢¼ÓÇÏ´Â ¸ðµç ´Ù¸¥ °í°´µéÀÇ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Â °¡´É¼ºÀÌ »ý±ä´Ù. µû¶ó¼­ ÀÌ·± Á¾·ù ¼­ºñ½º³ª ½Ã½ºÅÛÀ̶ó¸é ¼º´É ÆгÎƼ¸¦ °¨¼öÇÏ°í¶óµµ KPTI ÆÐÄ¡´Â ÇʼöÀûÀ¸·Î ÇØ¾ß ÇÏ´Â °ÍÀÌ´Ù.

¶Ç ÀÌ·± ¸ÖƼÅ׳ÍÆ®ÀÇ ´ëÇ¥ÀûÀÎ ¼­ºñ½º·Î ÀÎÇÁ¶ó Ŭ¶ó¿ìµå(IaaS)°¡ Àִµ¥, IaaSÀÇ °æ¿ì ¸ÖƼÅ׳ÍÆ®´Â ¸ÂÁö¸¸ ÀϺΠÃʱ⠹öÀü ¼­ºñ½º¸¦ Á¦¿ÜÇÑ ´ëºÎºÐÀÇ ¾÷üµéÀÌ Çϵå¿þ¾îÀûÀ¸·Î Áö¿øµÇ´Â Àü°¡»óÈ­(Full-Virtualization) ±â¼úÀ» »ç¿ëÇÏ°í Àֱ⠶§¹®¿¡ °¢ VMÀÇ OS Ä¿³Î°ú È£½ºÆ®ÀÇ Ä¿³ÎÀº ¸ðµÎ ºÐ¸®µÅ ÀÖ´Ù. ÀÌ °æ¿ì VM¿¡¼­ exploitÀ» ½ÇÇàÇÏ´õ¶óµµ ÀÐÀ» ¼ö ÀÖ´Â °ÍÀº VM¿¡¼­ ½ÇÇàµÇ´Â OS Ä¿³ÎÀÇ ¸Þ¸ð¸®ÀÌ°í µû¶ó¼­ ÀÌ Ãë¾àÁ¡À» ÀÌ¿ëÇØ È£½ºÆ®ÀÇ ¸Þ¸ð¸®¸¦ Àаųª ÇÏ´Â ÀÏ(VM escape)Àº ÀϾ ¼ö ¾ø´Ù.

ÇÏÁö¸¸ VMÀÇ OS¸¦ ÆÐÄ¡ÇÏÁö ¾ÊÀ» °æ¿ì ¿ÜºÎ¿¡¼­ °ø°ÝÇÏ¿© VMÀÇ Ä¿³ÎÀ» Àд °ø°ÝÀº °¡´ÉÇÏ°í, ±×·¸°Ô µÇ¸é VM ³»ÀÇ Á¤º¸´Â ÀüºÎ À¯Ãâ°¡´ÉÇϱ⠶§¹®¿¡ ÀÏ´Ü ¼º´ÉÀúÇϸ¦ °¨¼öÇÏ°í¶óµµ VMÀÇ OS¸¦ ÆÐÄ¡ÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. ¸¸¾à ºÎµæÀÌ ÆÐÄ¡¸¦ ¸øÇÒ »óȲÀ̶ó¸é ¾Õ¼­ ¾ð±ÞÇÑ µÎ °¡Áö °ø°Ý ¼º¸³ Á¶°ÇÀÌ ÃæÁ·µÇÁö ¾Êµµ·Ï °¢º°ÇÏ°Ô º¸¾È¿¡ ½Å°æ ½á ÁÖ¾î¾ß ÇÑ´Ù. ¿ÜºÎ¿¡¼­ ÆÄÀÏÀ» ¾÷·ÎµåÇÏÁö ¸øÇÏ°Ô Çϰųª, ÆÄÀÏÀÌ ¾÷·Îµå µÇ´õ¶óµµ ½ÇÇà ±ÇÇÑÀ» ¸·°Å³ª ÇÏ´Â Á¶Ä¡µéÀÌ ÇÊ¿äÇÏ´Ù.

È£½ºÆ®ÀÇ °æ¿ì´Â VMÀÇ °ø°ÝÀ¸·Î ÀÎÇØ Ä§ÇصÇÁö´Â ¾ÊÁö¸¸ È£½ºÆ®°¡ Á÷Á¢ °ø°Ý´çÇÏ¸é µ¿ÀÏÇÑ »óȲÀÌ µÇ¹Ç·Î ¿ª½Ã OSÆÐÄ¡´Â ±ÇÀå»çÇ×ÀÌ´Ù. ÇÏÁö¸¸ Àå±âÀûÀ¸·Î ºÁ¼­´Â VMÀ̳ª È£½ºÆ® ¾çÂÊ ¸ðµÎ ÆÐÄ¡¸¦ ÇÏ´Â ÆíÀÌ ¾ÈÀüÇÏ´Ù. Áö±ÝÀÇ ÇØÄ¿µéÀº MeltDown Ãë¾àÁ¡¸¸ »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó °ø°ÝÇϱâ À§Çؼ­ ÇÊ¿äÇÑ ¸ðµç ¹æ¹ýÀ» º¹ÇÕÀûÀ¸·Î ´Ù µ¿¿øÇϹǷΠ¾îµð ÇÑ ±ºµ¥°¡ ¶Õ¸®°Ô µÇ¸é ³²¾Æ ÀÖ´Â MeltDown Ãë¾àÁ¡Àº ¸Å¿ì Å©¸®Æ¼ÄÃÇÑ ¿ä¼Ò°¡ µÉ °ÍÀ̱⠶§¹®ÀÌ´Ù.

¼º´É Ç϶ô
»ç¿ëÀÚµéÀÌ °¡Àå °ü½ÉÀ» °®´Â ³»¿ë Áß Çϳª´Â ÀÌ MeltDown ÆÐÄ¡¿¡ ÀÇÇÑ ¼º´É Ç϶ôÀÌ´Ù. º¸¾ÈÀûÀ¸·Î ¹®Á¦°¡ ÀÖ´Ù°í ÇÏ´Ï ÆÐÄ¡¸¦ Çϱâ´Â Çؾ߰ڴµ¥ ¼º´É Ç϶ôÀÌ ¿ì·ÁµÈ´Ù. ÀÎÅÚÀ̳ª MS µî ±Û·Î¹ú ±â¾÷Àº ¼º´É Ç϶ôÀÌ ÀÖÁö¸¸ Àü¹ÝÀûÀ¸·Î Å« ¿µÇâÀº ¾ø´Ù°í ¾ê±âÇÏ°í ÀÖÀ¸³ª ¾î¶² Å×½ºÆ®¿¡¼­´Â 30% ÀÌ»ó ¼º´ÉÀÌ ³·¾ÆÁ³´Ù´Â ¾ê±âµµ ÀÖ°í. °ÔÀÓÀ̳ª ÀÏ¹Ý ¾ÖÇø®ÄÉÀ̼ÇÀº °ÅÀÇ ¿µÇâÀÌ ¾ø´Ù´Â ¼Ò¸®µµ µé¸°´Ù. ¾î¶² ¾÷ü´Â µ¥ÀÌÅͼ¾ÅÍ¿¡¼­ Å×½ºÆ®ÇÑ °á°ú 60%¶ó´Â °æ¾ÇÇÒ¸¸ÇÑ ¼º´ÉÇ϶ôÀ» ±â·ÏÇß´Ù°í Çϱ⵵ ÇÑ´Ù. µµ´ëü ¾î¶² ¾ê±â°¡ ¸Â´Â °É±î?

°á·ÐÀûÀ¸·Î ¾ê±âÇÑ´Ù¸é, ÀûÀýÇÑ È¯°æ¿¡¼­ Å×½ºÆ®ÇßÀ» °æ¿ì ¸ðµç Å×½ºÆ® °á°ú°¡ °¡´ÉÇÏ´Ù°í ¸»ÇÒ ¼ö ÀÖ´Ù. ¾î¶»°Ô °ÅÀÇ ¿µÇâÀÌ ¾ø´Â ¼öÁØ¿¡¼­ 60%±îÁö ¼º´ÉÀúÇÏ°¡ ÀÖÀ» ¼ö Àִ°¡¿¡ ´ëÇØ ÀǾÆÇÏ°Ô »ý°¢ÇÒ ¼öµµ Àִµ¥, »ç½Ç ÀÌ MeltDown ÆÐÄ¡¿¡ ÀÇÇÑ ¼º´ÉÇ϶ôÀº Çϵå¿þ¾î ±¸¼º, OS ȯ°æ, ¿öÅ©·Îµå¿¡ µû¶ó ´Þ¶óÁú »Ó¸¸ ¾Æ´Ï¶ó, ±Ø´ÜÀûÀ¸·Î´Â °°Àº Ç׸ñÀ» Å×½ºÆ®ÇÏ´õ¶óµµ º¥Ä¡¸¶Å© ÇÁ·Î±×·¥¿¡ µû¶ó ¾ÆÁÖ ´Ù¸¥ °á°ú¸¦ º¸¿©ÁÙ ¼öµµ ÀÖ´Ù. Å×½ºÆ®Çϴ ȯ°æ¿¡ µû¶ó °á°ú°¡ ÀÌ Á¤µµ·Î Å©°Ô º¯ÇÑ´Ù´Â °Í ÀÚü°¡ ¸Å¿ì ´çȲ½º·¯¿î ÀÏÀÏ ¼ö Àִµ¥ ÀÌ ÆÐÄ¡´Â Áö³­ 20¿© ³â°£ ´ç¿¬ÇÏ°Ô »ý°¢µÅ¿Â ºÎºÐÀ» °íÄ£ °ÍÀ̶ó´Â Á¡À» Àؾ´Â ¾È µÈ´Ù. º¥Ä¡¸¶Å© ÇÁ·Î±×·¥µéµµ CPUÀÇ Ãë¾àÁ¡À» ¸·±â À§ÇØ ¸ðµç ½Ã½ºÅÛÄÝ ½Ã ÆäÀÌÁö Å×À̺íÀ» º¹»çÇØ¾ß ÇÏ´Â »óȲ±îÁö °í·ÁÇؼ­ ÀÛ¼ºµÇÁø ¾Ê¾Ò±â ¶§¹®¿¡ ÀÌ·± µéÂß³¯ÂßÇÑ °á°ú°¡ ³ª¿À°Ô µÇ´Â °ÍÀÌ´Ù.

ÃÖ±Ù¿¡ Netflix¿¡¼­ ±Ù¹«ÇÏ´Â Brendan GreggÀ̶ó´Â ¿£Áö´Ï¾î°¡ MeltDown ÆÐÄ¡¿¡ ´ëÇÑ ¸Å¿ì Èï¹Ì·Î¿î Å×½ºÆ® °á°ú¸¦ °ø°³Çߴµ¥ ÇÊÀÚ°¡ ÆÇ´ÜÇϱ⿡´Â ÀÌ ³»¿ëÀÌ Áö±Ý±îÁöÀÇ Å×½ºÆ® Áß ÆÐÄ¡ ÀÌÈÄÀÇ ½ÇÁ¦ »óȲÀ» °¡Àå Àß ¹Ý¿µÇÏ°í ÀÖ´Ù°í º¸ÀδÙ. Àß ¾Ë·ÁÁø ´ë·Î Netflix´Â ¸ðµç ÀÎÇÁ¶ó¸¦ AWS À§¿¡¼­ ±¸µ¿ÇÏ°í Àֱ⠶§¹®¿¡ ÀÌ Å×½ºÆ® °á°ú´Â AWS¸¦ ¸¹ÀÌ ¾²´Â °í°´µé¿¡°Ô ƯÈ÷ À¯ÀǹÌÇÑ ÀÚ·á°¡ µÉ °ÍÀÌ´Ù.

BrendanÀÇ ÀÚ·á¿¡ ÀÇÇϸé MeltDown ÆÐÄ¡ ÀÌÈÄ ¼º´É¿¡ ¿µÇâÀ» ÁÖ´Â ¿ä¼Ò´Â Å©°Ô ´ÙÀ½ÀÇ ´Ù¼¸ °¡Áö·Î º¼ ¼ö ÀÖ´Ù. ÀÌ¿Ü¿¡ ¿©±â¿¡ Æ÷ÇÔµÇÁö ¾ÊÀº ´Ù¸¥ ¿µÇâÀ» ÁÖ´Â ¿ä¼Ò°¡ ÀÖÀ» ¼ö ÀÖÁö¸¸ ÀÌ Á¤µµ¸é °¡Àå Áß¿äÇÑ ³»¿ëµéÀº ´Ù µé¾î°¡ ÀÖ´Ù°í º¸ÀδÙ.

1) ½Ã½ºÅÛÄÝÀÇ È£Ãâ ¼ýÀÚ(Syscall rate)
½Ã½ºÅÛÄÝÀ» ÇÒ ¶§¸¶´Ù Ä¿³Î°ú ¾ÖÇø®ÄÉÀÌ¼Ç »çÀÌ¿¡¼­ ÆäÀÌÁö Å×À̺íÀ» º¹»çÇØ¾ß ÇϹǷÎ, ±×¸¸Å­ ¿À¹öÇìµå°¡ ´Ã¾î³­´Ù. BrendanÀÇ Å×½ºÆ®¿¡ ÀÇÇϸé ÃÊ´ç 5¸¸ ¹ø È£Ãâ±îÁö´Â ¼º´É ÀúÇÏ°¡ 2%¿¡ ºÒ°úÇß´Ù°í ÇÑ´Ù. ±×·¯³ª ÀÌ ¼ýÀÚ°¡ ¿Ã¶ó°¡¸é ¼º´ÉÀúÇÏ´Â 400%¸¦ ³Ñ¾î¼³ ¼öµµ ÀÖ´Ù. NetflixÀÇ °æ¿ì µ¥ÀÌÅͺ£À̽º µî ÀϺΠ³ôÀº ºÎÇϸ¦ °®´Â ½Ã½ºÅÛÀ» Á¦¿ÜÇÑ ´ëºÎºÐÀÇ ¼­¹öµéÀº ÃÊ´ç 1¸¸ ¹ø ¹Ì¸¸ÀÇ ½Ã½ºÅÛÄÝÀ» ÇϹǷΠÀÌ·Î ÀÎÇÑ ¼º´É ÀúÇÏ´Â 0.5% ¹Ì¸¸À¸·Î ¿¹»óÇÒ ¼ö ÀÖ´Ù. ÇÊÀÚ »ý°¢°Ç´ë ÀϹÝÀûÀ¸·Î´Â ÀÌ ¿ä¼Ò°¡ °¡Àå ¼º´É¿¡ ³ôÀº ¿µÇâÀ» ¹ÌÄ¡°Ô µÉ °ÍÀÌ´Ù.

[Ãâó=Brendan Greggs Blog]


À§ ±×¸²Àº KPTI ÈÄ ½Ã½ºÅÛÄÝ ¼ýÀÚ¿¡ µû¸¥ ¼º´ÉÀúÇÏ ±×·¡ÇÁ´Ù. XÃàÀÌ ÃÊ´ç ½Ã½ºÅÛÄÝ ¼ýÀÚ(õ ´ÜÀ§), YÃàÀÌ ¼º´ÉÀúÇÏ ºñÀ²ÀÌ´Ù.

2) ÄÁÅؽºÆ® ½ºÀ§Äª(Context switching)
ÄÁÅؽºÆ® ½ºÀ§ÄªÀÌ ¹ß»ýÇÏ¸é ½Ã½ºÅÛÄÝ°ú ¸¶Âù°¡Áö·Î ÆäÀÌÁö Å×À̺íÀ» º¹»çÇØ¾ß ÇÑ´Ù. Ưº°È÷ ÄÁÅؽºÆ® ½ºÀ§ÄªÀÌ ¸¹ÀÌ ¹ß»ýÇÏ´Â »óȲ, Áï ÇÁ·Î¼¼½º³ª ¾²·¹µåÀÇ ¼ýÀÚ°¡ ÀϹÝÀûÀÎ °Íº¸´Ù ÈξÀ ¸¹Àº °æ¿ì°¡ ¾Æ´Ï¶ó¸é ¼º´É¿¡ Å©°Ô ¿µÇâÀ» ÁÖÁö´Â ¾Ê´Â´Ù.

3) ÆäÀÌÁö ÆúÆ® ¼ýÀÚ(Page fault rate)
ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇÏ´Â °Ç ¸Þ¸ð¸®¸¦ ÇÒ´ç¹ÞÁö ¸øÇß´Ù´Â °ÍÀÌ°í µû¶ó¼­ Ä¿³Î¸ðµå·Î ÀüȯÇÏ¿© ÆäÀÌÁö¸¦ ÇÒ´çÇØ¾ß ÇÑ´Ù. ÀÌ ¼ýÀÚ°¡ ³ôÀ¸¸é Ä¿³Î·ÎÀÇ ÄÁÅؽºÆ® ½ºÀ§ÄªÀÌ ¸¹ÀÌ ÀϾ°Ô µÇ¸ç 1) 2)¿Í µ¿ÀÏÇÑ ¿ø¸®·Î ÆäÀÌÁö Å×ÀÌºí º¹»çÀÇ ¿À¹öÇìµå°¡ ´Ã¾î³­´Ù. ´Ü±â°£¿¡ ±Þ°ÝÇÏ°Ô ¸¹Àº ¸Þ¸ð¸® ÇÒ´çÀ» ¿ä±¸ÇÏ´Â ¾ÖÇø®ÄÉÀ̼ÇÀ̶ó¸é ¼º´ÉÀÌ ±×¸¸Å­ Ç϶ôÇÑ´Ù.

4) ÀÛ¾÷¿¡ »ç¿ëÇÏ´Â µ¥ÀÌÅÍÀÇ Å©±â(Working set size)
½ÇÁ¦ ¸Þ¸ð¸®·Î ÀÐ¾î µé¿©¼­ ÀÛ¾÷ÇÒ µ¥ÀÌÅÍ°¡ Å©¸é TLB(Translation Lookaside Buffer)°¡ FlushµÇ¸é¼­ ¼º´ÉÀÌ Ç϶ôÇÑ´Ù. TLB´Â ´À¸° ¸Þ¸ð¸®ÀÎ ÆäÀÌÁö Å×À̺íÀÇ ÆäÀÌÁö¸¦ ÀúÀåÇÏ´Â ÀÏÁ¾ÀÇ Ä³½¬ÀÌ´Ù.

5) ij½¬¿¡ Á¢±ÙÇÏ´Â ÆÐÅÏ(Cache access pattern)
¾ÖÇø®ÄÉÀ̼ÇÀÌ ½Ã½ºÅÛ Ä³½¬¸¦ ¾ó¸¶³ª Àß È°¿ëÇÏ´À³Ä¿¡ µû¶ó¼­µµ ¼º´ÉÀÌ ÃÖ´ë 1~10%±îÁö Ãß°¡ÀûÀ¸·Î Ç϶ôÇÒ ¼ö ÀÖ´Ù.

MeltDown ÆÐÄ¡·Î ÀÎÇÑ ¼º´É ÀúÇÏ´Â ÇÇÇÒ ¼ö ¾ø°ÚÀ¸³ª ¾î¶² ¾ÖÇø®ÄÉÀ̼ÇÀ» ¿î¿µÇϴ°¡¿¡ µû¶ó ¼º´É ÀúÇÏ Æø¿¡´Â Â÷ÀÌ°¡ ÀÖÀ» ¼ö ÀÖ´Ù. ÀÎÅÚÀ̳ª MS, AWS µî¿¡¼­ ¡®¼º´É ÀúÇÏ ÆøÀº Å©Áö ¾Ê´Ù¡¯¶ó°í ¾ê±âÇÏ´Â °ÍÀº ÀϹÝÀûÀÎ ¿öÅ©·Îµå ±âÁØÀÌ°ÚÁö¸¸, DBMS³ª °ÔÀÓ¼­¹öó·³ ¸Å¿ì ³ôÀº ºÎÇϸ¦ ó¸®ÇØ¾ß ÇÏ´Â ½Ã½ºÅÛÀÇ °æ¿ì´Â Á» ´õ ¼º´ÉÀÌ ³·¾ÆÁú °ÍÀ» ¿¹»óÇÑ´Ù. °¢ »ç¿ëÀÚ¸¶´Ù »óȲÀÌ ´Ù¸£°í ½Ã½ºÅÛÀÇ ±¸¼ºÀÌ ´Ù¸£±â ¶§¹®¿¡ ¹¹¶ó°í ¸»Çϱ⠾î·ÆÁö¸¸ ÀÏ´Ü À§ÀÇ ´Ù¼¸ °¡Áö Ç׸ñ¿¡ ´ëÇؼ­ ÇöÀçÀÇ »óŸ¦ üũÇغ¸¸é ´ë°­ ÆÐÄ¡ ÈÄ ¼º´É Ç϶ôÀÇ Á¤µµ¸¦ ÁüÀÛÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×¸®°í º¥Ä¡¸¶Å© ÇÁ·Î±×·¥Àº ½Ã½ºÅÛÀÇ ºÎÇϸ¦ ÇÑ°è±îÁö ¿Ã·Á¼­ Å×½ºÆ®ÇÏ´Â °ÍÀ̹ǷΠ½ÇÁ¦ÀÇ ¿öÅ©·Îµåº¸´Ù´Â ¼º´ÉÀúÇÏ°¡ ´õ Å©°Ô ³ª¿Ã ¼ö¹Û¿¡ ¾ø´Ù. ´õºÒ¾î º¥Ä¡¸¶Å© ÇÁ·Î±×·¥µé¿¡¼­ ½Ã°£À» ÃøÁ¤Çϱâ À§ÇØ ¼ö½Ã·Î È£ÃâÇÏ´Â gettimeofday()³ª clock_get_time() µîÀÇ ½Ã½ºÅÛÄݵµ ¼º´É¿¡´Â ºÎÁ¤Àû ¿µÇâÀ» ¹ÌÄ£´Ù. ÇÑ ¹øÀÇ ¼º´É Å×½ºÆ®¸¦ À§Çؼ­´Â ÀÌ APIµéÀÌ Á¤¸»·Î ¸¹ÀÌ È£Ã⠵ȴÙ. ±×·¯´Ï±î º¥Ä¡¸¶Å© ÇÁ·Î±×·¥ÀÇ °á°ú¿¡ ³Ê¹« °æµµµÉ ÇÊ¿ä´Â ¾øÀ¸³ª ±×·¸´Ù°í ¾Æ¿¹ ¹«½ÃÇÒ ÇÊ¿äµµ ¾ø´Ù. Áß¿äÇÑ °ÍÀº ½ÇÁ¦ ¿î¿µµÇ´Â ¿öÅ©·Îµå¸¦ ¿Ã·Á¼­ Å×½ºÆ®Çغ¸´Â ÀÏÀÌ´Ù.

¸¸¾à »ó´çÇÑ ¼öÁØÀÇ ¼º´É ÀúÇÏ°¡ ¿¹»óµÈ´Ù¸é ¹Ì¸® ½Ã½ºÅÛÀ» ¾÷±×·¹À̵åÇϰųª ÀϺΠ¾ÖÇø®ÄÉÀ̼ÇÀ» º¯°æÇÏ´Â ÀÛ¾÷±îÁöµµ ÇÊ¿äÇÏ´Ù. ¸ðµç ½Ã½ºÅÛÀ» ±³Ã¼ÇÏÁö ¸øÇÏ´Â ÀÌ»ó ´çºÐ°£ ¿ì¸®´Â ÀÌ Ãë¾àÁ¡°ú °°ÀÌ »ì¾Æ¾ß ÇÏ°í, KPTI¸¦ Àû¿ëÇÏÁö ¾ÊÀ» ¼ö´Â ¾øÀ¸¹Ç·Î Á¤µµ¿¡ Â÷ÀÌ°¡ ÀÖÀ»Áö¾ðÁ¤ ¼º´É Ç϶ôÀº ÇÇÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.

Spectre Variant 1
ÀÌÁ¦ Spectre¿¡ ´ëÇÑ ¾ê±â¸¦ Çغ¸ÀÚ. ¾Õ¼­ ¾ê±âÇÑ ´ë·Î Spectre´Â Variant 1°ú Variant 2°¡ Àִµ¥ ±âº»ÀûÀÎ ¿ø¸®´Â MeltDown°ú ºñ½ÁÇÏ´Ù. ´Ù¸¸ MeltDownÀÌ ºñ¼øÂ÷½ÇÇàÀ» ÅëÇØ º¸È£µÈ Ä¿³Î ¸Þ¸ð¸®¸¦ Àд Ãë¾àÁ¡À̶ó°í ÇÑ´Ù¸é Spectre´Â ºñ½ÁÇÏ°Ô ½ÃÅ¥¾î ÄÚµùµÈ ºÎºÐÀ» ÆÄÈÑÇϰųª ¶Ç´Â °ø°ÝÀÚÀÇ Äڵ带 ½ÇÇàÇÏ°Ô²û ÇÏ¿© ¾ÖÇø®ÄÉÀ̼ÇÀÇ Áß¿äÇÑ Á¤º¸¸¦ ¾ò¾î³»Áö¸¸ ÁÖ·Î ÃßÃø½ÇÇà¿¡ ÀÇÁ¸ÇÏ¿© °ø°ÝÇÑ´Ù´Â Á¡¿¡¼­ Â÷ÀÌ°¡ ÀÖ´Ù.

Spectre Variant 1Àº Bounds Check Bypass¶ó°í Çϸç, ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ³»ºÎÀûÀ¸·Î »ç¿ëÇÏ´Â ¹è¿­ÀÇ À妽º¸¦ ³Ñ¾î¼± ¿µ¿ªÀ» ÀÐ°Ô ÇÏ¿© ³»ºÎÁ¤º¸¸¦ À¯ÃâÇÏ°Ô ÇÏ´Â ±â¹ýÀÌ´Ù. ÀÌ°Í°ú °¡Àå ºñ½ÁÇÑ ¼º°ÝÀÇ Ãë¾àÁ¡À̶ó°í ÇÑ´Ù¸é buffer overflow¸¦ µé ¼ö ÀÖ´Ù. ³Ê¹« Àß ¾Ë·ÁÁø buffer overflow´Â Á¤ÇØÁø Å©±âÀÇ buffer¸¦ ³ÑÄ¡°Ô ÇÏ¿© ´ë»óÀ» ÇÊ¿äÇÑ ´ë·Î Á¶ÀÛÇÏ´Â Ãë¾àÁ¡À̾ú´Âµ¥ bufferÀÇ »çÀÌÁ´Ù Å©°Ô ¾²±â¸¦ ¼öÇàÇÒ ¼ö ÀÖÀ¸¸é ¼º¸³ÇÑ´Ù. ÀÌ °æ¿ìµµ °æ°è È®ÀÎ(Bounds Check)¸¦ Àß ÇÏÁö ¾Ê¾Æ¼­ »ý±â´Â Ãë¾àÁ¡À̾ú´Âµ¥, ÀÌ·± Äڵ尡 ¹®Á¦ µÈ´Ù´Â °ÍÀÌ ³Ê¹« Àß ¾Ë·ÁÁ® À־ ÃÖ±Ù¿¡ ÀÌ Ãë¾àÁ¡À» °®°í ÀÖ´Â ¼Ò½º´Â Á»Ã³·³ º¸±â Èûµé´Ù. ½ÃÅ¥¾î ÄÚµùÀÌ ¸¹ÀÌ ÀϹÝÈ­µÇ±âµµ Çß°í, ¼Ò½ºÀÇ ¹®Á¦¸¦ üũÇØÁÖ´Â code analyzerµµ À־ ´ëÁßµéÀÌ ¸¹ÀÌ ¾²´Â ¾ÖÇø®ÄÉÀ̼ÇÀ̶ó¸é ÀÌ·± À̽´´Â °ÅÀÇ ÇØ°áÇؼ­ ¹èÆ÷µÇ´Â °ÍÀÌ º¸ÅëÀÌ´Ù. ±×·±µ¥ Spectre Variant 1Àº °³¹ßÀÚ°¡ ¾Æ¹«¸® Bounds Check¸¦ Àß Çصξú´Ù°í ÇÏ´õ¶óµµ À̸¦ Åë°úÇؼ­ ¹è¿­ ¹ÛÀÇ ³»¿ëÀ» ÀÐÀ» ¼ö ÀÖ°Ô ÇÏ´Â °ø°Ý±â¹ýÀÌ´Ù. ±¸Ã¼ÀûÀ¸·Î´Â ±¸±ÛÀÇ ³í¹®¿¡¼­ ¿¹½Ã·Î µç ´ÙÀ½°ú °°Àº Äڵ尡 °ø°Ý´ë»óÀÌ µÉ ¼ö ÀÖ´Ù.

if (x < array1_size)
¡¡¡¡y = array2[array1[x] * 256];


¿©±â¼­ x°ªÀ» °ø°ÝÀÚ°¡ Á¶ÀÛÇÒ ¼ö ÀÖ´Ù°í Çغ¸ÀÚ. x°¡ array1ÀÇ Å©±âº¸´Ù ÀÛÀº °æ¿ì¿¡¸¸ y°ªÀ» ÀÐ°Ô µÅÀÖÀ¸¹Ç·Î ÀÌ ÄÚµå´Â ¹è¿­ÀÇ °æ°èÈ®ÀÎÀ» ÇÏ´Â º¸¾ÈÀûÀ¸·Î ¹®Á¦°¡ ¾ø´Â ÄÚµåÀÌ´Ù. x¸¦ array1_sizeº¸´Ù ÀÛÀº ¹üÀ§ ³» µÐ »óÅ¿¡¼­ ÀÌ Äڵ带 ¹Ýº¹½ÇÇàÇϸé CPU´Â ÀÌ Á¶°ÇºÐ±âÀÇ °á°ú´Â Ç×»ó ÂüÀ̸ç, ±×·¯¹Ç·Î Áï Ç×»ó y°ªÀ» Àоî¾ß ÇÑ´Ù°í ¿¹ÃøÇÑ´Ù. ±×·¯¸é ¸î ¹øÀÇ ¹Ýº¹ ÈÄ ÀÌ ÄÚµå´Â Ç×»ó Á¶°ÇºÐ±â¿¡¼­ y°ªÀ» Àд ¹æÇâÀ¸·Î ÃßÃø½ÇÇàÀ» ÇÏ°Ô µÉ °ÍÀÌ´Ù. ±×·±µ¥ ÀÌ·¸°Ô ÇнÀµÈ »óÅ¿¡¼­ °©ÀÚ±â array1_sizeº¸´Ù Å« x¸¦ ÁöÁ¤ÇÏ°Ô µÇ¸é ÀÌ¹Ì ÃßÃø½ÇÇà¿¡ ÀÇÇØ ÆÄÀÌÇÁ¶óÀο¡´Â y°ªÀ» Àд ¸í·ÉÀÌ ÀûÀçµÅ ÀÖÀ» °ÍÀÌ°í ÀÌ ½ÇÇàÀº ¹Ù·Î Ãë¼ÒµÇ³ª array2ÀÇ ÀÐÀº °ªÀÌ Ä³½¬¿¡ ÀúÀåµÇ´Â °ÍÀ» ¸·À» ¼ö ¾ø´Ù. ÀÌÁ¦ MeltDown°ú µ¿ÀÏÇÏ°Ô Side Channel AttackÀ» Çϸé ij½¬·ÎºÎÅÍ array1ÀÇ ¹è¿­ ¹Û ¸Þ¸ð¸®¿¡ ÀúÀåµÈ °ªÀ» È®ÀÎÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô Ãë¼ÒµÇ´Â ¸í·ÉÀ¸·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ¾ò´Â °ÍÀ̹ǷΠ°³¹ßÀÚ°¡ ¹è¿­ °æ°è¹üÀ§¸¦ ¾Æ¹«¸® Àß Ã¼Å©Çصµ ¼Ò¿ëÀÌ ¾ø´Ù. ±×·¯´Ï±î Çϵå¿þ¾îÀûÀÎ Ãë¾àÁ¡ ¶§¹®¿¡ ½ÃÅ¥¾îÄÚµùÀ» ¾Æ¹«¸® ÀßÇصµ À̸¦ Bypass ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¼Ò¿ëÀÌ ¾ø¾îÁö´Â °á°ú°¡ ³ª¿À°Ô µÇ´Â °ÍÀε¥ °³¹ßÀÚ ÀÔÀå¿¡¼­´Â Ȳ´çÇϸ鼭µµ ¹«·ÂÇØÁöÁö ¾ÊÀ» ¼ö ¾ø´Ù.

À§ ³»¿ëÀ¸·ÎºÎÅÍ ¿ì¸®´Â ¿ÜºÎ·ÎºÎÅÍ ÀÎÀÚ¸¦ ¹Þ¾Æ¼­ ¹è¿­À» »ç¿ëÇÏ´Â ¸ðµç Äڵ尡 ÀáÀçÀûÀ¸·Î Spectre Variant 1ÀÇ °ø°Ý´ë»óÀÌ µÉ ¼ö ÀÖ´Ù´Â »ç½ÇÀ» ¾Ë ¼ö ÀÖ´Ù. ±×¸®°í ÀÌ Ãë¾àÁ¡Àº MeltDownó·³ ƯÁ¤ CPU±º¿¡¸¸ Á¸ÀçÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó Çö´ëÀûÀÎ ÃßÃø½ÇÇàÀ» ÇÏ´Â ´ëºÎºÐÀÇ CPUµé¿¡ Á¸ÀçÇϱ⠶§¹®¿¡ °ø°ÝÇÒ ¼ö ÀÖ´Â ¾ÖÇø®ÄÉÀ̼ÇÀ̳ª ½Ã½ºÅÛÀÇ ¼ýÀÚ´Â ¸Å¿ì ¸¹¾ÆÁø´Ù.

Spectre Variant 1ÀÇ °ø°Ý Á¶°Ç
Áö±Ý±îÁö ¾ê±â¸¸ µéÀ¸¸é Spectre Variant 1µµ ´ë´ÜÈ÷ À§ÇèÇÑ Ãë¾àÁ¡Ã³·³ º¸ÀδÙ. ÇÏÁö¸¸ »ç½ÇÀº ¾Õ¼­ ¼³¸íÇÑ MeltDown¸¸Å­ À§ÇèÇÏÁö´Â ¾Ê´Ù. ¿Ö³Ä¸é MeltDownÀº exploitÀ» ¿Ã·Á¼­ ½ÇÇàÇÒ ¼ö¸¸ ÀÖÀ¸¸é Ä¿³ÎÀÇ ¸Þ¸ð¸®¸¦ ¹«Á¦ÇÑÀ¸·Î ÀÐÀ» ¼ö ÀÖÁö¸¸ Spectre´Â Variant 1°ú Variant 2 ¸ðµÎ Á¤ÇØÁø ¸î °¡ÁöÀÇ ²Ï ±î´Ù·Î¿î Á¶°ÇÀ» ÃæÁ·ÇØ¾ß °ø°ÝÀÌ ¼º¸³Çϱ⠶§¹®ÀÌ´Ù.

Spectre Variant 1Àº ÀÛµ¿Çϴµ¥ µÎ °¡Áö Á¶°ÇÀ» ¿ä±¸ÇÑ´Ù. Çϳª´Â °ø°ÝÀ» À§ÇØ ¹è¿­¿¡ Á¢±ÙÇϱâ À§ÇÑ ÀÎÀÚ °ªÀ» °ø°ÝÀÚ°¡ Á¶ÀÛÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù´Â °ÍÀ̸ç, ´Ù¸¥ Çϳª´Â ÀÌ Á¶ÀÛ¿¡ ÀÇÇØ ½ÇÁ¦ ij½¬¿¡ µ¥ÀÌÅ͸¦ ³²±â´Â ÄÚµåÁ¶°¢(gadgetÀ̶ó ÇÑ´Ù)ÀÌ ±âÁ¸ ÄÚµå ³»¿¡ Á¸ÀçÇÏ°í Àְųª ¶Ç´Â »ðÀÔ °¡´ÉÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. ±×·¯´Ï±î ¹è¿­ÀÇ °æ°è¸¦ ³Ñ´Â °Ç ¾ðÁ¦³ª °¡´ÉÇÏÁö¸¸ ij½¬·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ÀÐÀ¸·Á¸é ÃßÃø½ÇÇàÀ¸·Î ½ÇÇàµÇ´Â Äڵ尡 °ø°ÝÀÚ°¡ Á¢±Ù °¡´ÉÇÑ ¸Þ¸ð¸®·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ÀоîÁà¾ß ÇÑ´Ù.

ÀÌ °æ¿ì °¡Àå ¸ÕÀú °ø°Ý ´ë»óÀÌ µÉ ¼ö ÀÖ´Â °Ç Ä¿³Î API·Î, ÀÌ APIµé Áß 1) ¼ýÀÚ·Î ÀÎÀÚ¸¦ ¹ÞÀ¸¸ç 2) ³»ºÎÀûÀ¸·Î ÀÌ ÀÎÀÚ¸¦ ÅëÇØ ¹è¿­¿¡ Á¢±ÙÇÏ°í 3) ÀÎÀÚ¸¦ ÅëÇØ °æ°è¸¦ ³Ñ¾úÀ» ¶§ ÇØ´ç Äڵ尡 °ø°ÝÀÚ°¡ Á¢±Ù °¡´ÉÇÑ ¸Þ¸ð¸®¿¡ ´ëÇؼ­ Àаųª ¾²°Å³ª ÇÒ ¼ö ÀÖ´Â API¸¦ ã¾Æ³»¾ß ÇÏ´Â °ÍÀÌ´Ù. ±×·¯´Ï±î ³»ºÎÀûÀ¸·Î ¹è¿­À» »ç¿ëÇÏ°í ÀÌ ¹è¿­ÀÇ À妽º¸¦ ÀÎÀÚ·Î ¹Þ´Â API´Â ÀûÁö ¾Ê°ÚÁö¸¸ ÀÌ Áß¿¡¼­ °ø°ÝÀÌ ½ÇÁ¦ °¡´ÉÇÑ(gadgetÀÌ Á¸ÀçÇÏ´Â) API¸¦ °ñ¶ó³»¼­ ½Ã³ª¸®¿À¸¦ ¸¸µé¾î¾ß Çϴµ¥ ÀÌ´Â ½±Áö ¾ÊÀº ÀÏÀÌ´Ù. ¹æ¾îÇÏ´Â ÀÔÀå¿¡¼­µµ ¾î¶² API°¡ ÀáÀçÀûÀ¸·Î °ø°Ý´ë»óÀÌ µÉ ¼ö ÀÖ´ÂÁö ÀÏÀÏÀÌ È®ÀÎÇÏ¿© ¼Ò½º¸¦ ¼öÁ¤ÇÏ´Â ÀÏÀÌ °£´ÜÇÏÁö´Â ¾ÊÀºµ¥ µÚ¿¡¼­ ¼³¸íÇÏ°ÚÁö¸¸ ÀÌ °æ¿ì´Â Á» ´õ °£´ÜÇÑ ÇØ°áÃ¥ÀÌ ÀÖ´Ù.

¶Ç ´Ù¸¥ Çϳª À¯·ÂÇÑ °ø°Ý´ë»óÀº ÀÎÅÍÇÁ¸®Åͳª JIT·Î, API È£Ã⺸´Ù ÈξÀ °ø°ÝÀÌ °£´ÜÇÏ´Ù. °ø°ÝÀÚ°¡ ÀÔ·ÂÇÑ Äڵ带 °ø°Ý´ë»óÀÇ ÁÖ¼Ò°ø°£¿¡¼­ ½ÇÇàÇÏ°Ô µÇ¹Ç·Î gadgetÀ» ãÁö ¾Ê°í Á÷Á¢ ÄÚµå·Î ÀÛ¼ºÇÏ¸é µÇ±â ¶§¹®ÀÌ´Ù. ÀÌ °æ¿ì´Â ÈξÀ °ø°ÝÀÌ ½±°í °£´ÜÇϹǷΠ°ø°ÝÀÚ ÀÔÀå¿¡¼­´Â API È£Ã⺸´Ù´Â ÀÌÂÊÀ» ¼±È£ÇÒ ¼ö¹Û¿¡ ¾øÀ» °ÍÀ¸·Î »ý°¢ÇÑ´Ù. ½ÇÁ¦ Spectre ³í¹®¿¡¼­µµ JavaScript¸¦ ÅëÇÑ À¥ºê¶ó¿ìÀú °ø°ÝÄÚµå ¿¹Á¦¸¦ Á¦½ÃÇßÀ¸¸ç, Çö´ëÀûÀÎ ºê¶ó¿ìÀúµéÀº ´ëºÎºÐ JavaScript¸¦ JIT·Î ÄÄÆÄÀÏÇØ ±â°è¾î·Î ½ÇÇàÇϹǷΠ°ø°ÝÇϱ⿡ ÃæºÐÇÑ ¼Óµµ¸¦ º¸ÀåÇÑ´Ù. ÃÖ±ÙÀÇ Àåºñ³ª ¾ÖÇø®ÄÉÀ̼ǿ¡¼­´Â ¼­ºñ½º¸¦ Á» ´õ À¯¿¬ÇÏ°Ô ¿î¿µÇÒ ¼ö ÀÖµµ·Ï lua³ª python, JavaScript µîÀÇ Ç÷¯±×ÀÎÀ» µÎ°í Àִµ¥ ÀÌ·± ½Ã½ºÅ۵鵵 ¿ª½Ã ÀáÀçÀûÀ¸·Î ¸ðµÎ °ø°Ý´ë»óÀÌ µÉ ¼ö ÀÖ´Ù.

Spectre Variant 1ÀÇ ´ëÀÀ
Spectre Variant 1¿¡ ´ëÇؼ­´Â MeltDownó·³ Àüü ȯ°æ¿¡ Àû¿ëÇÏ´Â ÆÐÄ¡°¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. ÇöÀç Linux³ª MS¿¡¼­ ³»³õÀº ÆÐÄ¡´Â ´ÜÁö OSÀÇ Ä¿³Î API¸¦ Spectre Variant 1¿¡¼­ º¸È£Çϱâ À§ÇÑ °ÍÀ̸ç, Áï ÀÌ ÆÐÄ¡¸¦ ÇÏ°Ô µÇ¸é Ä¿³Î API¸¦ È£ÃâÇÒ ¶§ Spectre Variant 1 °ø°ÝÀ¸·Î µ¥ÀÌÅÍ°¡ À¯ÃâµÇ´Â ÀÏÀ» ¿øõÀûÀ¸·Î ¸·À» ¼ö ÀÖ°Ô µÈ´Ù. ÇÏÁö¸¸ apache web server¶óµç°¡, java ¶óµç°¡, ¶Ç´Â À¥ºê¶ó¿ìÀú µî ÀÌ Ãë¾àÁ¡À¸·Î °ø°ÝÇÒ ¼ö ÀÖ´Â ´ë»óÀº ¸Å¿ì ¸¹´Ù. JIT¸¦ °¡Áö°í Àְųª ¿ÜºÎÀÇ ÄÚµåÁ¶°¢À» Ç÷¯±×ÀνÄÀ¸·Î ½ÇÇàÇÒ ¼ö ÀÖ´Â ¾ÖÇø®ÄÉÀ̼ÇÀº ¸ðµÎ °ø°Ý ´ë»óÀÌ µÉ ¼ö ÀÖ´Ù. ¸¸¾à ÀÚÁÖ ¾²´Â ¾ÖÇø®ÄÉÀ̼ÇÀÌ ±×·± ŸÀÔÀ̶ó¸é Spectre Variant 1¿¡ ´ëÇÑ ÀûÀýÇÑ ÆÐÄ¡°¡ ³ª¿Í ÀÖ´ÂÁö È®ÀÎÇÒ ÇÊ¿ä°¡ ÀÖ´Ù°í º¸ÀδÙ. Áï ÀÌ Ãë¾àÁ¡Àº OS¸¦ Æ÷ÇÔÇÏ¿© °³º° ¾ÖÇø®ÄÉÀÌ¼Ç °¢°¢¿¡ ´ëÇØ °³º°ÀûÀ¸·Î ´ëÀÀÇØÁÖ¾î¾ß ÇÏ´Â °ÍÀÌ´Ù.

±¸Ã¼ÀûÀ¸·Î º¸ÀÚ¸é, Spectre Variant 1¿¡ ´ëÇØ ÀÎÅÚ¿¡¼­ ±Ç°íÇÏ´Â ´ëÀÀ¾ÈÀº LFENCE, MFENCE, SFENCE °°Àº Á÷·ÄÈ­ ¸í·ÉÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÎÅÚÀº ±×Áß¿¡¼­µµ °¡Àå ¼º´É ¸é¿¡¼­ ³´´Ù´Â ÀÌÀ¯·Î LFENCE¸¦ ÀûÀýÇÏ°Ô Äڵ忡 »ðÀÔÇÒ °ÍÀ» ±Ç°íÇÏ°í Àִµ¥, À̴ Ưº°ÇÑ CPU ¸í·ÉÀ¸·Î ÀÌ ¸í·É µÚ¿¡ ¿À´Â ¸í·ÉµéÀº ½ÇÇàÀ¯´Ö¿¡ ÀûÀçµÉ ¼ö´Â ÀÖÀ¸³ª LFENCE°¡ ¼öÇàµÇ±â Àü±îÁö º´Çà½ÇÇàµÇÁö ¾Ê´Â´Ù. µû¶ó¼­ ±× µÚÀÇ ¸í·ÉÀ» ÃßÃø½ÇÇàÇÏ¿© °ø°ÝÇÏ´Â °æ¿ì¿¡ ´ëÇÑ È¿°úÀûÀÎ ´ëºñÃ¥ÀÌ µÉ ¼ö ÀÖ´Ù. ÃßÃø½ÇÇàÀ¸·Î ÀÎÇÑ ¼º´ÉÇâ»óÀ» ´Ù¼Ò Æ÷±âÇϱ⠶§¹®¿¡ ¼º´ÉÀÌ ³·¾ÆÁú ¼ö ÀÖÁö¸¸ ½É°¢ÇÑ ¼öÁØÀº ¾Æ´Ò °ÍÀ¸·Î º¸ÀδÙ. ½ÇÁ¦·Î ¸¹Àº Å×½ºÆ®ÀÇ °á°ú¸¦ º¸¸é Spectre Variant 1 ÆÐÄ¡·Î ÀÎÇÑ ¼º´ÉÇ϶ôÀº °ÅÀÇ ¾ø´Ù´Â °ÍÀÌ °øÅëµÈ °á·ÐÀÌ´Ù.

[Ãâó=https://people.redhat.com/jcm/talks/FOSDEM_2018.pdf]


À§ ±×¸²Àº RedHatÀÌ FOSDEM 2018¿¡¼­ ¹ßÇ¥ÇÑ ½½¶óÀ̵åÀÇ ÀϺθ¦ ¹ßÃéÇÑ °ÍÀÌ´Ù. Á¶°ÇºÐ±â¹® °á°úºí·Ï ùÁÙ¿¡ Á÷·ÄÈ­ ¸í·ÉÀÌ µé¾î°¡¼­ ÀÌ À§Ä¡±îÁö ½ÇÇàÀÌ ¿Ï·áµÅ¾ß ´ÙÀ½ ¸í·ÉÀÌ ½ÇÇàµÉ ¼ö ÀÖÀ½À» ¸í½ÃÇÑ´Ù.

¾Õ¼­ ¾ð±ÞÇÑ ´ë·Î ¸®´ª½º Áø¿µ¿¡¼­´Â ÀÌ¹Ì ÀÌ ÆÐÄ¡¸¦ Àû¿ëÇÑ Ä¿³ÎÀÌ ¸±¸®Áî µÆÀ¸¸ç, À©µµ¿ìÀÇ Spectre Variant 1¿¡ ´ëÇÑ ÆÐÄ¡µµ ÀÌ LFENCE¸¦ Àû±Ø »ç¿ëÇÑ °ÍÀÌ´Ù. ½ÇÁ¦ À©µµ¿ìÀÇ ÆÐÄ¡ ³»¿ëÀ» »ìÆ캸¸é ¾îÁö°£ÇÑ ½Ã½ºÅÛ ÄÝ ÁøÀÔÁ¡¿¡ ¸ðµÎ LFENCE¸¦ ³Ö¾îµÐ °ÍÀ» È®ÀÎÇÒ ¼ö Àִµ¥ À̸¦ ÅëÇØ Ä¿³Î¿¡ ´ëÇÑ °ø°ÝÀ» ¸·À¸·Á´Â Àǵµ¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¹®Á¦´Â LFENCE ¸í·ÉÀ» ¹æ¾îÇØ¾ß ÇÏ´Â Æ÷ÀÎÆ®¸¶´Ù ³Ö¾î¼­ ´Ù½Ã ºôµå¸¦ ÇØ¾ß ÇÏ´Â °ÍÀÌ¶ó °³º° ¾ÖÇø®ÄÉÀÌ¼Ç ´ÜÀ§·Î ¹Û¿¡ ´ëÀÀµÇÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. OS¿¡ ´ëÇÑ º¸È£´Â ¹èÆ÷µÈ ÆÐÄ¡ ¼³Ä¡·Î ÇØ°áÇÒ ¼ö ÀÖÁö¸¸ »ç¿ëÇÏ´Â ¾ÖÇø®ÄÉÀ̼ǵ鿡 ´ëÇؼ­µµ °¢°¢ ÀÌ Ãë¾àÁ¡¿¡ °³º° ´ëÀÀÇÒ ¼ö¹Û¿¡ ¾ø´Ù. ¾Æ¸¶µµ ¸¹Àº »ç¶÷µéÀÌ »ç¿ëÇÏ´Â ¾ÖÇø®ÄÉÀ̼ǺÎÅÍ ÆÐÄ¡µÇÁö ¾ÊÀ»±î »ý°¢Çϴµ¥ ¾Õ¼­ ¾ð±ÞÇÑ´ë·Î ÀÌ Ãë¾àÁ¡Àº °ø°Ý ÀÚü°¡ ¸Å¿ì ±î´Ù·Ó±â ¶§¹®¿¡ ¸ÕÀú ¼³¸íÇÑ MeltDown ¸¸Å­ À§ÇùÀûÀÌÁö´Â ¾Ê´Ù. °æ°èÈ®ÀÎÀ» Åë°úÇÒ ¼ö ÀÖ´Â °Ç ¸ÂÁö¸¸ ±×°É·Î ¹«¾ùÀ» ÇÒ ¼ö Àִ°¡´Â ¾ÖÇø®ÄÉÀ̼ÇÀÇ Äڵ忡 µû¶ó ´Ù¸£°í, ´Ù½Ã ¸»ÇØ ¾î¶² gadgetÀ» ã¾Æ³¾ ¼ö Àִ°¡, °¡ ¹®Á¦°¡ µÇ¸ç, ´ëºÎºÐÀº Åë°úÇÒ ¼ö ÀÖ´Ù Á¤µµÀÌÁö ½ÇÁ¦·Î À§ÇùÀÌ µÉ ¼ö ÀÖÀ» Á¤µµ·Î Áß¿äÇÑ µ¥ÀÌÅ͸¦ Àд °Ç ½±Áö ¾Ê´Ù. °ø°ÝÀÌ µÇÁö ¾Ê´Â´Ù´Â °Ç ¾Æ´ÏÁö¸¸ °ø°Ý ¼º¸³ÀÌ µÇ´Â Á¶°ÇÀÌ ¾ÆÁÖ ±î´Ù·Ó±â ¶§¹®¿¡ ½ÇÁ¦ ÀÇ¹Ì ÀÖ´Â µ¥ÀÌÅÍ À¯ÃâÀÌ °¡´ÉÇÏ·Á¸é ¸Å¿ì Àß ±¸¼ºµÈ Á¤±³ÇÑ ¼³°è°¡ ÇÊ¿äÇÒ °ÍÀ¸·Î º¸ÀδÙ.

°ø°ÝÀÌ ½±Áö´Â ¾ÊÀ¸³ª ¸¸¾à º»ÀÎÀÌ »ç¿ëÇÏ´Â ½Ã½ºÅÛ¿¡ attack surface°¡ Á¸ÀçÇÑ´Ù°í ÆÇ´ÜÇÑ´Ù¸é ħÇØ °¡´É¼ºÀÌ ¾ø´ÂÁö Çѹø È®ÀÎÇÒ ÇÊ¿ä´Â ÀÖ´Ù. ±¸±Û ³í¹®¿¡¼­ ¿¹¸¦ µç °ÍÀº À¥ºê¶ó¿ìÀúÀÇ JavaScript(JIT)¿Í Ä¿³Î ¸ðµâÀ» ÀÌ¿ëÇØ °ø°ÝÇÏ´Â ¹æ¹ý(API È£Ãâ)Àε¥ ¾Õ¼­ ¾ð±ÞÇÑ ´ë·Î Á¢±Ù¼º ¸é¿¡¼­´Â ÀüÀÚ°¡ Á» ´õ ¹ü¿ëÀûÀÏ °ÍÀÌ´Ù. ÇØÄ¿°¡ °ø°Ý¿ë JavaScript¸¦ ¾îµò°¡ÀÇ À¥»çÀÌÆ®¿¡ ¼û°Ü³õ°í ½ÇÇàÀ» À¯µµÇÑ´Ù¸é Spectre¿¡ ´ëÇÑ ´ëºñ°¡ µÅÀÖÁö ¾ÊÀº ºê¶ó¿ìÀú¸¦ ¾²´Â °æ¿ì »÷µå¹Ú½º¸¦ ºÎ¼ö°í À¥ºê¶ó¿ìÀú¿¡ ÀúÀåµÈ ¹Î°¨ Á¤º¸¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¶ÇÇÑ JavaScript´Â °ø°ÝÄÚµå ÀÛ¼ºÀÌ °£´ÜÇÏ°í ½ÇÇàÀ» À¯µµÇϱⰡ ½¬¿î ÆíÀ̶ó ÇâÈÄ ÇÇÇرԸ𰡠¾öû³ª°Ô Ä¿Áú °¡´É¼ºÀÌ Àִµ¥ ÀÌ·± ÀÌÀ¯·Î Å©·ÒÀ̳ª ÆÄÀ̾îÆø½º µî ¸¹ÀÌ »ç¿ëµÇ´Â ºê¶ó¿ìÀú¿¡´Â ÀÌ¹Ì ÇØ´ç Ãë¾àÁ¡¿¡ ´ëÇÑ ÆÐÄ¡°¡ ¿Ï·áµÅ ÀÖ´Ù. ÀÌ ÆÐÄ¡ÀÇ ÁÖµÈ ³»¿ë Áß Çϳª´Â JavaScript¿¡¼­ »ç¿ëÇϴ ŸÀ̸ÓÀÇ Á¤¹Ðµµ¸¦ ¶³¾î¶ß¸®´Â °ÍÀ¸·Î ÀÌ·¸°Ô Çϸé ij½¬°¡ ³²´õ¶óµµ Àд ¼ÓµµÂ÷·Î µ¥ÀÌÅ͸¦ À¯ÃâÇÏ´Â ÀÏÀÌ ºÒ°¡´ÉÇØÁö±â ¶§¹®ÀÌ´Ù. ÀϹÝÀûÀÎ JavaScript ¾ÖÇø®ÄÉÀ̼ÇÀ̶ó¸é ÀÌ Á¤µµ Á¤¹Ðµµ ÀúÇÏ·Î ½ÇÇà¿¡ ¹®Á¦°¡ µÇÁö´Â ¾ÊÀ¸¹Ç·Î ÇØ´ç ÆÐÄ¡·Î ÀÎÇÑ ¿Àµ¿ÀÛÀº ¿°·ÁÇÏÁö ¾Ê¾Æµµ ÁÁ´Ù. µû¶ó¼­ ºê¶ó¿ìÀú¸¦ ÃֽŠ¹öÀüÀ¸·Î ¾÷µ¥ÀÌÆ®ÇÏ°í °è¼Ó À¯ÁöÇÏ°í ÀÖ´Ù¸é À¥ºê¶ó¿ìÀú¸¦ °æÀ¯ÇÑ ÀÌ Ãë¾àÁ¡ °ø°Ý¿¡ ´ëÇؼ­´Â Å©°Ô ¿ì·ÁÇÏÁö ¾Ê¾Æµµ µÉ °ÍÀÌ´Ù.

Ä¿³Î ¸ðµâÀ̳ª À©µµ¿ìÀÇ DLLÀ» ÅëÇØ °ø°ÝÇÒ ¼öµµ ÀÖ°ÚÁö¸¸ ÀÌ´Â ¾ÖÇø®ÄÉÀ̼ÇÀ̳ª ¸ðµâÀÇ ¸í½ÃÀûÀÎ ¼³Ä¡¸¦ ¿ä±¸ÇϹǷΠÀΰ¡ ¹ÞÁö ¾ÊÀº ÇÁ·Î±×·¥À̳ª Ãâó°¡ ºÒºÐ¸íÇÑ ÆÄÀÏÀ» ½ÇÇàÇÏÁö ¾Ê´Â´Ù¸é ¹®Á¦µÉ ºÎºÐÀº ¾ø´Ù. Áö±Ý±îÁö ¿øÄ¢À» ¼¼¿ö º¸¾ÈÀ̽´µéÀ» Àß °ü¸®ÇØ¿Ô´Ù¸é Spectre ¿¡ ´ëÇؼ­µµ µ¿ÀÏÇÏ°Ô Àß ´ëÀÀÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

µÎ ¹ø° ¿¬À縦 ¸¶Ä¡¸ç

¡ã³ë±Ô³² °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå/CTO

ÀÌ·¸°Ô Çؼ­ ÃÑ 3ȸ ¿¬ÀçÀÇ µÎ ¹ø° ±â°í°¡ ³¡ÀÌ ³µ´Ù. À̹ø ±â°í´Â ƯÈ÷ ±æ°í È®ÀÎÇÒ ³»¿ëÀÌ ¸¹¾Æ¼­ Èûµé¾ú´Âµ¥ µ¶Àڵ鿡°Ô ÀǵµÇÑ ³»¿ëÀÌ Àß Àü´ÞµÆ´ÂÁö ¸ð¸£°Ú´Ù. ´ÙÀ½ ȸ¿¡¼­´Â CPU Ãë¾àÁ¡ÀÇ ¸¶Áö¸· ÁÖÁ¦ÀÎ Spectre Variant 2¿¡ ´ëÇؼ­ ¾ê±âÇغ¸µµ·Ï ÇÏ°Ú´Ù. ³¡±îÁö ÀÌ ¿ø°í°¡ ¸¹Àº »ç¶÷µé¿¡°Ô µµ¿òÀÌ µÉ ¼ö Àֱ⸦ ±â´ëÇÑ´Ù.
[±Û_ ³ë±Ô³² °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå °â ÃÖ°í±â¼úÃ¥ÀÓÀÚ(ngn@gabia.com)]

¡á CPU Ãë¾àÁ¡ Á¾ÇÕº¸°í¼­ ¿¬Àç¼ø¼­
¨ç Ãë¾àÁ¡ÀÇ ±âº»¿ø¸®
¨è MeltDown°ú Spectre Variant 1
¨é Spectre Variant 2

ÇÊÀÚ ¼Ò°³_ ³ë±Ô³²Àº °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå °â ÃÖ°í±â¼úÃ¥ÀÓÀÚ(CTO)·Î¼­, IT ¾÷°è¿¡¼­ ¼ö½Ê ³â°£ ½×Àº °æÇèÀ» ¹ÙÅÁÀ¸·Î °¡ºñ¾ÆÀÇ ÀÎÇÁ¶ó¸¦ °íµµÈ­ÇÏ°í ¹ßÀü½ÃÅ°´Â ¿ªÇÒÀ» ¸Ã°í ÀÖ´Ù. ÃÖ±Ù¿¡´Â ³»ºÎ¿¡ ½×ÀÌ´Â ¼­ºñ½º °ü·Ã µ¥ÀÌÅ͸¦ ½Å°æ¸ÁÀ¸·Î ó¸®ÇØ ¿î¿µÀ» ÀÚµ¿È­ÇÏ°í º¸¾È°ú Ŭ¶ó¿ìµå ÀÎÇÁ¶ó¸¦ °íµµÈ­ÇÏ´Â °Í¿¡ °ü½ÉÀ» °®°í ÀÖ´Ù. °¡Ä¡ÅõÀÚ»çÀÌÆ® ¹ë·ù½ºÅ¸ ±â¼úÀÌ»ç, ¿µ»óº¸¾È¼­ºñ½º ¿¡¹öºä ´ëÇ¥À̻縦 ¿ªÀÓÇß´Ù.
[¿À´ÙÀÎ ±âÀÚ(boan2@boannews.com)]

<ÀúÀÛ±ÇÀÚ: º¸¾È´º½º(www.boannews.com) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>

  •  
  • 6
  • ÆäÀ̽ººÏ º¸³»±â Æ®À§ÅÍ º¸³»±â ³×À̹ö ¹êµå º¸³»±â Ä«Ä«¿À ½ºÅ丮 º¸³»±â ³×À̹ö ºí·Î±× º¸³»±â

¼·ç 2018.12.12 16:40

ÁÁÀº ±Û °¨»çÇÕ´Ï´Ù~


  • ¡°
  •  SNS¿¡¼­µµ º¸¾È´º½º¸¦ ¹Þ¾Æº¸¼¼¿ä!! 
  • ¡±
¾Æ½ºÆ®·Ð½ÃÅ¥¸®Æ¼ ÆÄ¿öºñÁî 2023³â2¿ù23ÀÏ ½ÃÀÛ ³Ý¾Øµå ÆÄ¿öºñÁî ÁøÇà 2020³â1¿ù8ÀÏ ½ÃÀÛ~2021³â 1¿ù8ÀϱîÁö À§Áîµð¿£¿¡½º 2018
¼³¹®Á¶»ç
³»³â ȸ»ç¿¡ ²À µµÀÔÇÏ°í ½ÍÀº º¸¾È ¼Ö·ç¼Ç ¶Ç´Â Ç÷§ÆûÀº ¹«¾ùÀΰ¡¿ä?
XDR
EDR
AI º¸¾È
Á¦·ÎÆ®·¯½ºÆ®
°ø±Þ¸Á º¸¾È ü°è(SBOM)
Ŭ¶ó¿ìµå º¸¾È ¼Ö·ç¼Ç
±âŸ(´ñ±Û·Î)