Node.js Khắc Phục Hai Lỗ Hổng Nghiêm Trọng: Path Traversal & HashDoS Gây DoS

Dự án Node.js đã phát hành các bản cập nhật bảo mật quan trọng cho nhiều dòng phát hành nhằm khắc phục hai lỗ hổng có mức độ nghiêm trọng cao. Các lỗ hổng này gây rủi ro đáng kể cho các ứng dụng chạy trên hệ điều hành Windows và có thể dẫn đến các cuộc tấn công từ chối dịch vụ (Denial-of-Service – DoS). Các bản vá bảo mật đã được phát hành vào ngày 15 tháng 7 năm 2025, ảnh hưởng đến các dòng phát hành Node.js đang được hỗ trợ bao gồm phiên bản 20.x, 22.x và 24.x.

Chi tiết CVE-2025-27210: Lỗ hổng bỏ qua bảo vệ Path Traversal trên Windows

Lỗ hổng CVE-2025-27210 cho phép kẻ tấn công khai thác tên thiết bị của Windows để bỏ qua các cơ chế bảo vệ chống lại tấn công path traversal (truy cập đường dẫn). Việc này có thể dẫn đến truy cập trái phép vào tài nguyên hệ thống hoặc các vị trí tệp nhạy cảm. Lỗ hổng này ảnh hưởng đến tất cả người dùng trên các dòng phát hành đang được hỗ trợ, làm dấy lên mối lo ngại rộng rãi đối với các ứng dụng Node.js chạy trên nền tảng Windows.

Mô tả kỹ thuật và cơ chế khai thác

Kẻ tấn công có thể lợi dụng cách Windows xử lý các đường dẫn tệp chứa tên thiết bị (ví dụ: C:\path\to\file\CON hoặc \\?\C:\path\to\file\NUL) để vượt qua các bộ lọc hoặc cơ chế kiểm tra đường dẫn thông thường. Khi một ứng dụng Node.js xử lý các đường dẫn đầu vào do người dùng kiểm soát mà không được làm sạch hoặc kiểm tra đầy đủ, kẻ tấn công có thể tạo ra các đường dẫn độc hại. Những đường dẫn này, khi được giải quyết bởi hệ thống tệp, có thể dẫn đến việc truy cập hoặc thao tác các tệp và thư mục nằm ngoài phạm vi dự kiến của ứng dụng.

Phạm vi ảnh hưởng và phát hiện

Lỗ hổng này đã được nhà nghiên cứu bảo mật oblivionsage phát hiện và sau đó được RafaelGSS khắc phục. Sự cố này nhấn mạnh tầm quan trọng của việc kiểm thử và xác thực bảo mật kỹ lưỡng, vì các bản vá bảo mật không đầy đủ có thể vô tình tạo ra các vector tấn công dai dẳng.

Chi tiết CVE-2025-27209: Lỗ hổng HashDoS trong V8 Engine

Lỗ hổng thứ hai, CVE-2025-27209, là một lỗ hổng HashDoS (Hash Denial-of-Service) phát sinh từ những thay đổi trong triển khai băm chuỗi của công cụ JavaScript V8. Cụ thể, phiên bản V8 được sử dụng trong Node.js v24.0.0 đã sửa đổi tính toán băm chuỗi để sử dụng rapidhash, nhưng vô tình giới thiệu lại một lỗ hổng xung đột băm.

Cơ chế hoạt động và nguyên nhân

Lỗ hổng triển khai này cho phép kẻ tấn công, những người có thể kiểm soát các chuỗi đầu vào, tạo ra vô số xung đột băm mà không cần biết hạt giống băm (hash seed). Điều này có nghĩa là kẻ tấn công có thể cố ý gửi các chuỗi đầu vào được thiết kế để tạo ra nhiều xung đột trong bảng băm của V8. Khi điều này xảy ra, thời gian để tìm kiếm hoặc thêm các phần tử vào bảng băm tăng lên đáng kể, vì hệ thống phải xử lý nhiều chuỗi được băm thành cùng một vị trí.

Tác động và đánh giá

Các cuộc tấn công như vậy có thể dẫn đến suy giảm hiệu suất nghiêm trọng và tiềm năng gây ra tình trạng từ chối dịch vụ trong các ứng dụng xử lý dữ liệu chuỗi do người dùng kiểm soát. Mặc dù nhóm phát triển V8 không phân loại đây là một lỗ hổng bảo mật, dự án Node.js đã áp dụng một cách tiếp cận thận trọng hơn, công nhận tác động tiềm tàng của nó trong các kịch bản triển khai thực tế. Lỗ hổng này đặc biệt ảnh hưởng đến người dùng Node.js v24.x và đã được báo cáo bởi sharp_edged, với các bản sửa lỗi được targos triển khai.

Các phiên bản Node.js bị ảnh hưởng và khuyến nghị cập nhật

Dự án Node.js đã phát hành các phiên bản cập nhật để khắc phục những lỗ hổng này. Các phiên bản được vá bao gồm:

  • Node.js v20.19.4
  • Node.js v22.17.1
  • Node.js v24.4.1

Các tổ chức đang chạy ứng dụng Node.js, đặc biệt là trên hệ thống Windows hoặc đang sử dụng các bản phát hành v24.x, nên ưu tiên cập nhật ngay lập tức để giảm thiểu các rủi ro bảo mật này. Nhóm bảo mật Node.js nhấn mạnh rằng các phiên bản đã kết thúc vòng đời hỗ trợ (End-of-Life – EOL) vẫn sẽ dễ bị tổn thương trong quá trình phát hành bảo mật. Điều này tái khẳng định tầm quan trọng của việc duy trì các phiên bản hiện tại theo lịch trình phát hành chính thức. Người dùng có thể cập nhật thông tin về các bản cập nhật bảo mật trong tương lai thông qua danh sách gửi thư nodejs-sec và nên tuân thủ quy trình báo cáo lỗ hổng đã được thiết lập trong chính sách bảo mật của dự án.