[ Home | Freetime works | FreeBSD | KFUG ]

¸®´ª½º¿ùµå 1997³â 12¿ùÈ£ ±â»ç

Ãæ°Ý! ÆæÆ¼¾ö ¹ö±×

ÃÖÁØÈ£(1999/11/17)
Áö³­ 11¿ù ÃÊ, À¯Áî³Ý(8)°ú ¸®´ª½º¸¦ ºñ·ÔÇÑ °¢ PC°ü·Ã ¸ÞÀϸµ ¸®½ºÆ®¿Í BBSµéÀº ÀÌ¹Ì ³Î¸® »ç¿ëµÇ°í ÀÖ´Â ÀÎÅÚÀÇ ÆæÆ¼¾ö ÇÁ·Î¼¼¼­¿¡ ¹ö±×°¡ ÀÖ´Ù´Â »ç½Ç¿¡ °æ¾ÇÇß´Ù(1, 2). °ú¿¬ ¾î¶² °ÍÀ̾ú°í, ÇØ°áÃ¥Àº ÀÖ´Â °ÍÀϱî?

¹ö±×ÀÇ ½É°¢¼º

ÀÌ ¹ö±×´Â ÇÁ·Î¼¼¼­ÀÇ Çϵå¿þ¾îÀûÀÎ ¹ö±×·Î ¾Ë·ÁÁø ¹Ù·Î´Â µµ½º, À©µµ¿ì95, À©µµ¿ìNT, ¸®´ª½º, FreeBSD, Solaris x86µî ÆæÆ¼¾ö¿¡¼­ ¿î¿µÇÒ ¼ö ÀÖ´Â ¸ðµç ¿î¿µÃ¼Á¦¿¡ ¿µÇâÀÌ ÀÖ´Ù. ´Ù¸¸ ±× ¿µÇâÀº ÆæÆ¼¾ö ÇÁ·Î¼¼¼­¿Í ÆæÆ¼¾ö MMXÇÁ·Î¼¼¼­·Î Á¦ÇѵǸç, 486À̳ª ÆæÆ¼¾ö ÇÁ·Î, ÆæÆ¼¾ö IIµî¿¡´Â ¿µÇâÀÌ ¾ø°í, Cyrix³ª AMDµîÀÇ ÀÎÅÚ È£È¯°è¿­ ÇÁ·Î¼¼¼­¿¡µµ ¿µÇâÀÌ ¾ø´Ù. ÀÌ ¹ö±×´Â À¯´Ð½º °è¿­ OSÀÇ °æ¿ì ¿î¿µÀÚ(root)ÀÇ ±ÇÇÑ ¾øÀ̵µ ½Ã½ºÅÛÀ» ´Ù¿î½Ãų ¼ö Àֱ⠶§¹®¿¡, °ø°ø ¼­ºñ½º¸¦ ¿î¿µÇÏ´Â °æ¿ì³ª ¾ÇÀÇÀûÀÎ ¹ÙÀ̳ʸ® À¯Æ÷¿¡ Ãë¾àÇϸç, óÀ½¿¡´Â ¼ÒÇÁÆ®¿þ¾îÀûÀÎ ÇØ°áÃ¥À» »ý°¢Çϱ⠾î·Á¿î Çϵå¿þ¾îÀû ¹ö±×¿´´Ù´Â °ÍÀ̾ú´Ù. ±×·¯³ª ÇöÀç ¼ÒÇÁÆ®¿þ¾îÀûÀ¸·Î ÀÌ ¹ö±×¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Ù´Â »ç½ÇÀÌ ¾Ë·ÁÁ® ÀÖ´Ù - µµ½º´Â ¾î·Æ°ÚÁö¸¸.

¹ö±×ÀÇ ³»¿ë

