Grails ์›น ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ TZInfo Ruby ๋ชจ๋“ˆ์˜ ์ทจ์•ฝ์ 

Java, Groovy ๋ฐ JVM์šฉ ๊ธฐํƒ€ ์–ธ์–ด์˜ MVC ํŒจ๋Ÿฌ๋‹ค์ž„์— ๋”ฐ๋ผ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋„๋ก ์„ค๊ณ„๋œ Grails ์›น ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ทจ์•ฝ์ ์ด ์‹๋ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์ ์€ ๊ณต๊ฒฉ์ž์—๊ฒŒ ClassLoader์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๋„๋ก ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ ์•…์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์™€ BindData๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ๋ฐ”์ธ๋”ฉํ•  ๋•Œ ๋ชจ๋‘ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ๋…ผ๋ฆฌ์˜ ๊ฒฐํ•จ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋ฆด๋ฆฌ์Šค 3.3.15, 4.1.1, 5.1.9 ๋ฐ 5.2.1์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ณต๊ฒฉ๋ฐ›์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ํ—ˆ์šฉํ•˜๋Š” ํ•œ ๋ชจ๋“  ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” tzinfo Ruby ๋ชจ๋“ˆ์˜ ์ทจ์•ฝ์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ทจ์•ฝ์ ์€ TZInfo::Timezone.get ๋ฉ”์†Œ๋“œ์— ์ง€์ •๋œ ์‹œ๊ฐ„๋Œ€ ์ด๋ฆ„์—์„œ ํŠน์ˆ˜ ๋ฌธ์ž ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ๊ฒ€์‚ฌ ๋ถ€์กฑ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๊ฒ€์ฆ๋˜์ง€ ์•Š์€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ TZInfo::Timezone.get์— ์ „๋‹ฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, /tmp/payload ํŒŒ์ผ์„ ์ฝ์œผ๋ ค๋ฉด "foo\n/../../../tmp/payload"์™€ ๊ฐ™์€ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€