Jinja: from_string ํ•จ์ˆ˜์— ๋ช…๋ น ์ฃผ์ž…(SSTI)

์— ๋งŒ๋“  2019๋…„ 02์›” 18์ผ  ยท  1๋…ผํ‰  ยท  ์ถœ์ฒ˜: pallets/jinja

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘

from_string ๋Š” ์ด์Šค์ผ€์ดํ”„๋˜์ง€ ์•Š์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ํ…œํ”Œ๋ฆฟ์— ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ํ–‰๋™

์ง€๋‚˜๊ฐ„ ๋ชจ๋“  ๊ฒƒ์„ ์ด์Šค์ผ€์ดํ”„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ •๋ณด ๋ฐ ๊ฐœ๋… ์ฆ๋ช…

https://github.com/JameelNabbo/Jinja2-Code-execution
https://www.exploit-db.com/exploits/46386

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€ CVE๋ฅผ ๋งŒ๋“  ์‚ฌ์šฉ์ž๋Š” ๊ทธ๋“ค์ด ๋งํ•˜๋Š” ๋‚ด์šฉ์„ ๋ชจ๋ฅด๊ณ  ์žˆ์œผ๋ฉฐ ๋ถˆํ–‰ํžˆ๋„ ์ด์ œ ๊ณต์‹์ ์œผ๋กœ ๋“ค๋ฆฌ์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌด์ฑ…์ž„ํ•˜๊ฒŒ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฌด์ฑ…์ž„ํ•˜๊ฒŒ ํ†ต์ง€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์† ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. . ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์€ https://github.com/JameelNabbo/Jinja2-Code-execution/issues/1 ์„ ์ฐธ์กฐ

from_string ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— Jina๊ฐ€ ์ทจ์•ฝ์ ์ด ์žˆ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ eval ๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋™์  ์–ธ์–ด๊ฐ€ ์ทจ์•ฝํ•˜๊ฑฐ๋‚˜ SQL ๋ฌธ์ž์—ด์„ ํ‰๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  SQL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ทจ์•ฝํ•˜๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ ๋„๊ตฌ๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. SQL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์ธ์ ์…˜ ์ทจ์•ฝ์ ์ด ์—†์œผ๋ฉฐ, SQL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถ€์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—๋Š” ์ธ์ ์…˜ ์ทจ์•ฝ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํ…œํ”Œ๋ฆฟ์„ ์ปดํŒŒ์ผํ•˜๋Š” ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜๋ ค๋ฉด SandboxedEnvironment ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ , ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ๋Š” autoescape ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

>๋ชจ๋“  ๋Œ“๊ธ€

ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€ CVE๋ฅผ ๋งŒ๋“  ์‚ฌ์šฉ์ž๋Š” ๊ทธ๋“ค์ด ๋งํ•˜๋Š” ๋‚ด์šฉ์„ ๋ชจ๋ฅด๊ณ  ์žˆ์œผ๋ฉฐ ๋ถˆํ–‰ํžˆ๋„ ์ด์ œ ๊ณต์‹์ ์œผ๋กœ ๋“ค๋ฆฌ์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌด์ฑ…์ž„ํ•˜๊ฒŒ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฌด์ฑ…์ž„ํ•˜๊ฒŒ ํ†ต์ง€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์† ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. . ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์€ https://github.com/JameelNabbo/Jinja2-Code-execution/issues/1 ์„ ์ฐธ์กฐ

from_string ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— Jina๊ฐ€ ์ทจ์•ฝ์ ์ด ์žˆ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ eval ๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋™์  ์–ธ์–ด๊ฐ€ ์ทจ์•ฝํ•˜๊ฑฐ๋‚˜ SQL ๋ฌธ์ž์—ด์„ ํ‰๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  SQL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ทจ์•ฝํ•˜๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ ๋„๊ตฌ๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. SQL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์ธ์ ์…˜ ์ทจ์•ฝ์ ์ด ์—†์œผ๋ฉฐ, SQL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถ€์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—๋Š” ์ธ์ ์…˜ ์ทจ์•ฝ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํ…œํ”Œ๋ฆฟ์„ ์ปดํŒŒ์ผํ•˜๋Š” ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜๋ ค๋ฉด SandboxedEnvironment ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ , ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ๋Š” autoescape ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