óÀ½ ¾Ë·ÁÁø ¹Ù·Î´Â, F0 0F C7 C8 ÀÇ ¹ÙÀÌÆ®¿­À» ½ÇÇàÇϵµ·Ï ÇÏ¸é ½Ã½ºÅÛÀÌ Áߴܵȴٴ °ÍÀ̾ú´Ù. ÀÌ ÄÚµå´Â ¿Ã¹Ù¸¥ ÆæÆ¼¾ö ¸í·ÉÀÌ ¾Æ´Ï´Ù. µû¶ó¼­ CÄÄÆÄÀÏ·¯µîÀÇ ÇÁ·Î±×·¥ »ý¼º µµ±¸´Â ÀÌ ¸í·ÉÀ» ¸¸µéÁö ¾Ê°í, ´ÜÁö »ç¿ëÀÚ°¡ ÀÓÀÇ·Î ÁöÁ¤ÇÏ´Â ¶§¿¡¸¸ ³ªÅ¸³­´Ù. ÀÌ ¶§¹®¿¡ ±âÁ¸¿¡ »ç¿ëÇÏ´ø ÇÁ·Î±×·¥ÀÌ ÀÌ ¹ö±×·Î ÀÎÇØ ´Ù¿îµÇ´Â ÀÏÀº ¾øÀ» °ÍÀÌ´Ù. ÇÁ·Î¼¼¼­´Â ÀÌ ¸í·É¿¡ ´ëÇØ À߸øµÈ ¸í·ÉÀ» ÀǹÌÇÏ´Â ÀÎÅÍ·´Æ®¸¦ ¹ß»ý½ÃŰ¾ß ÇÏÁö¸¸, ½ÇÁ¦·Î ±×·¸°Ô ÇÏÁö ¾Ê°í ´Ù¿îµÇ¾î ¹ö¸°´Ù. °Ô´Ù°¡ ÀÌ ¹ö±×´Â 32ºñÆ® ÇÁ·ÎÅØÆ¼µå ¸ðµåÀÇ »ç¿ëÀÚ ¼öÁØ ±ÇÇÑ¿¡¼­µµ ÇÁ·Î¼¼¼­¸¦ ´Ù¿î½Ãų ¼ö ÀÖ´Â °ÍÀ̾, ISP·Î Á¦°øµÇ´Â ÆæÆ¼¾ö ¼­¹öÀÇ °æ¿ì »ç¿ëÀÚÀÇ ¾ÇÀÇÀûÀÎ DOS(Denial-Of-Service)°ø°ÝÀÇ ´ë»óÀÌ µÉ ¼ö ÀÖ´Ù. ÀÌ ¹ö±×´Â ¹®Á¦°¡ µÇ´Â ¸í·ÉÀÇ À̸§À» µû¼­ Pentium F0, Pentium F0 0F, Pentium lock cmpxchg8b¹ö±× µîÀ¸·Î ºÒ¸°´Ù.

¹®Á¦ÀÇ ÄÚµå´Â ´ÙÀ½°ú °°Àº ¾î¼Àºí¸® ¸í·ÉÀÌ´Ù. ¹°·Ð Á¤»óÀûÀÎ ¸í·ÉÀº ¾Æ´Ï´Ù. ÀÌ ¸í·ÉÀº 64ºñÆ® ¼ýÀÚ¸¦ 32ºñÆ® ¼ýÀÚ¿Í ºñ±³Çؼ­ °á°ú¿¡ µû¶ó ¹Ù²Ù¶ó´Â °ÍÀε¥, ¸ÂÁö ¾Ê´Â ¸í·ÉÀÌ´Ù.

  lock: cmpxchg8b %eax
ÇÏÁö¸¸ ÀÌ ¸í·É¸¸ ±×·± °ÍÀÌ ¾Æ´Ï°í ·¹Áö½ºÅ͸¦ ebx, ecxµîÀ¸·Î ¹Ù²Ù¾îµµ °°Àº °á°ú°¡ ³ª¿Â´Ù°í ÇÑ´Ù. ÆæÆ¼¾ö ÇÁ·Î¼¼¼­ ¸Å´º¾ó¿¡ µû¸£¸é ÀÌ ¸í·ÉÀ» À߸øµÈ ¸í·ÉÀ¸·Î ÀÎÁ¤ÇØ¾ß ÇÑ´Ù°í ÇÑ´Ù.

