-
09/04/2020
-
116
-
1.177 bài viết
Hơn 2,7 triệu người dùng bị ảnh hưởng bởi lỗ hổng RCE nghiêm trọng trong Happy DOM
Một lỗ hổng bảo mật nghiêm trọng vừa được phát hiện trong Happy DOM – thư viện JavaScript phổ biến, được sử dụng rộng rãi trong các ứng dụng kết xuất phía máy chủ (server-side rendering) và nhiều framework kiểm thử hiện nay. Lỗ hổng này, được gán mã CVE-2025-61927, cho phép kẻ tấn công thoát ra khỏi môi trường máy ảo và thực thi mã tùy ý trên hệ thống bị ảnh hưởng, đe dọa tới an toàn của hàng triệu ứng dụng trên toàn cầu.
Theo phân tích kỹ thuật, lỗ hổng tồn tại trong các phiên bản Happy DOM từ 19 trở về trước, bắt nguồn từ việc cô lập không đầy đủ môi trường thực thi VM của Node.js. Cơ chế này vốn được thiết kế nhằm ngăn mã JavaScript không đáng tin cậy truy cập tài nguyên hệ thống. Tuy nhiên, lỗi trong quá trình xử lý đã khiến kẻ tấn công có thể “phá vỡ” lớp bảo vệ này. Với điểm CVSS v4 tối đa 10.0, CVE-2025-61927 được đánh giá ở mức nghiêm trọng, ảnh hưởng trực tiếp đến tính bảo mật, toàn vẹn và khả dụng của hệ thống.
Nhà nghiên cứu bảo mật Mas0nShi là người đầu tiên phát hiện ra lỗ hổng, mô tả rằng kẻ tấn công có thể lợi dụng chuỗi kế thừa của lớp Function để leo lên tới hàm tạo toàn cục (global Function constructor). Từ đó, họ có thể thực thi các chuỗi mã ở cấp độ tiến trình thay vì bị giới hạn trong môi trường VM. Cách thức khai thác này cho phép truy cập sâu vào tài nguyên hệ thống, bao gồm các biến môi trường, tệp cấu hình hoặc các module hệ thống của Node.js.
Lỗ hổng có mức độ nguy hiểm đặc biệt cao trong các môi trường CommonJS, nơi kẻ tấn công có thể truy cập hàm require() để nhập và thực thi thêm các module tùy ý. Ngược lại, trong môi trường ECMAScript modules, phạm vi tấn công bị hạn chế hơn nhưng vẫn đủ để gây tổn hại nghiêm trọng nếu ứng dụng xử lý nội dung HTML do người dùng kiểm soát. Đáng chú ý, các ứng dụng server-side rendering và hệ thống kiểm thử tự động có sử dụng Happy DOM là đối tượng rủi ro cao nhất, vì chúng thường phải xử lý mã JavaScript từ nguồn không tin cậy.
Khai thác thành công lỗ hổng này cho phép kẻ tấn công trích xuất dữ liệu nhạy cảm, bao gồm thông tin định danh hoặc khóa truy cập từ biến môi trường, di chuyển ngang trong hệ thống, thực thi lệnh hệ thống thông qua các tiến trình convà duy trì sự hiện diện lâu dài nhờ quyền truy cập hệ thống tệp. Với phạm vi ảnh hưởng ước tính hơn 2,7 triệu người dùng, CVE-2025-61927 được xem là một trong những lỗ hổng nghiêm trọng nhất từng ghi nhận trong lĩnh vực JavaScript mô phỏng môi trường DOM.
Trước tình hình này, nhà phát triển Ortner IT Solutions AB – đơn vị duy trì Happy DOM đã phát hành phiên bản 20 nhằm khắc phục sự cố. Bản vá đã vô hiệu hóa cơ chế đánh giá mã JavaScript mặc định và bổ sung cảnh báo bảo mật khi người dùng kích hoạt các cấu hình tiềm ẩn rủi ro. Các tổ chức đang sử dụng phiên bản cũ được khuyến nghị nâng cấp ngay lên Happy DOM v20 hoặc cao hơn để loại bỏ nguy cơ khai thác.
Đối với các môi trường chưa thể cập nhật ngay, chuyên gia khuyến cáo kích hoạt cờ --disallow-code-generation-from-strings trong Node.js để ngăn việc thực thi chuỗi mã động ở cấp tiến trình. Trong trường hợp bắt buộc phải cho phép đánh giá mã JavaScript, cần đảm bảo rằng nội dung được xử lý hoàn toàn đáng tin cậy và đã qua kiểm soát bảo mật chặt chẽ.
Phiên bản vá không chỉ xử lý lỗi hiện tại mà còn tăng cường lớp bảo vệ tổng thể, cảnh báo rõ ràng hơn khi người dùng kích hoạt các tùy chọn có thể dẫn đến tấn công kiểu “thoát VM”. Với bản cập nhật này, Happy DOM hướng tới việc thiết lập một môi trường an toàn hơn cho cộng đồng phát triển JavaScript, đồng thời nhấn mạnh tầm quan trọng của việc quản lý an toàn mã thực thi động trong các ứng dụng hiện đại.
Theo phân tích kỹ thuật, lỗ hổng tồn tại trong các phiên bản Happy DOM từ 19 trở về trước, bắt nguồn từ việc cô lập không đầy đủ môi trường thực thi VM của Node.js. Cơ chế này vốn được thiết kế nhằm ngăn mã JavaScript không đáng tin cậy truy cập tài nguyên hệ thống. Tuy nhiên, lỗi trong quá trình xử lý đã khiến kẻ tấn công có thể “phá vỡ” lớp bảo vệ này. Với điểm CVSS v4 tối đa 10.0, CVE-2025-61927 được đánh giá ở mức nghiêm trọng, ảnh hưởng trực tiếp đến tính bảo mật, toàn vẹn và khả dụng của hệ thống.
Nhà nghiên cứu bảo mật Mas0nShi là người đầu tiên phát hiện ra lỗ hổng, mô tả rằng kẻ tấn công có thể lợi dụng chuỗi kế thừa của lớp Function để leo lên tới hàm tạo toàn cục (global Function constructor). Từ đó, họ có thể thực thi các chuỗi mã ở cấp độ tiến trình thay vì bị giới hạn trong môi trường VM. Cách thức khai thác này cho phép truy cập sâu vào tài nguyên hệ thống, bao gồm các biến môi trường, tệp cấu hình hoặc các module hệ thống của Node.js.
Lỗ hổng có mức độ nguy hiểm đặc biệt cao trong các môi trường CommonJS, nơi kẻ tấn công có thể truy cập hàm require() để nhập và thực thi thêm các module tùy ý. Ngược lại, trong môi trường ECMAScript modules, phạm vi tấn công bị hạn chế hơn nhưng vẫn đủ để gây tổn hại nghiêm trọng nếu ứng dụng xử lý nội dung HTML do người dùng kiểm soát. Đáng chú ý, các ứng dụng server-side rendering và hệ thống kiểm thử tự động có sử dụng Happy DOM là đối tượng rủi ro cao nhất, vì chúng thường phải xử lý mã JavaScript từ nguồn không tin cậy.
Khai thác thành công lỗ hổng này cho phép kẻ tấn công trích xuất dữ liệu nhạy cảm, bao gồm thông tin định danh hoặc khóa truy cập từ biến môi trường, di chuyển ngang trong hệ thống, thực thi lệnh hệ thống thông qua các tiến trình convà duy trì sự hiện diện lâu dài nhờ quyền truy cập hệ thống tệp. Với phạm vi ảnh hưởng ước tính hơn 2,7 triệu người dùng, CVE-2025-61927 được xem là một trong những lỗ hổng nghiêm trọng nhất từng ghi nhận trong lĩnh vực JavaScript mô phỏng môi trường DOM.
Trước tình hình này, nhà phát triển Ortner IT Solutions AB – đơn vị duy trì Happy DOM đã phát hành phiên bản 20 nhằm khắc phục sự cố. Bản vá đã vô hiệu hóa cơ chế đánh giá mã JavaScript mặc định và bổ sung cảnh báo bảo mật khi người dùng kích hoạt các cấu hình tiềm ẩn rủi ro. Các tổ chức đang sử dụng phiên bản cũ được khuyến nghị nâng cấp ngay lên Happy DOM v20 hoặc cao hơn để loại bỏ nguy cơ khai thác.
Đối với các môi trường chưa thể cập nhật ngay, chuyên gia khuyến cáo kích hoạt cờ --disallow-code-generation-from-strings trong Node.js để ngăn việc thực thi chuỗi mã động ở cấp tiến trình. Trong trường hợp bắt buộc phải cho phép đánh giá mã JavaScript, cần đảm bảo rằng nội dung được xử lý hoàn toàn đáng tin cậy và đã qua kiểm soát bảo mật chặt chẽ.
Phiên bản vá không chỉ xử lý lỗi hiện tại mà còn tăng cường lớp bảo vệ tổng thể, cảnh báo rõ ràng hơn khi người dùng kích hoạt các tùy chọn có thể dẫn đến tấn công kiểu “thoát VM”. Với bản cập nhật này, Happy DOM hướng tới việc thiết lập một môi trường an toàn hơn cho cộng đồng phát triển JavaScript, đồng thời nhấn mạnh tầm quan trọng của việc quản lý an toàn mã thực thi động trong các ứng dụng hiện đại.
Theo gbhacker
Chỉnh sửa lần cuối: