Nguy hiểm Remote Code Execution từ lỗ hổng CVE next-mdx-remote

Một cảnh báo bảo mật, được theo dõi là HCSEC-2026-01, đã tiết lộ một lỗ hổng CVE nghiêm trọng trong thư viện next-mdx-remote. Lỗ hổng này cho phép kẻ tấn công thực thi mã tùy ý trên các máy chủ xử lý nội dung MDX không đáng tin cậy. Đây là một nguy cơ cao dẫn đến các cuộc tấn công remote code execution.
Lỗ hổng này được định danh là CVE-2026-0969, ảnh hưởng đến các phiên bản từ 4.3.0 đến 5.0.0 và đã được khắc phục trong phiên bản 6.0.0. Next-mdx-remote là một thư viện TypeScript mã nguồn mở phổ biến, được sử dụng trong các ứng dụng React dựa trên Next.js.
Tổng quan về Thư viện next-mdx-remote
Thư viện next-mdx-remote cho phép các nhà phát triển lấy nội dung MDX (Markdown với JSX) từ cơ sở dữ liệu, API hoặc dữ liệu nhập của người dùng. Nội dung này sau đó được hiển thị một cách linh hoạt trên máy chủ hoặc máy khách.
MDX kết hợp sự đơn giản của Markdown với các thành phần React, làm cho nó trở nên lý tưởng cho các blog, tài liệu và nội dung do người dùng tạo.
Cơ chế Khai thác và Tác động của Lỗ hổng CVE
Vấn đề cốt lõi nằm ở các hàm serialize và compileMDX của thư viện. Các hàm này thiếu cơ chế làm sạch phù hợp cho các biểu thức JavaScript khi xử lý nội dung MDX không đáng tin cậy.
Kẻ tấn công có thể chèn mã độc hại, chẳng hạn như eval(), Function() hoặc require(), được ẩn trong các dấu ngoặc nhọn {}. Khi máy chủ xử lý nội dung này trong quá trình Server-Side Rendering (SSR), mã độc sẽ được thực thi với đầy đủ các đặc quyền của máy chủ.
Điều này dẫn đến khả năng remote code execution (RCE), cho phép kẻ tấn công tiềm tàng đánh cắp dữ liệu, cài đặt mã độc hoặc chiếm quyền kiểm soát máy chủ hoàn toàn.
Ví dụ Khai thác Remote Code Execution
Để minh họa, kẻ tấn công có thể gửi nội dung MDX như sau:
{require('child_process').execSync('rm -rf /')}Nếu các biểu thức JavaScript được bật (đây là cài đặt mặc định), máy chủ sẽ thực thi lệnh này mà không có bất kỳ kiểm soát nào, dẫn đến hậu quả nghiêm trọng.
Giải pháp và Biện pháp Khắc phục
Phiên bản 6.0.0 của next-mdx-remote mang đến những thay đổi quan trọng để giải quyết lỗ hổng này. Các biểu thức JavaScript hiện đã bị chặn theo mặc định thông qua tùy chọn blockJS: true. Đây là một bản vá bảo mật quan trọng.
Khi các biểu thức JavaScript được bật trở lại (blockJS: false), một tùy chọn mới là blockDangerousJS: true (mặc định được bật) sẽ lọc các biến toàn cục nguy hiểm như process, eval và require. Điều này giúp ngăn chặn các cuộc tấn công remote code execution ngay cả khi biểu thức JS được kích hoạt.
Khuyến nghị Bảo mật
Nếu hệ thống của bạn xử lý nội dung MDX không đáng tin cậy trên máy chủ, hãy nâng cấp lên next-mdx-remote phiên bản 6.0.0 ngay lập tức. Đây là hành động tối quan trọng để bảo vệ hệ thống khỏi các mối đe dọa remote code execution. Kiểm tra mã nguồn để xác định các lệnh gọi hàm compileMDX hoặc serialize.
Không bao giờ hiển thị nội dung MDX do người dùng cung cấp mà không qua quá trình làm sạch nghiêm ngặt. Sử dụng các thư viện như remark-rehype để tăng cường bảo mật. Luôn kiểm tra các thay đổi trong môi trường staging để phát hiện bất kỳ sự cố nào do các cài đặt mặc định mới.
Để biết thêm chi tiết về cảnh báo bảo mật HCSEC-2026-01, bạn có thể tham khảo tại nguồn chính thức của dự án: HashiCorp Security Advisory. Thông tin chi tiết về CVE-2026-0969 cũng có thể được tìm thấy trên Cổng thông tin Cơ sở dữ liệu Lỗ hổng Quốc gia (NVD) tại NVD – CVE-2026-0969.