Å×½ºÆ®

´ÙÀ½Àº ½ÇÁ¦ ¹ö±×¸¦ ¹ß»ý½ÃŰ´Â ÄÚµå(4)ÀÌ´Ù. ÆæÆ¼¾ö »ç¿ëÀÚµéÀº Á¶½ÉÇØ¼­ ÇØ º¸±â ¹Ù¶õ´Ù. ¸®´ª½º¿Í °°Àº À¯´Ð½º °è¿­ OS¸¦ ¿î¿µÇÏ´Â °æ¿ì¿¡´Â ÆÄÀϽýºÅÛÀ» Àбâ Àü¿ëÀ¸·Î ¸¶¿îÆ®Çϰųª Single-User¸ðµå¿¡ µé¾î°¡¼­ ÇÏ´Â °ÍÀÌ ½Ã½ºÅÛ ÆÄ¼ÕÀ» ÃÖ¼ÒÇÑÀ¸·Î ¸·´Â ÀÏÀÌ´Ù.
$ cat > f0.c
char main[] = { 0xf0, 0x0f, 0xc7, 0xc8 };
^D
$ gcc f0.c
$ ./a.out
Illegal instruction (core dumped)
¿©·¯ºÐÀÇ ÇÁ·Î¼¼¼­°¡ ¼øÁ¤(!) ÆæÆ¼¾öÀ̶ó¸é ¸¶Áö¸·ÀÇ Illegal instruction¸Þ½ÃÁö´Â º¸Áö ¸øÇßÀ» °ÍÀÌ´Ù...

¾î¶»°Ô, ´©°¡ ¾Ë·ÈÀ»±î?

¾Ë·ÁÁø ¹Ù(4)·Î´Â noname@noname.comÀ̶ó´Â »ç¶÷ÀÌ 11¿ù 6ÀÏ¿¡ ¸®´ª½º ´º½º±×·ì¿¡ ÀÌ ¹®Á¦¸¦ Æ÷½ºÆÃÇß´Ù°í ÇÑ´Ù. ÇÏÁö¸¸ x86.orgÀÇ Robert Collins´Â ÀÌ ¹®Á¦¸¦ ¸î´ÞÀüºÎÅÍ ÀÌ¹Ì ¾Ë°í ÀÖ¾ú´Ù°í ÁÖÀåÇß´Ù. Jim Brooks¶ó´Â »ç¶÷Àº Robert Collins°¡ 4-5´Þ Àü¿¡ ÀÌ ¹®Á¦¸¦ Àڽſ¡°Ô º¸¿©ÁÖ¾ú´Ù°í Çß°í, Collins´Â ÀÌ ¹®Á¦¸¦ ÀÎÅÚ¿¡°Ô ¾Ë·ÈÁö¸¸ ¹«¹ÝÀÀÀ̾ú´Ù°í ¸»Çß´Ù. ¹Ý¸é ÀÎÅÚÀº ´º½º±×·ì¿¡ ¹®Á¦ÀÇ ±ÛÀÌ ¿Ã¶ó¿À±â Àü±îÁö ÀÌ ¹®Á¦¿¡ ´ëÇØ ¸ô¶ú´Ù°í ÁÖÀåÇÑ´Ù.

»ç¿ëÇÏÁöµµ ¾Ê´Â ¸í·ÉÀÇ ¹ö±×¸¦ ¾î¶»°Ô ¹ß°ßÇÏ¿´À»±î? CPU¿¡ ´ëÇØ ¸ðµç ¹ÙÀÌÆ®¿­À» ¸í·Éó·³ ÁÖ°í ¿Ã¹Ù¸¥ µ¿ÀÛÀ» ÇÏ´ÂÁö ¾Ë¾Æº¸´Â °Ë»ç(9)´Â ´©±¸³ª ½±°Ô ÇØ º¼ ¼ö ÀÖ´Ù. ¾Æ¸¶ ÀÌ·± µµÁß¿¡ ¹ß°ßµÇÁö ¾Ê¾ÒÀ»±î...

