Lỗ hổng expr-eval nghiêm trọng: Nguy cơ RCE Khẩn cấp

Lỗ hổng expr-eval nghiêm trọng: Nguy cơ RCE Khẩn cấp

Một lỗ hổng expr-eval thực thi mã từ xa (Remote Code Execution – RCE) nghiêm trọng đã được phát hiện trong thư viện JavaScript expr-eval. Thư viện này được biết đến với khả năng đánh giá biểu thức toán học phức tạp và xử lý ngôn ngữ tự nhiên một cách linh hoạt. Với sự phụ thuộc của hàng ngàn dự án vào expr-eval, lỗ hổng này tiềm ẩn nguy cơ lớn cho các hệ thống ứng dụng trong nhiều lĩnh vực.

Chi tiết Lỗ hổng expr-eval CVE-2025-12735

Lỗ hổng này được định danh là CVE-2025-12735 và là một CVE nghiêm trọng với điểm số CVSS dự kiến rất cao, phản ánh khả năng tác động sâu rộng. Nó gây ra rủi ro đáng kể cho các môi trường máy chủ và đặc biệt là các ứng dụng sử dụng AI xử lý đầu vào từ người dùng. Với sự phổ biến rộng rãi của thư viện expr-eval trong các dự án phát triển, mối lo ngại này đặc biệt lớn đối với các tổ chức đang vận hành ứng dụng NLP và AI trong môi trường sản xuất, nơi tính toàn vẹn và bảo mật dữ liệu là tối quan trọng.

Cơ chế khai thác và tác động

Nguồn gốc của lỗ hổng expr-eval nằm ở lỗi thiết kế cơ bản trong phương thức evaluate() của lớp Parser. Phương thức này, được dùng để diễn giải và thực thi các chuỗi biểu thức, đã không thực hiện kiểm soát đầy đủ việc định nghĩa các hàm. Kẻ tấn công có thể khai thác điểm yếu này bằng cách chèn và định nghĩa các hàm tùy ý vào đối tượng ngữ cảnh của trình phân tích cú pháp.

Cụ thể, thay vì chỉ thực hiện các phép tính toán học thông thường, kẻ tấn công có thể đưa vào các chuỗi đầu vào được thiết kế đặc biệt để tạo ra và thực thi mã độc. Điều này cho phép chúng thực thi các lệnh cấp hệ thống (system-level commands) trên máy chủ lưu trữ. Ví dụ, một kẻ tấn công có thể sử dụng lỗ hổng này để:

  • Thực thi các lệnh shell để duyệt hệ thống tệp.
  • Tải xuống và chạy các mã độc khác.
  • Thiết lập kết nối ngược (reverse shell) để duy trì quyền truy cập.
  • Truy cập trái phép vào tài nguyên cục bộ nhạy cảm, như cấu hình hệ thống hoặc cơ sở dữ liệu.
  • Rò rỉ dữ liệu quan trọng ra bên ngoài.
  • Hoặc thậm chí chiếm quyền kiểm soát hoàn toàn hệ thống.

Tác động này rất nghiêm trọng, đặc biệt đối với các ứng dụng AI/NLP thường xuyên xử lý dữ liệu không đáng tin cậy từ người dùng, biến chúng thành mục tiêu lý tưởng cho các cuộc tấn công remote code execution.

Mức độ nghiêm trọng theo SSVC

Theo khung SSVC (Stakeholder-Specific Vulnerability Categorization), lỗ hổng expr-eval này có mức độ tác động kỹ thuật là Total. Điều này mang ý nghĩa rằng kẻ tấn công có thể giành quyền kiểm soát hoàn toàn hành vi của phần mềm bị ảnh hưởng hoặc đạt được khả năng tiết lộ toàn bộ thông tin hệ thống. Mức độ nghiêm trọng này đòi hỏi các tổ chức bị ảnh hưởng phải hành động ngay lập tức và xem xét đây là một ưu tiên bảo mật hàng đầu.

