Share
## https://sploitus.com/exploit?id=39F5BA54-CE49-5C5E-B494-A7772476A4D6
# React Server Components ์ทจ์•ฝ์  ํ…Œ์ŠคํŠธ

React Server Components (RSC) ๋ฐ Next.js Server Actions์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ PoC ์Šคํฌ๋ฆฝํŠธ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.

## ์ทจ์•ฝ์  ๊ฐœ์š”

### CVE-2025-55184 / CVE-2025-67779 (DoS)
- **์œ ํ˜•**: Denial of Service (์„œ๋น„์Šค ๊ฑฐ๋ถ€)
- **์›์ธ**: RSC ํ”„๋กœํ† ์ฝœ์—์„œ ์ˆœํ™˜ ์ฐธ์กฐ(`$@0` โ†” `$@1`) ์ฒ˜๋ฆฌ ์‹œ ๋ฌดํ•œ ๋ฃจํ”„ ๋ฐœ์ƒ
- **์˜ํ–ฅ**: ์„œ๋ฒ„ CPU 100% ์ ์œ , ์„œ๋น„์Šค ์ค‘๋‹จ
- **์ทจ์•ฝ ๋ฒ„์ „**: react-server-dom-* 19.0.0 ~ 19.2.2

### CVE-2025-55183 (Source Code Exposure)
- **์œ ํ˜•**: Information Disclosure (์ •๋ณด ๋…ธ์ถœ)
- **์›์ธ**: Server Function ์ฐธ์กฐ(`$F`)๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌ ์‹œ `.toString()` ํ˜ธ์ถœ๋กœ ์†Œ์Šค ์ฝ”๋“œ ๋…ธ์ถœ
- **์˜ํ–ฅ**: ์„œ๋ฒ„ ์ธก ์ฝ”๋“œ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ๋น„๋ฐ€ํ‚ค ๋…ธ์ถœ ๊ฐ€๋Šฅ
- **์ทจ์•ฝ ๋ฒ„์ „**: react-server-dom-* 19.0.0 ~ 19.2.2

## ํŒŒ์ผ ๊ตฌ์กฐ

```
vuln-test/
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ dos_exploit.sh              # DoS ์ทจ์•ฝ์  ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ code_exposure_exploit.sh    # ์†Œ์Šค ์ฝ”๋“œ ๋…ธ์ถœ ์ทจ์•ฝ์  ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ
โ””โ”€โ”€ vulnerable-rsc-app/         # ํ…Œ์ŠคํŠธ์šฉ ์ทจ์•ฝ Next.js ์•ฑ
```

## ์‚ฌ์šฉ๋ฒ•

### 1. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์„ค์ •

```bash
cd vulnerable-rsc-app
npm install
npm run dev
```

### 2. DoS ์ทจ์•ฝ์  ํ…Œ์ŠคํŠธ

```bash
./dos_exploit.sh [TARGET_URL]

# ์˜ˆ์‹œ
./dos_exploit.sh http://localhost:3000
```

**ํŽ˜์ด๋กœ๋“œ ๊ตฌ์กฐ:**
```
name="0": "$@1"  (์ฒญํฌ 1 ์ฐธ์กฐ)
name="1": "$@0"  (์ฒญํฌ 0 ์ฐธ์กฐ)
โ†’ ์ˆœํ™˜ ์ฐธ์กฐ๋กœ ๋ฌดํ•œ ๋ฃจํ”„
```

### 3. ์†Œ์Šค ์ฝ”๋“œ ๋…ธ์ถœ ํ…Œ์ŠคํŠธ

```bash
./code_exposure_exploit.sh  [TARGET_URL]

# ์˜ˆ์‹œ
./code_exposure_exploit.sh 60b5ebe42cc05bb60f77baf6199f9974b62b0053dd http://localhost:3000
```

**Action ID ์ฐพ๋Š” ๋ฐฉ๋ฒ•:**
1. ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ โ†’ Network ํƒญ
2. Server Action ํ˜ธ์ถœ ์‹œ `Next-Action` ํ—ค๋” ๊ฐ’ ํ™•์ธ
3. ๋˜๋Š” ํŽ˜์ด์ง€ ์†Œ์Šค์—์„œ 40์ž hex ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰

**ํŽ˜์ด๋กœ๋“œ ๊ตฌ์กฐ:**
```
name="1": {"id":"","bound":null}  (Server Function ์ฐธ์กฐ)
name="0": ["$F1"]  (์ฒญํฌ 1์„ ์ธ์ž๋กœ ์ „๋‹ฌ)
โ†’ ์„œ๋ฒ„์—์„œ ์ „๋‹ฌ๋œ ์ธ์ž๋ฅผ toString()์™€ ๊ฐ™์ด ๋ฌธ์ž์—ด ๋ณ€ํ™˜ ํ›„ return์— ํฌํ•จ๋˜์—ˆ์„ ๋•Œ ์†Œ์Šค ์ฝ”๋“œ ๋…ธ์ถœ
```

## RSC ํ”„๋กœํ† ์ฝœ ์ฐธ์กฐ ํƒ€์ž…

| ์ ‘๋‘์‚ฌ | ์˜๋ฏธ | ์„ค๋ช… |
|--------|------|------|
| `$F` | Function Reference | Server Function ์ฐธ์กฐ |
| `$@` | Promise/Chunk Reference | ๋‹ค๋ฅธ ์ฒญํฌ ์ฐธ์กฐ |
| `$K` | FormData Reference | FormData ์ฒญํฌ ์ฐธ์กฐ |
| `$L` | Lazy Reference | ์ง€์—ฐ ๋กœ๋”ฉ ์ฐธ์กฐ |

## ํŒจ์น˜ ๋ฒ„์ „

- react-server-dom-webpack: 19.0.3, 19.1.4, 19.2.3
- react-server-dom-turbopack: 19.0.3, 19.1.4, 19.2.3

## ๋ฉด์ฑ… ์กฐํ•ญ

์ด ๋„๊ตฌ๋Š” **๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋ฐ ๊ต์œก ๋ชฉ์ **์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ—ˆ๊ฐ€ ์—†์ด ํƒ€์ธ์˜ ์‹œ์Šคํ…œ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๋ฒ•์ž…๋‹ˆ๋‹ค.