Moment: ์ทจ์•ฝํ•œ ์ •๊ทœ ํ‘œํ˜„์‹

์— ๋งŒ๋“  2017๋…„ 09์›” 08์ผ  ยท  24์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: moment/moment

๋ฌธ์ž์—ด๋กœ ์ง€์ •๋œ ๋‚ ์งœ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋‹ค์Œ ์ •๊ทœ์‹์€ ReDoS์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค.

/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i

์†๋„ ์ €ํ•˜๋Š” ๋ณดํ†ต ๋‚ฎ์Šต๋‹ˆ๋‹ค : 50.000 ์ž ๋™์•ˆ ์•ฝ 2 ์ดˆ์˜ ์ผ์น˜ ์‹œ๊ฐ„. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  • ์ •๊ทœ์‹์„ ์ œ๊ฑฐํ•˜๊ณ ,
  • ์ •๊ทœ์‹ ๊ณ ์ •,
  • ๋ฐ˜๋ณต์œผ๋กœ ์ผ์น˜์‹œํ‚ฌ ์ˆ˜์žˆ๋Š” ๋ฌธ์ž ์ˆ˜๋ฅผ ์ œํ•œํ•˜๊ณ ,
  • ์ž…๋ ฅ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜์‹ญ์‹œ์˜ค.

ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ฐ์†์„ ๋ณด์—ฌ์ฃผ๋Š” ์‹ค์ œ ์˜ˆ๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Bug Up-For-Grabs

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

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ์‹ ์†ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. nsp์— ๋กœ๊ทธ์ธ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

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

์„ค๋ช…์„ ์œ„ํ•ด matchWord ์ •๊ทœ์‹, /src/lib/parse/regex.js ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค .

๋‹ค์Œ์€ ์ •๊ทœ์‹์˜ ์ฒ ๋„ ๋‹ค์ด์–ด๊ทธ๋žจ์ž…๋‹ˆ๋‹ค . ์ด๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ์šฐ๋ฆฌ๋Š” ๋ฐ˜๋ณต์ด์žˆ๋Š” ๊ทธ๋ฃนํ™”๊ฐ€ ์•„๋ž์–ด ๋ฌธ์ž ๊ตฌ๋ฌธ ๋ถ„์„๊ณผ ๊ด€๋ จ์ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹๊ณผ ์•„๋ž์–ด๋ฅผ ๋ชจ๋‘ ์ดํ•ดํ•˜๋Š” ์‚ฌ๋žŒ์ด์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ReDoS ๊ฐœ์š” ๋„ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค.

์ด๊ฑด ์•„๋ฌด๋„ ์ด๋ฏธ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์–ด

@hamiltondanielb ๋‹น์‹ ์˜ ๋ชจ๋“  ๊ฒƒ :)

์•ˆ๋…•ํ•˜์„ธ์š”.
ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ฐ์†์„ ๋ณด์—ฌ์ฃผ๋Š” ์‹ค์ œ ์˜ˆ๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์˜ˆ์ œ๋ฅผ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. :)

@ Drag0s ๊ฐ€ ๊ฐœ์ธ ์ด๋ฉ”์ผ๋กœ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ, ์ด๊ฒƒ์€ NSP ( ์—ฌ๊ธฐ ์ฐธ์กฐ)์— ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฏ€๋กœ ๊ณง ์‚ฌ๋žŒ๋“ค์˜ ๋นŒ๋“œ๋ฅผ ๊นจ๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@hamiltondanielb-์ด๊ฑธ ์กฐ์‚ฌํ•˜๋Š” ๊ณณ์ด ์žˆ๋‚˜์š”?

๋ฐฉ๊ธˆ ๋นŒ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ‘ฏ

๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ธฐ ์ „์— ๊ณต๊ฐœ๋˜์–ด์•ผํ•ด์„œ ์•ˆํƒ€๊น์Šต๋‹ˆ๋‹ค. 9 ์›” 8 ์ผ์— ๋ฐœํ–‰ ๋œ ๋ฌธ์ œ, ์˜ค๋Š˜ NSP ๊ถŒ๊ณ ๊ฐ€ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @cristianstaicu ์•„๋งˆ๋„ ๋‹น์‹ ์€ ์ด๊ฒƒ์ด ์•ฝ๊ฐ„์˜ ์ถ”์ง„๋ ฅ์„์ฃผ๊ธฐ ์œ„ํ•ด ๊ณต๊ฐœ ๊ธฐํ•œ์— ๋Œ€ํ•ด ์œ ์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ƒ๊ธฐ

