An enemy will overrun the land; he will pull down your strongholds and plunder your fortresses. | |
Amos 3:11 (NIV) |
±ØÈ÷ °øÅëÀûÀÎ º¸¾È °áÇÔÀº "¹öÆÛ ¿À¹öÇ÷οì" ¿¡ ´ëÇÑ Ãë¾à¼ºÀÌ´Ù. ¹öÆÛ ¿À¹öÇ÷οì´Â "¹öÆÛ ¿À¹ö·±" À̶ó°íµµ Çϴµ¥ "stack smashing" °ú "heap smashing" °ø°ÝÀ» Æ÷ÇÔÇÏ¿© ¸¹Àº Á¾·ùÀÇ ¹öÆÛ ¿À¹öÇÃ·Î¿ì °ø°ÝÀÌ ÀÖ´Ù. ±â¼úÀûÀ¸·Î ¹öÆÛ ¿À¹öÇ÷οì´Â ÇÁ·Î±×·¥ÀÇ ³»ºÎÀûÀÎ ±¸Çö°ú °ü·ÃµÈ ¹®Á¦ÀÌÁö¸¸ ÀúÀÚ°¡ À̸¦ µ¶ÀÚÀûÀÎ Àå¿¡¼ ´Ù·ê¸¸Å ³Î¸® ¾Ë·ÁÁø ½É°¢ÇÑ ¹®Á¦ÀÌ´Ù. ÀÌ ÁÖÁ¦°¡ ¾ó¸¶³ª Áß¿äÇÑ Áö¿¡ ´ëÇØ ÀÌÇØ½Ã۱â À§ÇØ CERT ¿¡¼´Â 1998 ³â¿¡´Â 13 °³ ±Ç°í¾È Áß 9°³ ¹× 1999 ³â¿¡´Â Àû¾îµµ Àý¹ÝÀÇ ±Ç°í¾È¿¡ ¹öÆÛ ¿À¹öÇ÷ο츦 Æ÷ÇÔÇß´Ù. ¹ö±×Æ®·¢¿¡ ´ëÇÑ 1999 ³âÀÇ ºñ°ø½ÄÀû Á¶»ç´Â ´ë·« ÀÀ´äÀÚÀÇ 2/3 °¡ ¹öÆÛ ¿À¹öÇ÷ο찡 ½Ã½ºÅÛ º¸¾ÈÀ» Ãë¾àÇÏ°Ô ÇÏ´Â ÁÖµÈ ¿äÀÎÀÌ¿´´Ù°í ´À²¼À½À» ¹ß°ßÇß´Ù (³ª¸ÓÁö ÀÀ´äÀÚ´Â ¿À¼³Á¤À» ÁÖµÈ ¿äÀÎÀ¸·Î ½Äº°ÇÏ¿´´Ù) [Cowan 1999]. ÀÌ´Â Àß ¾Ë·ÁÁø ¿À·¡µÈ ¹®Á¦·Î ¾ÆÁ÷²¯ °è¼ÓÇØ¼ ¹®Á¦·Î ´ëµÎµÇ°í ÀÖ´Ù [McGraw 2000].
¹öÆÛ ¿À¹öÇ÷οì´Â º¸Åë ¹®ÀÚµéÀÇ ¹®ÀÚ¿ÀÎ ÀÏ·ÃÀÇ °ªµéÀ» °íÁ¤µÈ ±æÀ̸¦ °®´Â ¹öÆÛ¿¡ ÀÛ¼ºÇϰí Àû¾îµµ ÇÑ °ªÀ» ¹öÆÛÀÇ °æ°è ¿ÜºÎ (º¸Åë ¹öÆÛ °æ°è¸¦ ³Ñ¾î¼±´Ù) ¿¡ ÀÛ¼ºÇÒ ¶§ ÀϾÙ. ¹öÆÛ ¿À¹öÇ÷οì´Â »ç¿ëÀڷκÎÅÍÀÇ ÀÔ·ÂÀ» ¹öÆÛ³»·Î ÀоîµéÀÏ ¶§ ÀϾ ¼ö ÀÖÁö¸¸ ¶ÇÇÑ ÇÁ·Î±×·¥³»¿¡¼ ´Ù¸¥ Á¾·ùÀÇ ÇÁ·Î¼¼½Ì µ¿¾È¿¡ ÀϾ ¼öµµ ÀÖ´Ù.
º¸¾ÈÀûÀÎ ÇÁ·Î±×·¥ÀÌ ¹öÆÛ ¿À¹öÇ÷ο츦 Çã¿ëÇÑ´Ù¸é ÀÌ´Â ´ë°³ °ø°ÝÀÚ¿¡ ÀÇÇØ ¾Ç¿ëµÉ ¼ö ÀÖ´Ù. ¹öÆÛ°¡ Áö¿ªÀûÀÎ C º¯¼ö¶ó¸é ¿À¹öÇ÷οì´Â ÇÔ¼ö·Î ÇÏ¿©±Ý °ø°ÝÀÚ°¡ ¼±ÅÃÇÑ Äڵ带 ½ÇÇà½Ã۵µ·Ï Çϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ Æ¯Á¤ º¯ÇüÀ» ´ë°³ "stack smashing" °ø°ÝÀ̶ó°í ÇÑ´Ù. Èü¿¡¼ ¹öÆÛ´Â ´õ¿í ÁÁÁö ¾ÊÀºµ¥ °ø°ÝÀÚ°¡ ÇÁ·Î±×·¥³»ÀÇ ´Ù¸¥ º¯¼ö¸¦ Á¦¾îÇϱâ À§ÇØ ¿À¹öÇÃ·Î¿ì µîÀ» »ç¿ëÇÒ ¼ö ÀÖÀ» Áöµµ ¸ð¸¥´Ù. ´õ¿í ¼¼ºÎÀûÀÎ »çÇ×Àº Aleph1 [1996], Mudge[1995] ¶Ç´Â Nathan P. Smith ÀÇ "Stack Smashing Security Vulnerabilities" À¥»çÀÌÆ® http://destroy.net/machines/security/ ¿¡¼ ãÀ» ¼ö ÀÖ´Ù.
´ëºÎºÐÀÇ »óÀ§ ¼öÁØ ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ÀÚµ¿ÀûÀ¸·Î ¹è¿ÀÇ Å©±â¸¦ Á¶Á¤Çϰųª (¿¹, ÆÞ) ¶Ç´Â º¸Åë ¹öÆÛ ¿À¹öÇ÷ο츦 ŽÁöÇØ¼ ¿¹¹æÇϱ⠶§¹®¿¡ (¿¹, Ada95) º»ÁúÀûÀ¸·Î ÀÌ ¹®Á¦´Â ¾ø´Ù.±×·¯³ª C ¾ð¾î´Â ÀÌ ¹®Á¦¿¡ ´ëÇØ ¾î¶°ÇÑ º¸È£µµ Á¦°øÇÏÁö ¾ÊÀ¸¸ç C++ µµ ¶ÇÇÑ ÀÌ ¹®Á¦¸¦ ¾ß±âÇÒ ¼ö ÀÖ´Â ¹æ½ÄÀ¸·Î ½±°Ô »ç¿ëµÉ ¼ö ÀÖ´Ù. ¾î¼Àºí·¯µµ ¶ÇÇÑ ¾î¶°ÇÑ º¸È£µµ Á¦°øÇÏÁö ¾Ê´Âµ¥ º¸Åë ÀÌ·¯ÇÑ º¸È£¸¦ Á¦°øÇÏ´Â ¾î¶² ¾ð¾î (¿¹, Ada ¿Í ÆÄ½ºÄ®) µéÀº ÀÌ º¸È£ ±â´ÉÀ» ¼º´ÉÀûÀÎ Ãø¸é¿¡¼ ±ÝÁöÇÒ ¼ö ÀÖ´Ù. ´ëºÎºÐÀÇ ÇÁ·Î±×·¥ÀÌ ´Ù¸¥ ¾ð¾î·Î ÀÛ¼ºµÈ´Ù ÇÏ´õ¶óµµ ¸¹Àº ¶óÀ̺귯¸® ·çƾÀº C ¶Ç´Â C++ ·Î ÀÛ¼ºµÇ¾î ÀÖÀ¸¸ç °á°úÀûÀ¸·Î ÀÌ ·çƾÀ» È£ÃâÇÏ´Â glue Äڵ嵵 ¸¶Âù°¡ÁöÀε¥ µû¶ó¼ ¿øÇÏ´Â ¸¸Å ´Ù¸¥ ¾ð¾îµéÀº ¹öÆÛ ¿À¹öÇ÷ο쿡 ´ëÇÑ ¿ÏÀüÇÑ º¸È£¸¦ Á¦°øÇÏÁö´Â ¾Ê´Â´Ù.