Công bố Exploit công khai cho lỗ hổng Pre-Auth RCE trên vBulletin đã được vá

Chi tiết exploit công khai được công bố vào ngày 27 tháng 7 cho thấy cách một yêu cầu không xác thực có thể kích hoạt hàm eval() của PHP trong vBulletin để thực thi mã từ xa mà không cần tài khoản hay quyền quản trị. SSD Secure Disclosure xác nhận các phiên bản 6.2.1 và 6.1.6 trở về trước bị ảnh hưởng bởi lỗ hổng RCE nghiêm trọng này.
vBulletin Security Vulnerability
Lỗ hổng thực thi mã từ xa nghiêm trọng vừa được công bố mã khai thác công khai trên vBulletin.

Chi tiết về mã khai thác (exploit) công khai được công bố vào ngày 27 tháng 7 cho thấy cách một yêu cầu không được xác thực có thể tiếp cận hàm eval() của PHP bên trong vBulletin và thực thi mã trên máy chủ diễn đàn chưa được vá lỗi. Cuộc tấn công này không yêu cầu tài khoản, quyền truy cập quản trị hay bất kỳ tương tác nào từ người dùng khác.

SSD Secure Disclosure liệt kê các phiên bản vBulletin 6.2.1 trở về trước, và 6.1.6 trở về trước là những phiên bản bị ảnh hưởng, nhưng không đưa ra giới hạn phiên bản thấp nhất. vBulletin đã phát hành các bản vá bảo mật cho các phiên bản 6.2.1, 6.2.0 và 6.1.6 vào cuối tháng 6 và đã phát hành phiên bản sửa lỗi 6.2.2 vào ngày 1 tháng 7, gần bốn tuần trước khi mã khai thác được công bố rộng rãi.

Quản trị viên đang vận hành các cài đặt tự lưu trữ (self-hosted) nên áp dụng bản vá cho nhánh phiên bản của mình hoặc nâng cấp lên 6.2.2. vBulletin cho biết các trang web Cloud của họ đã được vá lỗi để chống lại lỗ hổng này.

SSD chưa ghi nhận việc khai thác tích cực trong thực tế. Tính đến ngày 27 tháng 7 năm 2026, chưa có nguồn tin nào xác nhận các cuộc tấn công thực tế và CVE-2026-61511 cũng không nằm trong danh mục Các lỗ hổng bị khai thác đã biết của CISA. Công ty đã công bố một bản thử nghiệm (proof-of-concept) tương tác, nhưng đoạn mã được đăng tải có chứa một lỗi ký tự nhỏ – một chữ cái nằm ở vị trí đáng lẽ là chữ số – khiến nó không thể chạy ngay lập tức nếu không sửa lỗi.

Lỗi này rất dễ khắc phục và không ảnh hưởng đến bản chất của lỗ hổng bên dưới. Một điều mà hồ sơ công khai chưa làm rõ là liệu lỗ hổng có bị lợi dụng trong khoảng thời gian bốn tuần giữa lúc có bản vá cuối tháng 6 và lúc công bố ngày 27 tháng 7 hay không; cả báo cáo của SSD lẫn thông báo của vBulletin đều không đề cập đến khoảng thời gian này.

Phân tích kỹ thuật lỗ hổng CVE-2026-61511

Phân tích kỹ thuật của SSD xác định đây là mã lỗi CVE-2026-61511, một lỗ hổng thực thi mã từ xa (remote code execution) không cần xác thực trong template engine của vBulletin. Tại thời điểm viết bài, chưa có hồ sơ nào từ CVE.org hay National Vulnerability Database (NVD), do đó cũng chưa có điểm đánh giá mức độ nghiêm trọng chính thức; NVD đã ngừng cập nhật thường xuyên điểm CVSS cho các mã CVE mới từ đầu năm nay.

SSD ghi nhận công lao cho một nhà nghiên cứu độc lập không tên, mặc dù mã khai thác được công bố có chữ ký của "EgiX" – biệt danh của Egidio Romano, người từng tiết lộ chuỗi thực thi mã trong template-engine của vBulletin vào năm 2025.

