Lỗ hổng nghiêm trọng trong PHP bị rò rỉ: lỗi use-after-free cho phép thực thi mã từ xa
Một lỗ hổng heap use-after-free trong cơ chế session.upload_progress của PHP đã bị rò rỉ công khai, cho phép kẻ tấn công thực thi mã từ xa chỉ với cấu hình mặc định. Bài viết cung cấp hướng dẫn giảm thiểu tạm thời trước khi bản vá chính thức được phát hành.
Lỗ hổng nghiêm trọng trong PHP bị rò rỉ: lỗi use-after-free cho phép thực thi mã từ xa
Một lỗ hổng bảo mật nghiêm trọng trong PHP vừa bị rò rỉ công khai trước khi bản vá chính thức được phát hành. Lỗi heap use-after-free nằm trong cơ chế session.upload_progress có thể bị khai thác để thực thi mã từ xa, và đáng lo ngại hơn là cấu hình mặc định của PHP đã đủ để kích hoạt lỗ hổng này.
Bản chất kỹ thuật của lỗ hổng
Theo phân tích được công bố, lỗ hổng nằm trong hàm php_session_rfc1867_callback tại tệp ext/session/session.c. Cụ thể, trình xử lý session.upload_progress lưu trữ hai con trỏ bucket zval thô (post_bytes_processed và current_file_bytes_processed) trỏ trực tiếp vào các HashTable đang hoạt động.
Vấn đề xảy ra khi vòng đời của request giải phóng các mảng này ngay dưới chân kẻ tấn công. Một request POST multipart nhanh sẽ kích hoạt cả hai bộ nhớ đệm, sau đó lần gọi update() thứ hai sẽ đọc lại tệp session và hủy cây dữ liệu đã giải mã trước đó thông qua destructor HashTable.
Con trỏ bucket đã bị giải phóng sau đó được cấp phát lại, khiến con trỏ cũ trỏ tới một cấu trúc zend_fcall_info / zend_internal_function do kẻ tấn công kiểm soát. Kết quả là lệnh gọi zend_call_function được thực thi — tương đương với việc gọi system() trên máy chủ.
Nhóm nghiên cứu đã xác minh toàn bộ chuỗi khai thác trên mã nguồn thực tế của PHP phiên bản 8.4.4 và 8.2.34.
Cấu hình mặc định là đủ để bị tấn công
Điều khiến lỗ hổng này đặc biệt nguy hiểm là không cần cấu hình đặc biệt nào. Chỉ với các thiết lập mặc định:
session.upload_progress.enabled=1- Tiền tố và tên mặc định
freq=1%,min_freq=1
Kẻ tấn công đã có thể kích hoạt chuỗi khai thác. Bộ công cụ được phát hành kèm theo bài phân tích còn hỗ trợ trích xuất độ lệch ký hiệu (--syms) cho từng bản build, vì khoảng cách giữa zval_ptr_dtor và zend_call_function thay đổi theo mỗi bản dựng.
Hướng dẫn giảm thiểu tạm thời
Tác giả bài phân tích đã công bố các bước giảm thiểu có thể áp dụng ngay trong tối nay, trước khi bản vá chính thức ra mắt:
1. Kiểm kê toàn bộ hệ thống PHP
Xác định mọi máy chủ và phiên bản đang chạy bằng lệnh php -v. Lưu ý rằng các hệ thống dùng PHP 7.x trở xuống sẽ không nhận được bản vá, nên cần lên kế hoạch nâng cấp.
2. Áp dụng biện pháp chặn tạm thời
Thêm dòng sau vào php.ini, .user.ini hoặc .htaccess:
session.upload_progress.enabled = Off
Sau đó khởi động lại PHP-FPM hoặc máy chủ web. Theo phân tích, biện pháp này đóng một trong hai con đường tấn công khả thi.
3. Giới hạn upload multipart ở tầng biên
Con đường tấn công thứ hai nằm ngay trong bộ phân tích multipart, hoạt động với mọi POST multipart/form-data bất kể thiết lập ở trên. Nếu có WAF hoặc reverse proxy, hãy siết chặt kiểm tra hoặc giới hạn tần suất các request multipart POST tới những điểm cuối không cần upload.
4. Vá ngay khi bản vá xuất hiện
Các phiên bản ổn định hiện tại gồm 8.5.11, 8.4.26, 8.3.35 và 8.2.34. Nếu dùng dịch vụ hosting quản lý, cần xác nhận lịch trình vá với nhà cung cấp ngay hôm nay.
Vì sao thông tin được công bố miễn phí
Tác giả bài phân tích, tự nhận là một cá nhân đơn lẻ, nhấn mạnh rằng biện pháp giảm thiểu trước khi có bản vá không nên là đặc quyền của người trả phí thuê bao.
"Các tổ chức dễ bị tổn thương nhất trong khoảng thời gian giữa rò rỉ và bản vá chính là những nhóm nhỏ không có hợp đồng tình báo mối đe dọa doanh nghiệp. Những bước trên không tốn đồng nào. Hãy dành tối nay để giảm thiểu rủi ro, thay vì ngày mai phải xử lý sự cố."
Góc nhìn cho người dùng Việt Nam
Với cộng đồng lập trình viên và các doanh nghiệp vừa và nhỏ tại Việt Nam — vốn phổ biến sử dụng PHP cho website, hệ thống quản lý nội dung và các ứng dụng web — lỗ hổng này là lời cảnh báo đáng chú ý. Nhiều hệ thống đang chạy PHP trên các bản phân phối Linux phổ biến, thường qua các gói như LiteSpeed lsphp hoặc PHP mặc định của distro.
Khuyến nghị cấp thiết cho các quản trị viên hệ thống tại Việt Nam:
- Kiểm tra ngay xem
session.upload_progress.enabledcó đang bật trên các máy chủ hay không - Áp dụng biện pháp chặn tạm thời ngay trong tối nay nếu chưa có bản vá
- Theo dõi thông báo chính thức từ đội ngũ bảo mật PHP để cập nhật bản vá
- Rà soát nhật ký truy cập để phát hiện các request multipart đáng ngờ tới các trang không có chức năng upload
Bài phân tích cũng cho biết sẽ cập nhật thêm sau khi thông báo chính thức được công bố, bao gồm việc xác nhận liệu phân tích nguyên nhân gốc rễ có chính xác hay không.
Bài viết liên quan

Công nghệ
Nộp đơn xin việc lẽ ra nên khó hơn. Thật đấy
25 tháng 8, 2026

Công nghệ
Mô hình AI hàng đầu giỏi Vật lý đến đâu? Nghiên cứu mới chỉ ra các bài kiểm tra hiện hành đang đánh giá sai
16 tháng 9, 2026

Công nghệ
Nhà mạng lo lắng thay thế Chrome trở thành nguồn tiêu thụ tài nguyên DNS kỳ lạ
21 tháng 10, 2026