ÇØ°áÃ¥

ÀÎÅÚÀº ÀÌ ¹ö±×¸¦ ÀÎÁ¤Çß´Ù. ÀÎÅÚ »çÀÌÆ®¿¡ °¡¸é ÀÌ ¹ö±×¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ±â¼úÀûÀÎ Á¤º¸(3)¸¦ ¾òÀ» ¼ö ÀÖ°í, ¼ÒÇÁÆ®¿þ¾îÀûÀÎ ÇØ°áÃ¥ÀÌ Á¸ÀçÇÑ´Ù. ÇÊÀÚ°¡ ÀÌ ±ÛÀ» ¾µ ¶§±îÁö BSDI(5), Linux(6), FreeBSD, Windows 95(7)µî¿¡¼­ ÀÌ ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Â °ø½Ä/ºñ°ø½ÄÀûÀÎ ÆÐÄ¡°¡ ³ª¿Ô´Ù. LinuxÀÇ °æ¿ì °³¹ß¹öÀü Ä¿³Î 2.1.64¿¡ ÇØ´ç ¹ö±×ÀÇ ÆÐÄ¡°¡ Æ÷ÇԵǾú´Ù. FreeBSDÀÇ °æ¿ì freebsd-hackers ¸ÞÀϸµ ¸®½ºÆ®¿¡ ºñ°ø½ÄÀûÀÎ Ä¿³Î ÆÐÄ¡°¡ Æ÷½ºÆÃµÈ ¹Ù ÀÖÀ¸¸ç, BSDIÀÇ °æ¿ì¿¡´Â °í°´¿¡°Ô °ø½ÄÀûÀÎ ÆÐÄ¡¸¦ Á¦°øÇÑ´Ù. ´Ù¸¥ OSÀÇ ÆÐÄ¡´Â ¾Ë·ÁÁø ¹Ù°¡ ¾øÁö¸¸, Ä¿³ÎÀÌ ÇÁ·ÎÅØÆ¼µå ¸ðµå¸¦ Á¦¾îÇÏ´Â ´ëºÎºÐÀÇ OSÀÇ °æ¿ì ÆÐÄ¡°¡ °¡´ÉÇϸ®¶ó »ý°¢ÇÑ´Ù.

ÆÐÄ¡´Â OS¿¡ µû¶ó ´Ù¸¥ ¹æ½ÄÀ¸·Î ±¸ÇöµÇÁö¸¸, ´ëºÎºÐ F0 0F¸í·ÉÀÌ ½ÇÇàµÇ´Â ÆäÀÌÁö¿¡¼­ À߸øµÈ ¸í·É ÀÎÅÍ·´Æ® ´ë½Å ÆäÀÌÁö ÆúÆ®¿Í °°ÀÌ ´õ ¿ì¼±¼øÀ§°¡ ³ôÀº ´Ù¸¥ ÀÎÅÍ·´Æ®¸¦ ¹ß»ý½ÃŰ´Â ¹æ¹ýÀ¸·Î ó¸®ÇÑ´Ù°í ÇÑ´Ù. ÀÌ ¹æ¹ýÀº »ý°¢º¸´Ù OSÀÇ ¼º´ÉÀ» ±×·¸°Ô Å©°Ô ³·ÃßÁö´Â ¾Ê´Â´Ù°í Çϸç, ÆæÆ¼¾öÀÌ ¾Æ´Ñ ÇÁ·Î¼¼¼­¿¡¼­´Â »ç¿ëÇÒ Çʿ䵵 ¾ø´Ù. ÀÚ¼¼ÇÑ °ÍÀº ¸®´ª½º Ä¿³Î 2.1.63¿¡¼­ ÆæÆ¼¾ö ¹ö±×¿¡ ´ëÇÑ ºÎºÐ(linux/arch/i386/kernel/setup.c, linux/arch/i386/mm/fault.c,linux/include/asm-i386/bugs.h)À» Àо¶ó. ÀÎÅÚ¿¡¼­µµ ¼ÒÇÁÆ®¿þ¾î º¥´õ¸¦ À§ÇØ Á¤º¸¸¦ Á¦°øÇϰí ÀÖ´Ù(3).

