๐Ÿšจ ์‚์šฉ ์‚์šฉ React2Shell ๊ธด๊ธ‰ ๊ธด๊ธ‰

wha1eยท2025๋…„ 12์›” 12์ผ

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
12/13
post-thumbnail

ํ‰ํ™”๋กœ์šด ๊ธˆ์š”์ผ(์ด์—ˆ์Šต๋‹ˆ๋‹ค)
์–ด์ œ ํ‡ด๊ทผ ์ „, ์‹ ๊ทœ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ธŒ๋žœ์น˜๋ฅผ ํ‘ธ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. Vercel ๋ด‡์ด ๋Œ๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ , ์ €๋Š” ๋‹น์—ฐํžˆ ๋…น์ƒ‰ ์ฒดํฌ ํ‘œ์‹œ(โœ…)๋ฅผ ๊ธฐ๋Œ€ํ•˜๋ฉฐ ํ‡ด๊ทผ์„ ํ–ˆ์ฃ .

19:04:20.335 Error: Vulnerable version of Next.js detected, please update immediately. 
Learn More: https://vercel.link/CVE-2025-66478

Build Completed๋ผ๊ณ  ๋– ์„œ ์•ˆ์‹ฌํ•˜๋ ค๋Š” ์ฐฐ๋‚˜, ๋งˆ์ง€๋ง‰ ์ค„์— ์„ฌ๋œฉํ•œ Error๊ฐ€ ์ฐํžˆ๋ฉฐ ๋ฐฐํฌ๊ฐ€ ๊ฐ•์ œ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณดํ†ต ๋นŒ๋“œ ์—๋Ÿฌ๋Š” ์ฝ”๋“œ ๋ฌธ๋ฒ•์ด๋‚˜ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ด์Šˆ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, ์ด๋ฒˆ์—” ๋ฉ”์‹œ์ง€๊ฐ€ ์‹ฌ์ƒ์น˜ ์•Š์Šต๋‹ˆ๋‹ค. Vulnerable version of Next.js detected (์ทจ์•ฝํ•œ Next.js ๋ฒ„์ „์ด ๊ฐ์ง€๋จ).

๋‹จ์ˆœํžˆ "๊ถŒ์žฅ"ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์•„์˜ˆ ๋ฐฐํฌ๋ฅผ ๋ง‰์•„๋ฒ„๋ฆด ์ •๋„๋ฉด ๋ญ”๊ฐ€ ํฐ์ผ์ด ๋‚ฌ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๊ธ‰ํ•˜๊ฒŒ ๋กœ๊ทธ์— ์ฐํžŒ ๋งํฌ๋ฅผ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๐Ÿ•ต๏ธ ๋ฒ”์ธ์€ 'React2Shell' (CVE-2025-55182)

ํ™•์ธํ•ด ๋ณด๋‹ˆ ์ตœ๊ทผ IT ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋œจ๊ฒ๊ฒŒ ๋‹ฌ๊ตฌ๊ณ  ์žˆ๋Š” React2Shell์ด๋ผ๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์  ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

React Server Components(RSC)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์น˜๋ช…์ ์ธ ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰(RCE) ์ทจ์•ฝ์ ์ธ๋ฐ, ํ•ด์ปค๊ฐ€ ํŠน์ˆ˜ํ•˜๊ฒŒ ์กฐ์ž‘๋œ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„ ๊ถŒํ•œ์„ ํƒˆ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Vercel์€ ์ด ์ทจ์•ฝ์ ์„ ๋งค์šฐ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๊ณ , ํ”Œ๋žซํผ ์ฐจ์›์—์„œ ์ทจ์•ฝํ•œ ๋ฒ„์ „์˜ Next.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋ฐฐํฌ๋ฅผ ์›์ฒœ ์ฐจ๋‹จํ•˜๋Š” ๊ฐ•์ˆ˜๋ฅผ ๋‘” ๊ฒƒ์ด์—ˆ์ฃ .

๋ฐ”์•ผํ๋กœ, ๋Œ€ ๊ฐœ์ธ์ •๋ณด ์œ ์ถœ์˜ ์‹œ๋Œ€. ๊ฐœ๋ฐœ์ž ์„ธ์ƒ์ด๋ผ๊ณ  ๋‹ค๋ฅผ๊ฑฐ ์žˆ๊ฒ ์Šต๋‹ˆ๊นŒ ใ…‹ใ…‹ใ…‹..

๋‚ด ํ”„๋กœ์ ํŠธ ์ƒํƒœ

  • ์‚ฌ์šฉ ์ค‘์ธ ๋ฒ„์ „: Next.js 15.5.0
  • ์ƒํƒœ: ๐Ÿ’ฃ ์ทจ์•ฝ์  ๋…ธ์ถœ ๋Œ€์ƒ (15.0.0 ~ 16.0.6 ์ „์ฒด)

"์„ค๋งˆ ๋‚ด ์‚ฌ์ดํŠธ๊ฐ€ ํ„ธ๋ฆฌ๊ฒ ์–ด?"๋ผ๋Š” ์•ˆ์ผํ•œ ์ƒ๊ฐ์„ ํ•˜๊ธฐ๋„ ์ „์—, ํ”Œ๋žซํผ์ด "์‘, ์•ˆ ๊ณ ์น˜๋ฉด ๋ฐฐํฌ ์•ˆ ์‹œ์ผœ์ค˜"๋ผ๊ณ  ๋ฉฑ์‚ด์„ ์žก์€ ๊ฒฉ์ž…๋‹ˆ๋‹ค. (์˜คํžˆ๋ ค ๊ณ ๋งˆ์›Œํ•ด์•ผ๊ฒ ์ฃ ? ๐Ÿ˜‚)

