Bảo mật & quyền riêng tư

Next.js vá các lỗ hổng RCE nghiêm trọng trong bộ nhớ đệm và xử lý SVG

Next.js 16.4.1 và 15.5.28 khắc phục hai lỗ hổng thực thi mã từ xa (RCE) nghiêm trọng và một lỗi từ chối dịch vụ (DoS) ảnh hưởng đến các thành phần máy chủ và quy trình xử lý hình ảnh.

Hình minh họa một máy chủ được bảo vệ bởi tấm khiên nứt vỡ trước các cuộc tấn công kỹ thuật số
Minh họa được tạo riêng cho bài viết này

Được dịch tự động từ bản gốc tiếng Anh.

Vercel đã phát hành bản cập nhật bảo mật khẩn cấp ngoài lịch định kỳ cho Next.js vào ngày 14 tháng 10, giải quyết hai lỗ hổng thực thi mã từ xa (RCE) nghiêm trọng và một lỗi từ chối dịch vụ (DoS) có mức độ nghiêm trọng cao. Các bản vá có sẵn trong phiên bản Next.js 16.4.1 và 15.5.28, nhắm mục tiêu vào các ứng dụng sử dụng React Server Components, xử lý hình ảnh SVG hoặc Server Actions. Mặc dù chưa có báo cáo về các cuộc tấn công đang diễn ra, mức độ nghiêm trọng của những vấn đề này đòi hỏi sự chú ý ngay lập tức từ các nhóm phát triển.

Chuyện gì đã xảy ra

Bản cập nhật giải quyết ba vấn đề bảo mật riêng biệt, khiến các ứng dụng Next.js dễ bị tấn công mà không cần xác thực. Vercel gán điểm CVSS 9.5 cho cả hai lỗ hổng RCE, cho thấy chúng ở mức nghiêm trọng và dễ bị khai thác trong những điều kiện cụ thể. Lỗ hổng đầu tiên tồn tại trong React Server Components, đặc biệt ảnh hưởng đến các ứng dụng sử dụng tính năng use cache. Lỗ hổng thứ hai liên quan đến một lỗi hỏng bộ nhớ trong librsvg, một thư viện mã nguồn mở được gói sharp sử dụng để kết xuất SVG. Vấn đề thứ ba là lỗ hổng DoS liên quan đến Server Actions, cho phép kẻ tấn công làm cạn kiệt tài nguyên CPU của máy chủ bằng các yêu cầu được thiết kế đặc biệt.

Những lỗi này ảnh hưởng đến nhiều phiên bản Next.js khác nhau. Lỗi RCE qua use cache tác động đến Next.js từ phiên bản 16.0.0 đến 16.4.0. Lỗi RCE liên quan đến SVG ảnh hưởng đến các phiên bản từ 10.0.0 đến 15.5.27 và từ 16.0.0 đến 16.4.0. Lỗi DoS trải dài trên các phiên bản từ 13.0.0 đến 15.5.27 và từ 16.0.0 đến 16.4.0. Vercel khuyến nghị tất cả người dùng nâng cấp lên các bản phát hành vá mới nhất, ngay cả khi họ tin rằng cấu hình cụ thể của mình không bị ảnh hưởng, để đảm bảo sự bảo vệ toàn diện.

Mức độ rủi ro thay đổi tùy theo môi trường lưu trữ và cách thiết lập ứng dụng. Ví dụ, Netlify tuyên bố rằng nền tảng của họ không thực thi đường dẫn code image-optimizer, do đó hạn chế tác động của lỗi SVG đối với hạ tầng của họ. Tuy nhiên, họ vẫn khuyên nên nâng cấp. Các ứng dụng chạy trên hệ thống Linux dựa trên glibc đặc biệt dễ gặp rủi ro trước lỗ hổng SVG, vì lỗi bộ nhớ cơ bản trong librsvg có thể được kích hoạt từ xa khi xử lý các tệp do kẻ tấn công cung cấp.

Cơ chế hoạt động

Lỗi trong React Server Components xảy ra trong những trường hợp hiếm hoi khi hàm use cache trả về nhiều hơn một mảng kiểu dữ liệu chứa giá trị do kẻ tấn công kiểm soát. Vấn đề này nằm trong các gói react-server-dom-webpack, react-server-dom-parcel và react-server-dom-turbopack. Khi đáp ứng đủ các điều kiện này, máy chủ có thể thực thi mã tùy ý do kẻ tấn công cung cấp. Mặc dù Vercel mô tả kịch bản này là cực kỳ hiếm, nhưng tiềm năng tác động đủ nghiêm trọng để đưa ra khuyến nghị nâng cấp phổ quát cho người dùng Next.js 16.

Lỗ hổng SVG bắt nguồn từ một lỗi bộ nhớ trong librsvg, được định danh là CVE-2026-96889. Next.js truy cập thư viện này thông qua gói xử lý hình ảnh sharp. Theo mặc định, Next.js không tối ưu hóa các tệp SVG, nhưng việc bật cài đặt dangerouslyAllowSVG hoặc sử dụng tính năng next/og cho hình ảnh xem trước mạng xã hội sẽ khiến ứng dụng phải đối mặt với rủi ro này. Khi một tệp SVG độc hại được xử lý trên hệ thống Linux dựa trên glibc, tình trạng hỏng bộ nhớ có thể dẫn đến thực thi mã từ xa. Đây là lỗi RCE thứ ba liên quan đến xử lý hình ảnh trong Next.js kể từ tháng Tám, nhấn mạnh những rủi ro vốn có trong các phụ thuộc native phức tạp.