@mattgrande ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ณ ์ • ๋œ nsp ๋ฒ„์ „ (2.8.1)์€ ์ˆœ๊ฐ„ (joi๋ฅผ ํ†ตํ•ด)์— ๋”ฐ๋ผ ๋‹ฌ๋ผ ์ง€๋ฏ€๋กœ ์ž์ฒด ์ข…์†์„ฑ์— ๋Œ€ํ•œ ์ทจ์•ฝ์ ์„๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

1__bash

nsp 3.1.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์ข…์†์„ฑ์ด ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ˆœ๊ฐ„์— ์ง์ ‘ ์˜์กดํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์ฃผ์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ์•„์ง ์žˆ์Šต๋‹ˆ๊นŒ?

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

์•„์ง ์ˆ˜์ • ์‚ฌํ•ญ์ด ๊ฒŒ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ด€๋ฆฌ์ž๋กœ๋ถ€ํ„ฐ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ ์—ด์˜ "๊ตฌ๋…"์„ ํด๋ฆญํ•˜์—ฌ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ ์•Œ๋ฆผ์„ ๊ตฌ๋…ํ•˜์‹ญ์‹œ์˜ค.

์ด์— ๋Œ€ํ•ด nsp ์˜ˆ์™ธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด .nsprc ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

{
  "exceptions": [
     "https://nodesecurity.io/advisories/532"
  ]
}

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @ westy92 ! ๋‚ด ๋นŒ๋“œ๋ฅผ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

@ westy92 ๋ฐ @ jacob-go ์•ˆ๋…•ํ•˜์„ธ์š”. ๋‹ค์Œ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
var tasksMethods = require ( 'gulpfile-ninecms');
gulp.task ( 'nsp', tasksMethods.nsp);
.nsprc ํŒŒ์ผ ์˜ˆ์™ธ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž ์‹œ ๋™์•ˆ ๋‚˜์—๊ฒŒ ์ทจ์•ฝ์„ฑ ์˜ค๋ฅ˜๋ฅผ ๊ณ„์† ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ์— ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ํ•ด์•ผ ํ•  ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@Dexterslab ์šฐ๋ฆฌ๋Š” gulp-nsp ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, .nsprc ์ด ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์žˆ์„ ๋•Œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค ( package.json ์™€ ๊ฐ™์€ ์ˆ˜์ค€). gulp-nsp ์ง์ ‘ ์‚ฌ์šฉํ•ด ๋ณด์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@cristianstaicu @mattgrande ๋ฃฉ์Šจ ์—์„œ๋„ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ์‹ ์†ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. nsp์— ๋กœ๊ทธ์ธ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ฆฌ์ž์—๊ฒŒ์ด ๋Œ€ํ™”๋ฅผ ์ž ๊ทธ๋„๋ก ์ œ์•ˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์ˆ˜์ •์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์€ ๊ตฌ๋… ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ธฐ ๋งŒํ•˜๋ฉด ์•Œ๋ฆผ์ด ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋“ ์ง€ ์ˆ˜์ •์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด PR์„ ์—ด์–ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด๋ฏธ ์ด๊ฒƒ์— ๋Œ€ํ•œ PR์ด ์žˆ์Šต๋‹ˆ๋‹ค https://github.com/moment/moment/pull/4326

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ nsp ์— ํŒจ์น˜๊ฐ€ ์ ์šฉ๋˜์—ˆ์Œ์„ ์•Œ๋ ค์•ผํ•ฉ๋‹ˆ๊นŒ? https://nodesecurity.io/advisories/532

์ด ๋ฌธ์ œ๋Š” ๋ฒ„์ „ 2.19.3์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์— ๋”ฐ๋ผ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค.

NSP์— ์•Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค- @cristianstaicu ๋‹น์‹ ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ์„œ ๋„์™€ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

[email protected]๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋ƒˆ

์•ˆ๋…•ํ•˜์„ธ์š”,

ํ˜„์žฌ ๋ˆˆ์— ๋„๋Š” moment.js ์ทจ์•ฝ์  (https://nodesecurity.io/advisories/532)์ด ์ตœ๊ทผ ํŒจ์น˜ ๋˜์—ˆ์œผ๋ฉฐ v.2.19.3์—์„œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฆด๋ฆฌ์Šค ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ถŒ๊ณ ์— ๋Œ€ํ•œ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋ฅผ๋ณด๊ณ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด ์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ์ œ๊ฐ€ ์ฐพ์„ ์ˆ˜์žˆ๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ!

NSP DB๋ฅผ 2.19.3 ์ˆ˜์ • ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•œ๋‹ค๋Š” ๋‹ต์žฅ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

2.19.3์ด ๋” ์ด์ƒ ๊ฒฝ๊ณ ํ•˜์ง€ ์•Š์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

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