
๐ก๏ธ CVE-2026-45321์ ์ํ ์์ปค๋งจ๋ ์ค์บ๋ โ TanStack npm ๊ณต๊ธ๋ง ๊ณต๊ฒฉ
์-์ปค๋งจ๋ ๊ณต๊ธ๋ง ๊ณต๊ฒฉ ์ค์บ๋ for CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx
2026๋
5์ 11์ผ 42๊ฐ์ @tanstack/* npm ํจํค์ง(84๊ฐ์ ์
์ฑ ๋ฒ์ )๋ฅผ ์์์ํจ "๋ฏธ๋ ์ค์ด-ํ๋ฃจ๋" ์์ ํ์งํฉ๋๋ค.
# ํ ์ค โ ํ๋ก์ ํธ ์ค์บ
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash
# ํน์ ๋๋ ํ ๋ฆฌ ์ค์บ
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash -s -- /path/to/project
# ๋ค์ด๋ก๋ํ์ฌ ์ง์ ์ฌ์ฉ
git clone https://github.com/Caixa-git/tanstack-shield.git
cd tanstack-shield
python3 tanstack-shield.py .
2026๋
5์ 11์ผ, ๊ณต๊ฒฉ์๋ ์ธ ๊ฐ์ง ์๋ ค์ง ์ทจ์ฝ์ ํด๋์ค โ pull_request_target (Pwn Request) ์ค์ค์ , GitHub Actions ์บ์ ์ค๋
, OIDC ํ ํฐ ๋ฉ๋ชจ๋ฆฌ ์ถ์ถ โ ์ ์ฐ์์ ์ผ๋ก ์ฌ์ฉํ์ฌ TanStack์ ์ ๋ขฐ๋ฐ๋ npm ์ ์ ํ์ 42๊ฐ์ @tanstack/* ํจํค์ง์ ๊ฑธ์ณ 84๊ฐ์ ์
์ฑ ๋ฒ์ ์ ๊ฒ์ํ์ต๋๋ค.
์ด ๋ฉ์จ์ด๋ ์๊ฒฉ ์ฆ๋ช (GitHub ํ ํฐ, npm ํ ํฐ, SSH ํค, AWS/GCP/Kubernetes/Vault)์ ์์งํ๊ณ Session ๋ฉ์ ์ ๋ฅผ ํตํด ์ ์ถํ์ผ๋ฉฐ, ํผํด์๊ฐ ์ ์ง ๊ด๋ฆฌํ๋ ๋ค๋ฅธ ํจํค์ง๋ก ์๊ฐ ์ ํ๋์์ต๋๋ค.
๋์ผํ ์บ ํ์ธ์ Mistral AI(npm + PyPI), UiPath(65๊ฐ ํจํค์ง), (์ฃผ๊ฐ npm ๋ค์ด๋ก๋ 130๋ง), ๊ทธ๋ฆฌ๊ณ ์ 2๊ฐ์ PyPI ํจํค์ง์๋ ์ํฅ์ ๋ฏธ์ณค์ต๋๋ค.
ํ๋ก์ ํธ์์ ๋ค์์ ํ์ธํ๋ ์ฝ๊ธฐ ์ ์ฉ ์ค์บ๋:
| ํญ๋ชฉ | ํ์ผ | ๊ฒฐ๊ณผ |
|---|---|---|
| npm ์ ๊ธ ํ์ผ | package-lock.json, npm-shrinkwrap.json | ๐ด ์ ํํ ์ ์ฑ ๋ฒ์ ์ผ์น |
| pnpm ์ ๊ธ ํ์ผ | pnpm-lock.yaml | ๐ด ์ ํํ ์ ์ฑ ๋ฒ์ ์ผ์น |
| yarn ์ ๊ธ ํ์ผ | yarn.lock | ๐ด ์ ํํ ์ ์ฑ ๋ฒ์ ์ผ์น |
| ๋งค๋ํ์คํธ ์ข ์์ฑ | package.json (๋ฃจํธ + ์ํฌ์คํ์ด์ค) | ๐ก ํจํค์ง ์กด์ฌ ๊ฒฝ๊ณ |
| ๋ฉ์จ์ด ํ๊ฑฐํ๋ฆฐํธ | @tanstack/setup in optionalDependencies | ๐ด ํ์ธ๋ ๋ฉ์จ์ด |
| ์์ฌ์ค๋ฌ์ด git ์ข ์์ฑ | github:tanstack/router#<commit> | ๐ด ํ์ธ๋ ๋ฉ์จ์ด |
| ๋ผ์ดํ์ฌ์ดํด ์คํฌ๋ฆฝํธ | prepare with bun + router_init | ๐ด ํ์ธ๋ ๋ฉ์จ์ด |
| node_modules | node_modules/@tanstack/* (fallback) | ๐ด ์ ํํ ๋ฒ์ ์ผ์น |
์ฐธ๊ณ : ์ ๊ธ ํ์ผ์ ํ๋ก์ ํธ ๋ฃจํธ์์๋ง ์ค์บ๋ฉ๋๋ค. ์๋ธ๋๋ ํ ๋ฆฌ(์: packages/web/package-lock.json)์ ์ ๊ธ ํ์ผ์ด ์๋ ๋ชจ๋
ธ๋ ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ฐ ์ํฌ์คํ์ด์ค ๋ด์์ ์ค์บ๋๋ฅผ ์คํํ๊ฑฐ๋, ์ต์์ ์ ๊ธ ํ์ผ์ด ์๋ ๋ชจ๋
ธ๋ ํฌ ๋ฃจํธ์์ ์คํํ์ธ์.
@tanstack/*์ด(๊ฐ) package.json์์ ๋ฐ๊ฒฌ๋จ. ์ ๊ธ ํ์ผ์ ํ์ธํ์ธ์.โ ๏ธ ์ค์: ์ด ๋ฉ์จ์ด๋ PC๋ฅผ ํ๊ดดํ๋ ๋ฐ์ด๋ฌ์ค๊ฐ ์๋ ์๊ฒฉ ์ฆ๋ช ๋๋ ๋ฉ์จ์ด์ ๋๋ค. ๐ด๊ฐ ํ์ง๋ ๊ฒฝ์ฐ:
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash -s -- --json
์ด ๋๊ตฌ๋ ์ฝ๊ธฐ ์ ์ฉ์ ๋๋ค. ์์คํ ์์ ํ์ผ์ ์์ฑ, ์์ ๋๋ ์ญ์ ํ์ง ์์ต๋๋ค.
MIT