Lỗ hổng được công bố vào ngày 7 tháng 11 năm 2025, với các bản cập nhật tài liệu mới nhất vào ngày 9 tháng 11 năm 2025. Nhà nghiên cứu bảo mật Jangwoo Choe từ UKO đã báo cáo lỗ hổng một cách có trách nhiệm, phối hợp chặt chẽ với GitHub Security và npm để đảm bảo quá trình công bố thông tin diễn ra một cách có tổ chức và đồng bộ. Thông tin chi tiết về báo cáo công bố có thể được tìm thấy tại trang web của CERT.org.

Các biện pháp khắc phục và vá lỗi bảo mật

Để giảm thiểu rủi ro từ lỗ hổng expr-eval nghiêm trọng này, các nhà phát triển và quản trị hệ thống có hai phương pháp chính để khắc phục:

Lựa chọn 1: Áp dụng bản vá bảo mật

Áp dụng trực tiếp bản vá bảo mật từ Pull Request #288 trong kho lưu trữ expr-eval. Bản vá này không chỉ là một sửa đổi nhỏ mà còn là một cải tiến bảo mật đáng kể. Nó giới thiệu một danh sách cho phép (allowlist) các hàm an toàn được định nghĩa trước, đảm bảo rằng chỉ những chức năng được kiểm duyệt mới có thể được thực thi. Đồng thời, cơ chế đăng ký bắt buộc cho các hàm tùy chỉnh được triển khai, yêu cầu các nhà phát triển phải minh bạch đăng ký bất kỳ hàm không chuẩn nào. Điều này đi kèm với các trường hợp thử nghiệm được cập nhật để thực thi các ràng buộc mới, tăng cường khả năng chống lại các cuộc tấn công khai thác lỗ hổng.

Lựa chọn 2: Nâng cấp phiên bản

Nâng cấp lên phiên bản expr-eval hoặc expr-eval-fork đã được vá lỗi mới nhất. Phương pháp này thường là lựa chọn đơn giản và an toàn nhất. Đáng chú ý, phiên bản expr-eval-fork v3.0.0 hiện đã có sẵn và giải quyết triệt để lỗ hổng expr-eval này. Việc sử dụng phiên bản fork này cũng đáng được cân nhắc, vì nó ban đầu được tạo ra để giải quyết một lỗ hổng Prototype Pollution trước đó (Issue #266) mà vẫn chưa được khắc phục trong kho lưu trữ gốc không được duy trì. Điều này cho thấy expr-eval-fork có thể cung cấp một nền tảng được bảo trì tích cực hơn.

Tầm quan trọng của việc vá lỗi ngay lập tức

Các tổ chức sử dụng thư viện expr-eval cần ngay lập tức kiểm tra các phụ thuộc của mình và ưu tiên việc vá lỗi. Việc trì hoãn có thể dẫn đến hậu quả nghiêm trọng, từ mất dữ liệu đến gián đoạn dịch vụ. Vì thư viện này là nền tảng cho nhiều hệ thống AI và NLP, việc triển khai bản vá cho lỗ hổng expr-eval nhanh chóng là rất cần thiết trước khi việc khai thác trở nên phổ biến và được tích hợp vào các công cụ tấn công tự động.

Kiểm tra và giám sát hệ thống

Để đảm bảo an toàn thông tin và bảo mật mạng liên tục, các tổ chức cần áp dụng các biện pháp kiểm tra và giám sát chủ động. Hãy sử dụng các công cụ quản lý phụ thuộc tự động như npm audit để xác định các phiên bản bị ảnh hưởng của expr-eval (và các thư viện khác) trên toàn bộ cơ sở hạ tầng của bạn.

npm audit

Sau khi xác định được, ưu tiên triển khai các bản cập nhật ngay lập tức khi các bản vá được kiểm thử và triển khai vào môi trường sản xuất. Ngoài ra, việc duy trì một quy trình phát triển an toàn (Secure Software Development Lifecycle – SSDLC) bao gồm việc kiểm tra mã nguồn, phân tích tĩnh/động, và kiểm tra xâm nhập định kỳ sẽ giúp giảm thiểu rủi ro từ các lỗ hổng zero-day hoặc các lỗ hổng expr-eval tương tự trong tương lai. Việc theo dõi và cập nhật thường xuyên là chìa khóa để bảo vệ hệ thống khỏi các mối đe dọa mạng tiềm tàng, đặc biệt là các cuộc tấn công remote code execution nghiêm trọng và các CVE nghiêm trọng khác.