"์•„ ์ง„์งœ ๊ณ ๋ง™๋‹ค๊ณ  ใ…‹ใ…‹;"


๐Ÿ› ๏ธ ์ž‘์ „: ํ•ซํ”ฝ์Šค ๊ธด๊ธ‰ ํˆฌ์ž…

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ ํŒจ์น˜ ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Vercel ๋ณด์•ˆ ๊ถŒ๊ณ ์— ๋”ฐ๋ฅด๋ฉด 15.5.x ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ 15.5.7 ์ด์ƒ์œผ๋กœ ์˜ฌ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1. ๋ฒ„์ „ ํ™•์ธ ๋ฐ ์—…๋ฐ์ดํŠธ

ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ๋ฐ”๋กœ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

1-1. ํ˜„์žฌ ๋ฒ„์ „ ํ™•์ธ

npm list next

1-2. ๋ณด์•ˆ ํŒจ์น˜ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ (๋˜๋Š” latest)

npm install next@15.5.7

next@15.5.0 deduped๋ผ๋Š” ํ‘œ์‹œ๋Š” "๋ณ„๋„๋กœ ์„ค์น˜๋œ ๊ฒŒ ์•„๋‹ˆ๋ผ, ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ(๊ฐ€์žฅ ์ƒ์œ„)์— ์„ค์น˜๋œ next ํŒจํ‚ค์ง€๋ฅผ ๊ฐ™์ด ์“ฐ๊ณ  ์žˆ๋‹ค"๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

list ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ, ํ™•์ธํ•ด๋ณด๋‹ˆ, ํ˜„์žฌ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” next-auth๋„ ์žˆ๋„ค์š”. ํ•ด๋‹น ํŒจํ‚ค์ง€ ๋‚ด๋ถ€์— 15.5.0 ๋ฒ„์ „์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์œผ๋‹ˆ, ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ€์ •ํ•˜์—, ์‚ญ์ œ๋ฅผ ๊ฐ™์ด ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

npm uninstall next-auth -w apps/*

ํ˜„์žฌ ์ €ํฌ๋Š” Turborepo๋ฅผ ํ†ตํ•ด์„œ, ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ƒ์œ„ ํด๋”์—์„œ ์œ„ ๋ช…๋ น์–ด๋กœ ์“ฐ๋Š”๊ฒŒ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

-w๋Š” workspace์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. (๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์—์„œ ํŽธ๋ฆฌํ•จ)

์„ฑ๊ณต์ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ๋์Šต๋‹ˆ๋‹ค.

2. ๋ฐฐํฌ ์žฌ์‹œ๋„

package.json๊ณผ package-lock.json์ด ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ , ๊ธด๊ธ‰ ํ”ฝ์Šค๋กœ ์ปค๋ฐ‹ํ•˜์—ฌ ๋‹ค์‹œ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.

๋“œ๋””์–ด ๋งŒ๋‚œ ์ดˆ๋ก๋ถˆ! โœ… Vercel์ด ๋” ์ด์ƒ ๋ฐฐํฌ๋ฅผ ๋ง‰์ง€ ์•Š๊ณ  ์ •์ƒ์ ์œผ๋กœ ๋นŒ๋“œ๋ฅผ ํ†ต๊ณผ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.


๐Ÿ“š ์˜ค๋Š˜์˜ ๊ตํ›ˆ

์ด๋ฒˆ ๊ฐ•์ œ ๋ฐฐํฌ ์ค‘๋‹จ์„ ๊ฒช์œผ๋ฉฐ ๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํ”Œ๋žซํผ ์ข…์†์„ฑ์˜ ์–‘๋ฉด์„ฑ:
    Vercel ๊ฐ™์€ ๊ด€๋ฆฌํ˜• ํ”Œ๋žซํผ์„ ์“ฐ๋ฉด ํŽธํ•˜๊ธด ํ•˜์ง€๋งŒ, ์ด๋ฒˆ์ฒ˜๋Ÿผ ํ”Œ๋žซํผ ์ •์ฑ…์— ์˜ํ•ด ๋‚ด ์„œ๋น„์Šค ๋ฐฐํฌ๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋ง‰ํž ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ณด์•ˆ ์ด์Šˆ์— ๋‘”๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฐ•์ œ๋กœ๋ผ๋„ ํŒจ์น˜๋ฅผ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฑด '์•ˆ์ „ํ•œ ์„œ๋น„์Šค'๋ฅผ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ์ˆœ๊ธฐ๋Šฅ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ณด์•ˆ์€ ๋ฏธ๋ฃจ๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ค:
    ๋งŒ์•ฝ ์ง์ ‘ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•(Self-hosted)ํ•ด์„œ ์“ฐ๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด, ๋‰ด์Šค๋ฅผ ๋ณด์ง€ ์•Š๋Š” ์ด์ƒ ์ทจ์•ฝ์  ํŒจ์น˜๋ฅผ ๋ฏธ๋ค˜์„์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ฐจ๋ผ๋ฆฌ ์ด๋ ‡๊ฒŒ ๋บจ ํ•œ ๋Œ€ ๋•Œ๋ฆฌ๊ณ  ๊ณ ์น˜๋ผ๊ณ  ํ•ด์ฃผ๋Š” ๊ฒŒ ๋‚ซ๋„ค์š”.

๋‹ค์‹œ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœํ•˜๋Ÿฌ ๊ฐ€๋ณผ๊นŒ์š”?

์ฐธ๊ณ  ์ž๋ฃŒ

profile
์ƒ์ƒ์„ ํ˜„์‹ค๋กœ ๋งŒ๋“œ๋Š” FE

0๊ฐœ์˜ ๋Œ“๊ธ€