[
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¿¡µµ ÀÖ´Â °ÍÀÌ´Ù!
°ü·Ã »çÀÌÆ®
- CNET's news.com: http://www.news.com/News/Item/0,4,16312,00.html
- Robert Collins's x86.org: News: http://www.x86.org/HowNews.html
- Pentium Processor invalid instruction erratum: http://support.intel.com/support/processors/pentium/ppiie/index.htm
- Pentium F0 Bug info: http://www-personal.umich.edu/~hasdi/pentium_lock.htm
- Linux 2.1 Kernel Patches - 2.1.63¿¡¼ ÆæÆ¼¾ö F0 ¹ö±× ÆÐÄ¡°¡ µÇ¾ú´Ù. : http://www.linuxhq.com/kpatch21.html
- James Finnegan's Microsoft Windows Development Resources(À©µµ95 ÆæÆ¼¾ö F0 ¹ö±× ºñ°ø½Ä ÆÐÄ¡): http://www.windows.to/
- BSDI-3.1 ÆæÆ¼¾ö F0 °ø½Ä ¹ö±×ÆÐÄ¡: ftp://ftp.bsdi.com/bsdi/patches/patches-3.1/README
- USENET - comp.sys.intel
- CRASHME: Random input testing
- 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