Đoạn mã dễ bị tổn thương nằm trong tệp /includes/vb5/template/runtime.php, bên trong phương thức vB5_Template_Runtime::runMaths(), nơi xử lý các phép toán nội dòng trong các template. Hàm này loại bỏ các ký tự nằm ngoài một tập hợp hạn chế, sau đó chuyển phần còn lại trực tiếp vào hàm eval(). Bộ lọc chặn các chữ cái nhưng cho phép các chữ số, dấu ngoặc đơn, phép nối chuỗi, các toán tử toán học và toán tử nhị phân như XOR – đủ để tái cấu trúc các chuỗi PHP và các tên hàm có thể gọi mà không cần dùng đến bất kỳ chữ cái nào, sử dụng một kỹ thuật giới hạn ký tự mà báo cáo gọi là "phpfuck".

Chuỗi khai thác Pre-Authentication

Việc tiếp cận lỗ hổng này không yêu cầu quyền truy cập vào bảng quản trị (admin panel). vBulletin hiển thị các template qua một route công khai là ajax/render/pagenav, và template pagenav mặc định sẽ sao chép giá trị pagenav[pagenumber] do người truy cập cung cấp vào một thẻ {vb:math}, sau đó chuyển nó đến hàm runMaths().

Chuỗi liên kết này chính là thứ biến một lỗi template thành khả năng thực thi mã từ xa tiền xác thực (pre-authentication RCE). PoC của SSD sử dụng nó để xây dựng lại hàm system của PHP và chạy một lệnh của hệ điều hành, sau đó trả kết quả về trong phản hồi HTTP.

The Hacker News đã tái hiện logic lọc và đánh giá được công bố trên môi trường nội bộ để kiểm tra lỗi được báo cáo. Khi lỗi typo được sửa, một payload thử nghiệm strlen() vô hại đã được thực thi; nếu không sửa, bộ lọc sẽ loại bỏ chữ cái thừa và để lại mã PHP sai cú pháp. Thử nghiệm này đã xác nhận lỗ hổng trong việc xây dựng biểu thức, chứ không phải một cuộc tấn công hoàn chỉnh vào máy chủ vBulletin đang hoạt động.

Khuyến nghị cho nhà phát triển và quản trị viên

Biểu ngữ của chính mã khai thác gọi vấn đề này là một Zero-Day, nhưng các bản vá của nhà cung cấp và phiên bản 6.2.2 đã ra mắt trước khi công bố công khai gần bốn tuần. Mã khai thác này là mới, nhưng lỗ hổng mà nó nhắm tới đã được khắc phục. Với việc Cloud đã được vá và các bản sửa lỗi cho bản tự lưu trữ đã có từ gần một tháng trước, rủi ro thực tế tập trung vào các diễn đàn tự lưu trữ, kết nối internet mà chưa cập nhật phiên bản mới.

Các chuyên gia phòng thủ có thể xem xét các yêu cầu POST mang theo routestring=ajax/render/pagenav với các giá trị pagenav[pagenumber] dài bất thường hoặc chứa nhiều toán tử, một dấu hiệu nhận diện được rút ra từ PoC công khai thay vì hướng dẫn phát hiện từ nhà cung cấp.

Đây cũng chính là "góc khuất" của vBulletin từng tạo ra các lỗ hổng thực thi mã tiền xác thực trước đây. Chuỗi lỗ hổng vào tháng 5 năm 2025, CVE-2025-48827CVE-2025-48828, cũng lạm dụng template engine thông qua một đường dẫn khác và đã thu hút các nỗ lực khai thác chỉ trong vòng vài ngày sau khi công bố, sau khi nhà cung cấp đã âm thầm vá lỗi vài tháng trước đó nhưng nhiều diễn đàn không bao giờ áp dụng bản sửa lỗi.

Mọi vòng lặp đều diễn ra theo cùng một cách: Một bản sửa lỗi âm thầm được tung ra trước, một mã khai thác hoạt động xuất hiện vài tuần sau đó, và khi đó nhiều diễn đàn kết nối internet vẫn đang chạy các bản build lỗi thời.