9.3. ÆÄÀ̽ã

¸ðµç ¾ð¾î¿¡¼­¿Í °°ÀÌ ¹Ýµå½Ã ½Å·ÚµÇÁö ¾ÊÀº »ç¿ëÀÚ°¡ ÀԷ¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ¾øµµ·Ï µ¥ÀÌŸ°¡ ÇÁ·Î±×·¥ÀÇ ÇÑ ºÎºÐÀ¸·Î ½ÇÇàµÇµµ·Ï ÇÏ´Â ¸ðµç ÇÔ¼öµé¿¡ ÁÖÀÇÇØ¶ó. ÀÌ ÇÔ¼ö·Î´Â exec(), eval() °ú exefile() ÀÌ ÀÖ´Ù (¼ÖÁ÷È÷ compile() ¿¡ ´ëÇÑ ¸ðµç È£ÃâÀ» °Ë»çÇØ¾ß ÇÑ´Ù). ¶ÇÇÑ input() ¹®µµ ¿¹±âÄ¡ ¾Ê°Ô À§ÇèÇÏ´Ù [Watters 1996, 150].

±ÇÇÑÀÌ ¾ø´Â »ç¿ëÀÚ¿¡ ÀÇÇØ È£ÃâµÉ ¼ö ÀÖ´Â ±ÇÇÑÀ» °®´Â ÆÄÀ̽ã ÇÁ·Î±×·¥µéÀº (¿¹, setuid/setgid ÇÁ·Î±×·¥) "user (»ç¿ëÀÚ)" ¸ðµâÀ» import ÇÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù. user ¸ðµâÀº pthonrc.py ÆÄÀÏÀÌ ÀÐÇôÁ® ½ÇÇàµÇ°Ô ÇÑ´Ù. ÀÌ ÆÄÀÏÀ» ½Å·ÚµÇÁö ¾ÊÀº »ç¿ëÀÚ°¡ Á¦¾îÇÒ ¼ö Àֱ⠶§¹®¿¡ user ¸ðµâÀ» import ÇÏ´Â °ÍÀº °ø°ÝÀÚ¿¡°Ô ½Å·ÚµÈ ÇÁ·Î±×·¥ÀÌ ÀÓÀÇÀÇ Äڵ带 ½ÇÇà½Ã۵µ·Ï ÇÒ ¼ö ÀÖ´Ù.

ÆÄÀ̽ãÀº ÄÄÆÄÀϽà °Ë»ç¸¦ °ÅÀÇ ÇÏÁö ¾Ê´Â´Ù -- º»ÁúÀûÀ¸·Î ÄÄÆÄÀϽà ¾î¶°ÇÑ Å¸ÀÔ Á¤º¸µµ °®Áö ¾ÊÀ¸¸ç °Ç³×Áö´Â ¸Å°³º¯¼öÀÇ ¼ö°¡ ÁÖ¾îÁø ÇÔ¼ö ¶Ç´Â ¸Þ½îµå¿¡ ´ëÇØ ÇÕ¹ýÀûÀÎÁö¸¦ ÀüÇô °Ë»çÇÏÁö ¾Ê´Â´Ù. ÀÌ´Â ÀáÀçÀûÀÎ ¸¹Àº ¹ö±×¸¦ ¾ß±âÇϴµ¥ John Viega ¿Í ÀúÀÚ´Â ÀÌ ¹®Á¦¸¦ °æÇèÇØ¿Ô´Ù. ÀßµÈ´Ù¸é ¾ðÁ¨°¡ ÆÄÀ̽ãÀº ¿À·§µ¿¾È ³íÀǵǾî¿Â °³³äÀÎ ¼±ÅÃÀûÀÎ Á¤Àû ŸÀÌÇÎ ¹× ŸÀÔ °Ë»ç¸¦ ±¸ÇöÇÒ °ÍÀÌ´Ù. ÇöÀç ºÎºÐÀûÀÎ ÇØ°á ¹æ¹ýÀº ÆÄÀ̽㠼ҽº Äڵ峻ÀÇ ÀϹÝÀûÀÎ ¹ö±×¸¦ °Ë»çÇÏ´Â lint °°Àº ÇÁ·Î±×·¥ÀÎ PyChecker ·Î http://pychecker.sourceforge.net ¿¡¼­ ¾òÀ» ¼ö ÀÖ´Ù.

