Werkzeug: ์ œ์ด์ฟผ๋ฆฌ ์ œ๊ฑฐ

์— ๋งŒ๋“  2020๋…„ 05์›” 16์ผ  ยท  9์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pallets/werkzeug

์ด ์‹œ์ ์—์„œ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ตœ์‹  JavaScript ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›์€ jQuery๋ฅผ ์ผ๋ฐ˜ JavaScript๋กœ ๋Œ€์ฒดํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ์†Œํ™”ํ•˜๋”๋ผ๋„ jQuery ๋ฒˆ๋“ค๋ง์€ PyPI์—์„œ ํœ ์˜ ์ตœ์ข… ํฌ๊ธฐ์˜ 1/4์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋””๋ฒ„๊ฑฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋‚˜์˜ค๋Š” CVE๋กœ ์ธํ•ด jQuery๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ผ๋Š” ์š”์ฒญ์„ ๊ณ„์† ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

@kx-chen๊ณผ @chrisngyn ์ด ์ž‘์—…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

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

jQuery์™€ ๋™์ผํ•œ ๋ธŒ๋ผ์šฐ์ € ๋ฒ„์ „์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: https://jquery.com/browser-support/. IE๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๋‹ค๋ฉด ์•„๋งˆ ์‚ญ์ œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ๋ทฐ์˜ 0.3%๋งŒ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค(์ตœ์†Œํ•œ ๋ฌธ์„œ์˜ ๊ฒฝ์šฐ).

ํ˜„๋Œ€์ ์ด์ง€ ์•Š์€ ๊ฒƒ์€ ๋ชจ๋‘ ๋ฒ„๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์™œ ์˜ค๋ž˜๋œ ์“ฐ๋ ˆ๊ธฐ๋ฅผ ๊ท€์ฐฎ๊ฒŒํ•ฉ๋‹ˆ๊นŒ?
์‚ฌ์ดํŠธ๋ฅผ ๊ณ ๋Œ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์ธ ๊ฒฝ์šฐ. ์œ ๊ฐ์Šค๋Ÿฝ์ง€๋งŒ ๊ทธ์— ๋Œ€ํ•œ ๋Œ€๊ฐ€๋ฅผ ์ž˜ ์น˜๋ฅด๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ์ผ์ƒ์ ์ธ ๊ฐœ๋ฐœ์— ์ด์ „ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Werkzeug ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์•„๋งˆ๋„ ๋ถˆ์พŒํ•œ ์ด์ „ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ IMHO๋Š” ์ตœ์‹  Firefox, Chrome, Edge, Safari ๋ฒ„์ „๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ EdgeHTML ๋ฒ„์ „๊ณผ IE(IE 11๋„ ํฌํ•จ)๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์ด์ „ JS๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ํŠธ๋žœ์ŠคํŒŒ์ผํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๊ณจ์น˜ ์•„ํ”ˆ ์ผ์ž…๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋ฒ„๋ฆฌ๋ฉด ๋ชจ๋“  ์ตœ์‹  ๊ธฐ๋Šฅ์„ "๋ฌด๋ฃŒ๋กœ" ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ์ข…์˜ ๊ธฐ์ค€์„ ์ด ํ•„์š”ํ•˜๊ณ  ๊ทธ๊ฒƒ๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ธฐ๋ณธ์ ์œผ๋กœ IE๋ฅผ ์ œ์™ธํ•˜๊ณ  jQuery์™€ ์ผ์น˜ํ•จ). ์ตœ์†Œํ•œ Firefox ESR์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ESR์ด ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์™€ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋‹ค์Œ ESR ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋Š” ๋‹ค์Œ ๋‹ฌ์— ๋‚˜์˜ฌ ์˜ˆ์ •์ด๋ฉฐ ์ž‘๋…„์— ๋””๋ฒ„๊ฑฐ์™€ ๊ด€๋ จ๋œ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œํ™”๋œ ๋‚ด์šฉ์ด ํ•„์š”ํ•˜๋ฉด "์ตœ์‹  ๋ฒ„์ „์˜ Firefox, Chrome, Edge ๋ฐ Safari์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

๋‚ด ๋จธ๋ฆฌ ๊ผญ๋Œ€๊ธฐ์—์„œ ์ƒ๊ฐํ–ˆ๋˜ ์œ ์ผํ•œ ๊ธฐ๋Šฅ์€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋Œ€ XHR์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ž‘์—…ํ•˜๊ธฐ ํ›จ์”ฌ ๋” ์ข‹์ง€๋งŒ IE๋Š” ์ œ์™ธ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ, ์ง€๊ธˆ์€ ์™„์ „ํžˆ ํ˜„๋Œ€์ ์œผ๋กœ ๊ฐ€์ž.

๋˜ํ•œ ๋””๋ฒ„๊ฑฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋‚˜์˜ค๋Š” CVE๋กœ ์ธํ•ด jQuery๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ผ๋Š” ์š”์ฒญ์„ ๊ณ„์† ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ํฐ ๊ณ ํ†ต์ž…๋‹ˆ๋‹ค. ๋ช‡ ์ฃผ/๋‹ฌ๋งˆ๋‹ค ๋‚ด ๋ชจ๋“  ํŒŒ์ด์ฌ ํ”„๋กœ์ ํŠธ๋Š” ์ด jquery ์ข…์†์„ฑ์œผ๋กœ ์ธํ•ด ์ƒˆ๋กœ์šด ๋ณด์•ˆ ๋ฐœ๊ฒฌ์œผ๋กœ ํญ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

find venv -name jquery*
venv/lib/python3.7/site-packages/werkzeug/debug/shared/jquery.js

@kx-chen๊ณผ @chrisngyn ์ด ์ž‘์—…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

Gist API์— Gist๋ฅผ ์ƒ์„ฑ ํ•˜๋ ค๋ฉด ์ธ์ฆ ํ† ํฐ ์ด

๊ณต๊ฐœ ์š”์ง€๋Š” ์ต๋ช…์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์š”์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด GitHub์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์š”์ ์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋ ค๋ฉด ์š”์  OAuth ๋ฒ”์œ„์™€ ํ† ํฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด GitHub์—์„œ 401 ์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜๊ณ  ๋””๋ฒ„๊ฑฐ์—์„œ 500 ์˜ค๋ฅ˜๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๋ถ„๋ช…ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. GitHub์˜ OAuth ํ๋ฆ„์„ ๊ฑฐ์น˜๋Š” ๊ฒƒ์ด ๋””๋ฒ„๊ฑฐ ๋ฒ”์œ„์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ถ™์—ฌ๋„ฃ๊ธฐ/์š”์  ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ๋ฒ„ํŠผ, ์ฝ”๋“œ ๋ฐ ๋ฌธ์„œ๋ฅผ ์ œ๊ฑฐํ•ฉ์‹œ๋‹ค.

#1857๋กœ ์ˆ˜์ •๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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