Lỗ hổng DoS ảnh hưởng đến các ứng dụng App Router có định nghĩa ít nhất một Server Action. Kẻ tấn công có thể gửi các yêu cầu được thiết kế đặc biệt buộc một tiến trình máy chủ đơn lẻ chiếm dụng 100% dung lượng CPU, ngăn cản nó xử lý các yêu cầu hợp pháp khác. Điều này thực tế làm gián đoạn dịch vụ đối với những người dùng phụ thuộc vào tiến trình cụ thể đó. Các ứng dụng Pages Router và những ứng dụng không sử dụng Server Actions không bị ảnh hưởng bởi lỗi này.

Chi tiết chính

  • Phiên bản đã sửa: Next.js 16.4.1 và 15.5.28 giải quyết cả ba vấn đề.
  • Phụ thuộc Sharp: Phiên bản 16.4.1 tự động yêu cầu sharp 0.35.5, phiên bản này chứa librsvg đã được vá. Phiên bản 15.5.28 có thể vẫn cho phép các phiên bản sharp cũ hơn, dễ bị tổn thương, đòi hỏi phải xác minh thủ công.
  • Đặc thù Linux: Lỗi RCE SVG chủ yếu có thể bị khai thác trên các hệ thống Linux dựa trên glibc, nơi Next.js xử lý SVG thông qua sharp.
  • Không có CVE cho một số lỗi: Tính đến ngày 15 tháng 10, các cảnh báo về use cache và Server Actions chưa được gán mã CVE và không hiển thị trong các luồng kiểm toán npm tiêu chuẩn.
  • Các biện pháp tạm thời: Không có biện pháp thay thế cho các lỗi use cache và Server Actions. Đối với vấn đề SVG, người dùng có thể chặn kết xuất SVG trong sharp nếu họ không thể nâng cấp ngay lập tức.
  • Sự cố trước đó: Bản cập nhật này tiếp nối các lỗi RCE tương tự vào tháng Tám (libheif) và tháng Chín (next/og), chỉ ra một xu hướng lặp lại các lỗ hổng trong các thư viện phụ thuộc xử lý hình ảnh.

Tại sao điều này quan trọng

Đối với các nhóm kỹ thuật, bản cập nhật này nhấn mạnh sự mong manh của an ninh chuỗi cung ứng trong các framework web hiện đại. Sự tái diễn của các lỗi RCE trong các thư viện xử lý hình ảnh như sharp và các phụ thuộc của nó cho thấy tích hợp mã native vẫn là một lĩnh vực rủi ro cao. Các nhà phát triển thường giả định rằng các lớp trừu tượng của framework ở cấp độ cao sẽ bảo vệ họ khỏi các lỗi bộ nhớ ở cấp độ thấp, nhưng sự cố này chứng minh rằng các phụ thuộc sâu có thể giới thiệu những lỗ hổng nghiêm trọng khó phát hiện nếu không có các công cụ quét chuyên dụng.

Việc thiếu mã CVE cho hai trong ba lỗi cũng làm nổi bật khoảng trống trong giám sát bảo mật tự động. Nhiều nhóm dựa vào npm audit hoặc các công cụ tương tự để đánh dấu các phụ thuộc dễ bị tổn thương. Vì các cảnh báo cụ thể này không được cập nhật ngay lập tức vào các luồng tiêu chuẩn, các tổ chức chỉ phụ thuộc vào máy quét tự động có thể đã bỏ lỡ tính cấp bách của các bản sửa lỗi use cache và Server Actions. Điều này đòi hỏi một cách tiếp cận chủ động hơn trong việc giám sát các kênh chính thức của framework và các bản tin bảo mật, thay vì chỉ dựa hoàn toàn vào các công cụ tự động.

Bạn có thể làm gì

  • Nâng cấp ngay lập tức lên Next.js 16.4.1 hoặc 15.5.28 và xây dựng lại ứng dụng của bạn.
  • Nếu sử dụng Next.js 15, hãy xác minh thủ công rằng sharp đã được cập nhật lên phiên bản 0.35.5 trở lên bằng lệnh npm ls sharp.
  • Kiểm tra xem ứng dụng của bạn có sử dụng dangerouslyAllowSVG hoặc next/og hay không và cân nhắc vô hiệu hóa các tính năng này nếu chúng không thiết yếu.
  • Giám sát mức sử dụng CPU của máy chủ để tìm kiếm những đợt tăng đột biến bất thường, có thể là dấu hiệu của việc khai thác lỗi DoS trong Server Actions.
  • Xem xét lại quy trình quét phụ thuộc của bạn để đảm bảo nó nắm bắt được các cảnh báo có thể chưa được gán mã CVE.
  • Nếu không thể nâng cấp ngay lập tức, hãy chặn các thao tác SVG trong sharp bằng cách sử dụng sharp.block({ operation: ["VipsForeignLoadSvg"] }) như một biện pháp giảm thiểu tạm thời cho lỗi xử lý hình ảnh.

Công cụ từ cửa hàng Bytechap

Đọc tiếp

Tất cả bài viết