Áö³ 3¿ù »çµå ¹èÄ¡ ³í¶õ ´ç½Ã Áß±¹ ÇØÄ¿µéÀÇ ÁÖ¿ä °ø°ÝÅë·Î·Î ¾Ç¿ë
[º¸¾È´º½º ±Ç ÁØ ±âÀÚ] Áö³ 3¿ù »çµå ¹èÄ¡¿¡ ´ëÇÑ ¹Ý°¨À¸·Î Áß±¹ ÇØÄ¿µéÀÇ Çѱ¹ À¥»çÀÌÆ® °ø°ÝÀÌ ÁøÇàµÆÀ» ´ç½Ã ¡®¾ÆÆÄÄ¡ ½ºÆ®·µÃ÷(Apache Struts) 2 Ãë¾àÁ¡¡¯À» ÁÖ·Î ¾Ç¿ëÇؼ À¥ ¼¹ö °ø°ÝÀ» Çß´ø °ÍÀ¸·Î ¾Ë·ÁÁ® À̽´°¡ µÈ ¹Ù ÀÖ´Ù.
[»çÁø=iclickart]
ÀÚ¹Ù EE(Enterprise Edition) À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇϱâ À§ÇÑ ¿ÀǼҽº ÇÁ·¹ÀÓ¿öÅ©ÀÎ ¾ÆÆÄÄ¡ ½ºÆ®·µÃ÷´Â ƯÈ÷ ÆÐÅÏ ±â¹Ý º¸¾ÈÀåºñ·Î´Â ÇØÅ·À» ŽÁö ¸øÇÒ ¼öµµ Àֱ⠶§¹®¿¡ Ç×»ó ÃֽŠÆÐÄ¡¸¦ Àû¿ëÇØ¾ß ÇÑ´Ù.
ÀÌ·¯ÇÑ °¡¿îµ¥ Çѱ¹ÀÎÅͳÝÁøÈï¿ø(KISA)¿¡¼ 10ÀÏ ¾ÆÆÄÄ¡ ½ºÆ®·µÃ÷2 ¿ø°Ý ÄÚµå ½ÇÇà Ãë¾àÁ¡ ¾÷µ¥ÀÌÆ®¸¦ ±Ç°íÇÏ°í ³ª¼¹´Ù. À̹ø ¾÷µ¥ÀÌÆ®´Â ¾ÆÆÄÄ¡ ½ºÆ®·¯Ã÷2¿¡¼ Á¦°øÇÏ´Â À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ShowcaseÀÇ SaveGangsterAction ÆäÀÌÁö¿¡¼ ActionMessages.class¸¦ ÅëÇØ Æ¯Á¤ ÀÔ·Â °ªÀ» ó¸®ÇÒ ¶§ ¿ø°Ý ÄÚµå ½ÇÇàÀ» °¡´ÉÇÏ°Ô ÇÏ´Â Ãë¾àÁ¡(CVE-2017-9791)À¸·Î, Ãë¾àÇÑ ¹öÀüÀ» »ç¿ë ÁßÀÎ ¼¹ö ´ã´çÀÚ´Â ÇØ°á¹æ¾È¿¡ µû¶ó ÃֽŠ¹öÀüÀ¸·Î ¾÷µ¥ÀÌÆ®ÇØ¾ß ÇÑ´Ù.
ÇØ´ç Ãë¾àÁ¡¿¡ ¿µÇâÀ» ¹Þ´Â Á¦Ç° ¹× ¹öÀüÀº ¾ÆÆÄÄ¡ ½ºÆ®·¯Ã÷ 2.3.x ¹öÀü¿¡¼ ½ºÆ®·¯Ã÷1 Ç÷¯±×ÀÎÀ» »ç¿ëÇÏ´Â °æ¿ì·Î, ¾ÆÆÄÄ¡ ½ºÆ®·¯Ã÷2´Â ½ºÆ®·¯Ã÷1ÀÇ ActionÀ» »ç¿ëÇϱâ À§ÇØ ½ºÆ®·¯Ã÷1 Ç÷¯±×ÀÎÀ» ±âº» Á¦°øÇÏ°í ÀÖ´Ù.
ÀÌ¿¡ ¾ÆÆÄÄ¡ ½ºÆ®·¯Ã÷2 ÇÁ·¹ÀÓ¿öÅ© ±â¹ÝÀÇ À¥ ¼¹ö¸¦ »ç¿ëÇÏ´Â ±â°ü, ±â¾÷Àº Ãë¾àÁ¡¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â ¾ÆÆÄÄ¡ ½ºÆ®·¯Ã÷ 2.5.10.1 ¹öÀüÀ¸·Î ¾÷µ¥ÀÌÆ®¸¦ ¼öÇàÇØ¾ß ÇÑ´Ù.
ÀÌ¿Í ÇÔ²² SaveGangsterAction.java¿¡¼ ActionMessage.class¿¡ ¸Þ½ÃÁö¸¦ Àü´ÞÇÒ ¶§ °ªÀ» Á÷Á¢ Àü´ÞÇÏ´Â ´ë½Å ¸®¼Ò½º Å°¸¦ »ç¿ëÇϵµ·Ï ¼Ò½ºÄÚµå º¯°æ ÈÄ ÄÄÆÄÀÏ ÀÛ¾÷À» ÁøÇàÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù. SaveGangsterAction.java ÆÄÀÏ °æ·Î´Â showcase°¡ ¼³Ä¡µÈ Æú´õ ÇÏÀ§ÀÇ \src\org\apache\struts2\integration\SaveGangsterAction.java·Î, ¼³Ä¡ ȯ°æ¿¡ µû¶ó °æ·Î È®ÀÎÀÌ ÇÊ¿äÇÏ´Ù. ±âÁ¸ ¼Ò½ºÄÚµå¿Í º¯°æ ¼Ò½ºÄÚµå´Â ´ÙÀ½°ú °°´Ù.
-±âÁ¸ ¼Ò½ºÄÚµå: messages.add("msg", new ActionMessage("Gangster"+
gform.getName()+"was added"));
-º¯°æ ¼Ò½ºÄÚµå: messages.add("msg", new ActionMessage
("struts1.gangsterAdded", gform.getName()));
¸¶Áö¸·À¸·Î ¿ìȸ Ãë¾à°æ·Î(/struts2-showcase/integration/saveGangster.action)¸¦ Ãß°¡·Î Â÷´ÜÇϱâ À§ÇØ º¸¾È±ÔÄ¢À» ¼³Á¤ÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù. º¸¾È±ÔÄ¢Àº °¢ ±â°ü ȯ°æ¿¡ ¸ÂÃç °ËÅäÇÑ ÈÄ Àû¿ëÀÌ ÇÊ¿äÇÏ´Ù.
-alert tcp any any-> any any(content:"/saveGangster.action"; nocase; content:"HTTP/1."; distance:0;)
-alert tcp any any -> any any(content:"/struts2-showcase"; nocase; content:"HTTP/1."; distance:0;)
±âŸ »çÇ×Àº Çѱ¹ÀÎÅͳÝÁøÈï¿ø ÀÎÅͳÝħÇØ´ëÀÀ¼¾ÅÍ(±¹¹ø¾øÀÌ 118)·Î ¹®ÀÇÇÏ¸é µÈ´Ù.
[±Ç ÁØ ±âÀÚ(editor@boannews.com)]
<ÀúÀÛ±ÇÀÚ: º¸¾È´º½º(www.boannews.com) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>