ÆÄÀ̽ãÀº RExec Ŭ·¡½º¸¦ ÅëÇØ ``Á¦ÇÑµÈ ½ÇÇà (Restricted Execution)" À» Áö¿øÇÑ´Ù. ÀÌ´Â º»·¡ ¾ÖÇø´°ú ¸ð¹ÙÀÏ Äڵ带 ½ÇÇà½Ã۱â À§ÇÑ °ÍÀÌÁö¸¸ Äڵ尡 ¿ÜºÎ¿¡¼­ Á¦°øµÇÁö ¾ÊÀ» ¶§¿¡µµ ÇÁ·Î±×·¥³»ÀÇ ±ÇÇÑÀ» Á¦ÇÑÇϱâ À§ÇØ ¶ÇÇÑ »ç¿ëµÉ ¼ö ÀÖ´Ù. µðÆúÆ®·Î Á¦ÇÑµÈ ½ÇÇà ȯ°æÀº ÆÄÀÏ Àбâ (¾²±â°¡ ¾Æ´Ñ) ¸¦ Çã¿ëÇÏÁö¸¸ ³×Æ®¿öÅ© Á¢±Ù ¶Ç´Â GUI »óÈ£ÀÛ¿ëÀ» À§ÇÑ ¿¬»êÀ» Æ÷ÇÔÇÏÁö´Â ¾Ê´Â´Ù. ÀÌ·¯ÇÑ µðÆúÆ®´Â º¯°æµÉ ¼ö Àִµ¥ Á¦ÇÑµÈ È¯°æ¿¡¼­ ÇãÁ¡ (loophole) »ý¼º¿¡ ÁÖÀÇÇØ¶ó. ƯÈ÷ »ç¿ëÀÚ¿¡°Ô Ŭ·¡½º¿¡ ¼Ó¼ºÀ» Á¦ÇѾøÀÌ Ãß°¡Çϵµ·Ï Çã¿ëÇÏ´Â °ÍÀº ÆÄÀ̽㠱¸ÇöÀÌ ¸¹Àº ¼û°ÜÁø ¸Þ½îµå¸¦ È£ÃâÇϱ⠶§¹®¿¡ ȯ°æÀ» ±ú¶ß¸± ¼ö ÀÖ´Â ¸ðµç Á¾·ùÀÇ ¹æ¹ýÀ» Çã¿ëÇÑ´Ù. µðÆúÆ®·Î ´ëºÎºÐÀÇ ÆÄÀ̽㠰´Ã¼´Â ÂüÁ¶¿¡ ÀÇÇØ Àü´ÞµÊÀ» ÁÖ¸ñÇØ¶ó; °¡º¯°ª¿¡ ´ëÇÑ ÂüÁ¶¸¦ Á¦ÇÑµÈ ÇÁ·Î±×·¥ÀÇ È¯°æ³»¿¡ »ðÀÔÇÑ´Ù¸é Á¦ÇÑµÈ ÇÁ·Î±×·¥Àº Á¦ÇÑµÈ È¯°æ ¿ÜºÎ¿¡¼­ º¸ÀÏ ¼ö ÀÖ°Ô °´Ã¼¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ °¡º¯°ª¿¡ ´ëÇÑ Á¢±ÙÀ» Çã¿ëÇÏ·Á¸é ¸¹Àº °æ¿ì °¡º¯°ªÀ» º¹»çÇϰųª ´Ù¸¥ °´Ã¼¿¡ ´ëÇÑ Á¦ÇÑµÈ Á¢±ÙÀ» Áö¿øÇÏ´Â Bation ¸ðµâÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â Kuchling [2000] À» º¸¶ó. ÀúÀÚ´Â Á¦ÇÑµÈ ½ÇÇà ´É·ÂÀÌ ¼öÇàÇÏ´Â °¨»çÀÇ ¾ç¿¡ ´ëÇØ Àß ¸ð¸£¸ç µû¶ó¼­ ÇÁ·Î±×·¡¸ÓµéÀº ÁÖÀÇÇØ¶ó.