Facebook์€ Python ์–ธ์–ด์šฉ ์ •์  ๋ถ„์„๊ธฐ์ธ Pysa๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŽ˜์ด์Šค๋ถ ๋„์ž… ๋œ ๊ฐœ๋ฐฉํ˜• ์ •์  ๋ถ„์„๊ธฐ ํ”ผ์‚ฌ (Python Static Analyser)๋Š” Python ์ฝ”๋“œ์˜ ์ž ์žฌ์ ์ธ ์ทจ์•ฝ์ ์„ ์‹๋ณ„ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ถ„์„๊ธฐ๋Š” ์œ ํ˜• ๊ฒ€์‚ฌ ํˆดํ‚ท์˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ด๋ ˆ ๊ทธ์˜ ์ €์žฅ์†Œ์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธ ์ถœํŒ ๋œ MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ.

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

๋ถ„์„๊ธฐ์˜ ์ž‘์—…์€ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€ ์œ„ํ—˜ํ•œ ํ˜ธ์ถœ์„ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์›น ์š”์ฒญ์˜ ๋ฐ์ดํ„ฐ(์˜ˆ: Django์˜ HttpRequest.GET ์‚ฌ์ „)๋Š” ์†Œ์Šค๋กœ ๊ฐ„์ฃผ๋˜๋ฉฐ eval ๋ฐ os.open๊ณผ ๊ฐ™์€ ํ˜ธ์ถœ์€ ์œ„ํ—˜ํ•œ ์šฉ๋„๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. Pysa๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ฒด์ธ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ถ”์ ํ•˜๊ณ  ์†Œ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ”๋“œ์˜ ์ž ์žฌ์ ์œผ๋กœ ์œ„ํ—˜ํ•œ ์œ„์น˜์™€ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. Pysa๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹๋ณ„๋œ ์ผ๋ฐ˜์ ์ธ ์ทจ์•ฝ์ ์€ ๊ฐœ๋ฐฉํ˜• ๋ฆฌ๋””๋ ‰์…˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค(CVE-2019-19775) Zulip ๋ฉ”์‹œ์ง• ํ”Œ๋žซํผ์—์„œ ์ธ๋„ค์ผ์„ ๋ Œ๋”๋งํ•  ๋•Œ ์ •๋ฆฌ๋˜์ง€ ์•Š์€ ์™ธ๋ถ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Pysa์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ถ”์  ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋Œ€๋‹ค ์ถ”๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์„ ํ™•์ธํ•˜๊ณ  ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ ์ •์ฑ…์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ถ”๊ฐ€ ์„ค์ • ์—†์ด Pysa๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Django ๋ฐ Tornado ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Pysa๋Š” SQL ์ฃผ์ž… ๋ฐ XSS(๊ต์ฐจ ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…)์™€ ๊ฐ™์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ผ๋ฐ˜์ ์ธ ์ทจ์•ฝ์ ๋„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Facebook์—์„œ๋Š” ๋ถ„์„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Instagram ์„œ๋น„์Šค์˜ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. 2020๋…„ 44๋ถ„๊ธฐ์— Pysa๋Š” Facebook ์—”์ง€๋‹ˆ์–ด๊ฐ€ Instagram์˜ ์„œ๋ฒ„ ์ธก ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๋ฐœ๊ฒฌํ•œ ๋ชจ๋“  ๋ฌธ์ œ์˜ XNUMX%๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
์ „์ฒด์ ์œผ๋กœ Pysa์˜ ์ž๋™ ๋ณ€๊ฒฝ ๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋Š” 330๊ฐœ์˜ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ–ˆ์œผ๋ฉฐ ๊ทธ ์ค‘ 49๊ฐœ(15%)๋Š” ์‹ฌ๊ฐํ•˜๊ณ  131๊ฐœ(40%)๋Š” ์‹ฌ๊ฐํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ํ‰๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 150๊ฐœ ์‚ฌ๋ก€(45%)์—์„œ ๋ฌธ์ œ๋Š” ์˜คํƒ์ง€๋กœ ๋ถ„๋ฅ˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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