Thực thi mã từ xa trong ImageResponse của next/og
Tiêu đề gốc: Next.js: Remote Code Execution in next/og ImageResponse
Chuyện gì xảy ra
Bản ImageResponse chạy trên Node.js trong next/og thừa hưởng một lỗ hổng từ thư viện phía trên (satori). Nếu ứng dụng đưa giá trị do người ngoài kiểm soát vào nội dung, thuộc tính hoặc style của SVG khi tạo ảnh, kẻ tấn công có thể chạy mã trên máy chủ.
Ai bị ảnh hưởng
- Route tạo ảnh bằng
ImageResponsetừnext/ogtrên runtime Node.js, và lấy giá trị từ request (query, body, header) đưa vào SVG. - Không bị ảnh hưởng: bản
ImageResponsechạy trên Edge, hoặc ứng dụng không đưa giá trị từ người ngoài vào SVG.
Bản bị ảnh hưởng và bản vá
| Bản bị ảnh hưởng | Bản vá |
|---|---|
>= 16.2.0, < 16.3.6 | 16.3.6 |
Cách xử lý
- Nâng Next.js lên bản vá trong bảng dưới.
- Nếu chưa nâng được: không đưa giá trị do người ngoài kiểm soát vào nội dung, thuộc tính hay style SVG khi dùng
ImageResponsetrên Node.js.
Tự kiểm tra
- Tìm nơi dùng:
grep -rn "next/og" app src pages. - Với mỗi route tìm được: xem có
export const runtime = "edge"không, và giá trị nào trong SVG đến từrequest.
Nguồn
- GitHub Advisory Database GHSA-vcvr-r3jv-pc5j
- vercel/next.js GHSA-vcvr-r3jv-pc5j
- vercel/satori GHSA-wx4j-mvgx-mqwp
Viết lại từ cảnh báo gốc; phiên bản lấy từ GitHub Advisory Database (CC-BY-4.0), cập nhật 29/10/2026. Khi có khác biệt, cảnh báo gốc là chuẩn.