Một lỗ hổng CVE thực thi mã từ xa (Remote Code Execution – RCE) nghiêm trọng đã được phát hiện trong framework NestJS phổ biến, cho phép kẻ tấn công thực thi mã tùy ý trên máy tính của nhà phát triển. Lỗ hổng này đặc biệt nguy hiểm do khả năng kiểm soát hoàn toàn hệ thống mục tiêu chỉ thông qua các cuộc tấn công dựa trên web đơn giản, gây ra nguy cơ bảo mật đáng kể cho các dự án phát triển.
CVE-2025-54782: Phân tích lỗ hổng thực thi mã từ xa
Thông tin cơ bản và mức độ nghiêm trọng
Lỗ hổng này được định danh là CVE-2025-54782, ảnh hưởng đến gói @nestjs/devtools-integration. Nó đã được gán mức độ nghiêm trọng cao nhất (Critical) do tiềm năng xâm phạm hệ thống hoàn toàn. Thông tin chi tiết về cảnh báo CVE này có thể được tìm thấy tại NVD – National Vulnerability Database. Đây là một NestJS vulnerability cần được ưu tiên xử lý ngay lập tức.
Gốc rễ vấn đề: Thực thi mã không an toàn và thiếu kiểm soát CORS
Điểm yếu bảo mật này bắt nguồn từ sự kết hợp của các phương pháp thực thi mã không an toàn và việc thiếu kiểm soát yêu cầu xuyên nguồn (Cross-Origin Request) không đầy đủ trong gói @nestjs/devtools-integration. Khi các nhà phát triển kích hoạt gói này trong quá trình phát triển, nó sẽ lộ ra một máy chủ HTTP cục bộ với một điểm cuối API tại /inspector/graph/interact. Điểm cuối này chấp nhận và thực thi mã JavaScript trong một môi trường sandbox không an toàn.
Điểm yếu trong @nestjs/devtools-integration
Nhà nghiên cứu bảo mật JLLeitschuh, đại diện cho Socket – một công ty bảo mật phần mềm, đã phát hiện ra lỗ hổng CVE này. Vấn đề cốt lõi nằm ở việc triển khai một sandbox JavaScript trong gói, mà có nhiều điểm tương đồng với thư viện safe-eval đã bị bỏ rơi. Cụ thể, sandbox này sử dụng phương thức vm.runInNewContext của Node.js.
Tài liệu của Node.js đã nêu rõ rằng phương thức vm.runInNewContext không cung cấp cơ chế bảo mật nào để thực thi mã không đáng tin cậy. Việc triển khai này cho phép áp dụng nhiều kỹ thuật thoát sandbox (sandbox escape) đã biết, dẫn đến khả năng thực thi mã tùy ý (arbitrary code execution) trên hệ thống bị ảnh hưởng.
Kỹ thuật bỏ qua kiểm soát CORS
Tăng thêm mức độ nghiêm trọng của vấn đề là việc thiếu kiểm tra yêu cầu xuyên nguồn (CORS) đúng cách. Mặc dù máy chủ đặt tiêu đề Access-Control-Allow-Origin thành một tên miền cố định, nhưng nó lại không kiểm tra các tiêu đề Origin hoặc Content-Type của yêu cầu. Kẻ tấn công có thể lợi dụng điểm yếu này bằng cách tạo các yêu cầu POST với kiểu nội dung text/plain. Điều này có thể được thực hiện thông qua các form HTML hoặc các lệnh gọi XMLHttpRequest đơn giản, từ đó bỏ qua hiệu quả các kiểm tra preflight của CORS.
Kịch bản tấn công và tác động của lỗ hổng CVE này
Quy trình khai thác đơn giản
Kịch bản tấn công đối với lỗ hổng CVE này đặc biệt đáng lo ngại do tính đơn giản của nó. Kẻ tấn công có thể tạo một trang web độc hại chứa một form HTML hoặc mã JavaScript. Khi một nhà phát triển truy cập trang này, trang web sẽ tự động gửi một yêu cầu đã được chế tạo đến máy chủ phát triển cục bộ.
Việc khai thác chỉ yêu cầu tương tác tối thiểu từ người dùng. Chỉ cần truy cập trang web độc hại là đủ để kích hoạt quá trình thực thi mã từ xa. Điều này khiến cho NestJS vulnerability trở thành một mối đe dọa lớn.
Hậu quả tiềm tàng
Một bản trình diễn Proof-of-Concept (PoC) cho thấy kẻ tấn công có thể thực thi các lệnh như khởi chạy ứng dụng trên máy của nhà phát triển. Tuy nhiên, tiềm năng cho các hoạt động độc hại hơn, bao gồm đánh cắp dữ liệu nhạy cảm hoặc xâm phạm toàn bộ hệ thống, là rất đáng kể. Việc khai thác thành công có thể dẫn đến chiếm quyền điều khiển hoàn toàn máy chủ hoặc máy tính của nhà phát triển, từ đó mở đường cho các cuộc tấn công sâu rộng hơn vào môi trường phát triển hoặc hệ thống sản xuất.
Biện pháp khắc phục và khuyến nghị
Cập nhật bản vá bảo mật
Để giải quyết lỗ hổng CVE-2025-54782 này, các nhà bảo trì NestJS đã thực hiện nhiều thay đổi quan trọng. Cụ thể, họ đã thay thế sandbox không an toàn bằng @nyariv/sandboxjs, bổ sung xác thực Origin và Content-Type thích hợp, đồng thời triển khai cơ chế xác thực cho các kết nối công cụ phát triển (devtools).
Các nhà phát triển đang sử dụng gói bị ảnh hưởng cần cập nhật bản vá ngay lập tức lên phiên bản đã được vá để giảm thiểu rủi ro bảo mật nghiêm trọng này. Việc bỏ qua việc update vá lỗi có thể khiến hệ thống của bạn dễ bị xâm nhập mạng.
Thông tin chi tiết về bản vá và khuyến nghị bảo mật có thể được tìm thấy trong cảnh báo bảo mật chính thức: GitHub Security Advisory – GHSA-85cg-cmq5-qjm7.
Đảm bảo rằng quá trình cập nhật bản vá được thực hiện nhanh chóng và toàn diện để bảo vệ các môi trường phát triển khỏi các cuộc tấn công tiềm tàng. Đây là bước quan trọng nhất để bảo vệ khỏi lỗ hổng CVE này.