À§ÇèÀº ¿©ÀüÈ÷..

¼ÒÇÁÆ®¿þ¾î°¡ ¿Ïº®ÇÑ °ÍÀÌ ¾Æ´Ïµí, Çϵå¿þ¾îµµ ¿Ïº®ÇÑ °ÍÀÌ ¾Æ´Ï´Ù. ƯÈ÷ CISC·Î ¸¶ÀÌÅ©·ÎÇÁ·Î±×·¥µÇ´Â ÆæÆ¼¾ö°ú °°Àº °æ¿ì ±× ÀÚüµµ ÇϳªÀÇ ¼ÒÇÁÆ®¿þ¾î¶ó ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÆæÆ¼¾öÀº ÀÌ¹Ì ºÎµ¿¼Ò¼öÁ¡ ¹ö±×µîÀ¸·Î »ó´çÇÑ È«¿ªÀ» Ä¡¸¥ ÀûÀÌ ÀÖ´Ù. °Ô´Ù°¡ bugtraq¸ÞÀϸµ ¸®½ºÆ®(10)¿¡ µû¸£¸é ¸ðµç RISCÇÁ·Î¼¼¼­°¡ ÀÌ·± Á¾·ùÀÇ ¹ö±×¿¡ ¾ÈÀüÇÏÁö ¸øÇÏ´Ù´Â ³î¶ó¿î »ç½ÇÀ» ÀüÇϰí ÀÖ´Ù(9). ¹ö±×´Â ¼ÒÇÁÆ®¿þ¾î¿¡¸¸ Àִ°ÍÀÌ ¾Æ´Ï¶ó ¿ì¸®°¡ ¹Ï°í µû¸£´Â CPU¿¡µµ ÀÖ´Â °ÍÀÌ´Ù!

°ü·Ã »çÀÌÆ®

  1. CNET's news.com: http://www.news.com/News/Item/0,4,16312,00.html
  2. Robert Collins's x86.org: News: http://www.x86.org/HowNews.html
  3. Pentium Processor invalid instruction erratum: http://support.intel.com/support/processors/pentium/ppiie/index.htm
  4. Pentium F0 Bug info: http://www-personal.umich.edu/~hasdi/pentium_lock.htm
  5. Linux 2.1 Kernel Patches - 2.1.63¿¡¼­ ÆæÆ¼¾ö F0 ¹ö±× ÆÐÄ¡°¡ µÇ¾ú´Ù. : http://www.linuxhq.com/kpatch21.html
  6. James Finnegan's Microsoft Windows Development Resources(À©µµ95 ÆæÆ¼¾ö F0 ¹ö±× ºñ°ø½Ä ÆÐÄ¡): http://www.windows.to/
  7. BSDI-3.1 ÆæÆ¼¾ö F0 °ø½Ä ¹ö±×ÆÐÄ¡: ftp://ftp.bsdi.com/bsdi/patches/patches-3.1/README
  8. USENET - comp.sys.intel
  9. CRASHME: Random input testing
  10. Aleph One's underground.org: http://www.underground.org

$Id: index.shtml,v 1.1.1.1 2001/05/23 03:11:29 cjh Exp $

[ Home | Freetime works | FreeBSD | KFUG ]


Copyright © 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 CHOI Junho, all rights reserved.
Please send spam/UCE here to register your mail to razor