Ngày 21/10/2026, PHP phát hành bản vá khẩn cho hai lỗ hổng thực thi mã từ xa, không cần đăng nhập. Mức CVSS v4.0 là 9.2. Máy chủ chạy aaPanel với Nginx, Apache hoặc OpenLiteSpeed đều nằm trong phạm vi ảnh hưởng. Việc cần làm là nâng từng phiên bản PHP đang cài trong App Store, rồi gán lại phiên bản cho website trên giao diện.
Bài viết ưu tiên thao tác trên panel: làm mới danh sách ứng dụng, bấm Update, khởi động lại PHP, kiểm tra phpinfo, đổi PHP cho từng site. Không cần SSH nếu quá trình cập nhật chạy bình thường.
Tóm tắt việc cần làm trên aaPanel
Cập nhật ngay các nhánh còn nhận bản vá: PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35. Trên aaPanel, bản vá cũng đã được đưa vào PHP 8.1.35, 8.0.27 và 7.4.34. PHP 7.3 trở xuống không có gói chính thức.
Hai mã lỗ hổng: CVE-2026-109618 (lỗi khi hết bộ nhớ) và CVE-2026-109619 (trạng thái nội bộ còn sót giữa các request trên cùng worker). Nguy cơ cao nhất với Apache mod_php. PHP-FPM trên Nginx, php-cgi, FrankenPHP và LiteSpeed vẫn phải vá.
Không có cấu hình tạm nào thay thế được bản vá. Sửa php.ini chỉ giảm một số đường tấn công. Máy còn PHP 8.2 nên lên 8.3 hoặc 8.5 trước 31/12/2026, vì nhánh 8.2 hết hỗ trợ bảo mật vào ngày đó.
Trước khi bấm Update, chụp snapshot VPS tại nhà cung cấp cloud. Cập nhật lần lượt từng PHP đã cài, không bỏ sót phiên bản phụ.
Hai lỗ hổng cần hiểu trước khi bấm Update
CVE-2026-109618 xảy ra khi request chạm memory_limit đúng thời điểm PHP đang khởi tạo dữ liệu nội bộ. Phần dọn request có thể coi dữ liệu dở dang là hợp lệ. Trên mod_php, tấn công đã được chứng minh trước khi mã website chạy, kể cả cấu hình mặc định. PHP-FPM xác nhận thực thi mã qua một số đường trong ứng dụng.
CVE-2026-109619 xảy ra khi fatal error để lại con trỏ trỏ vào bộ nhớ của request trước. Worker xử lý request sau dùng lại vùng nhớ đã giải phóng. Hệ quả là crash worker hoặc thực thi mã trên ứng dụng thật.
Cả hai lỗi nằm ở quản lý bộ nhớ và xử lý lỗi, hai lớp gần như mọi request HTTP đều đi qua. WordPress, Laravel, Magento, phpMyAdmin trên aaPanel đều phụ thuộc lớp này.
Bản vá theo nhánh PHP trên aaPanel
Đối chiếu số phiên bản sau khi cập nhật trong phpinfo, không chỉ nhìn nhãn 8.4 hay 8.5 trên danh sách website.
PHP 8.5: tối thiểu 8.5.12. Đây là nhánh đang được hỗ trợ đầy đủ lâu nhất trong các bản ổn định hiện có trên panel.
PHP 8.4: tối thiểu 8.4.27. Nhiều site WordPress trên aaPanel đang dùng nhánh này.
PHP 8.3: tối thiểu 8.3.36. Nhánh này đã chuyển sang giai đoạn chỉ vá bảo mật.
PHP 8.2: tối thiểu 8.2.35. Hết hỗ trợ bảo mật ngày 31/12/2026. Vá xong vẫn nên lên 8.3 hoặc 8.5.
PHP 8.1: aaPanel đã có gói 8.1.35. Upstream không còn duy trì nhánh này. Dùng bản vá panel rồi lập lịch nâng 8.3+.
PHP 8.0: aaPanel có 8.0.27. Chỉ mang tính vá tạm cho app cũ.
PHP 7.4: aaPanel có 7.4.34. Plugin ionCube, theme cũ, mã không tương thích 8.x thường kẹt ở đây. Vá xong vẫn phải có kế hoạch rời 7.4.
PHP 7.3 trở xuống: không có gói Update. Chỉ còn giảm thiểu cấu hình và tách site ra máy đã vá, hoặc nâng mã nguồn rồi cài PHP mới.
Máy đang cài nhiều PHP thì mỗi bản là một gói riêng trong App Store. Site chạy 8.3 không tự hưởng bản vá của 8.4. Phải Update đúng gói mà website đang dùng.
Chuẩn bị trên giao diện trước khi cập nhật
Đăng nhập aaPanel bằng tài khoản quản trị. Ghi lại danh sách website và PHP đang gắn cho từng site: vào Website, cột PHP hiện số phiên bản. Ảnh chụp màn hình danh sách này để đối chiếu sau.
Vào App Store, chọn Installed, tìm các dòng PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5. Bấm tên gói, mở phpinfo. Dòng PHP Version phải ghi đủ ba số, ví dụ 8.4.25. Nếu thấp hơn mốc vá ở trên, gói đó cần Update.
Sao lưu trên panel: Website, bấm Backup của từng site quan trọng. Database, xuất bản sao MySQL. Snapshot ổ đĩa tại trang quản lý VPS quan trọng hơn backup file, vì quá trình compile PHP có thể làm php-fpm dừng giữa chừng.
Thông báo bảo trì ngắn nếu site bán hàng. Compile PHP trên aaPanel thường mất 5 đến 20 phút mỗi phiên bản, tùy CPU. Cập nhật song song nhiều PHP trên máy yếu dễ hết RAM.
Nếu webserver là OpenLiteSpeed, kiểm tra ghi chú của gói PHP 8.5: một số bản panel tạm thời chưa hỗ trợ 8.5 trên OLS. Khi đó vá 8.4.27 hoặc 8.3.36, đừng ép cài 8.5 khi nút cài báo không tương thích.
Cách cập nhật PHP trên giao diện aaPanel
Bước 1. Mở App Store trên menu trái.
Bước 2. Bấm Update App List ở góc trên bên phải. Đợi danh sách phần mềm tải lại. Đây là bước nhiều người bỏ. Nếu không làm mới, nút Update không hiện dù gói vá đã có trên kho.
Bước 3. Chọn nhóm Installed, hoặc Deployment rồi tìm PHP. Ô Search App gõ php để lọc nhanh.
Bước 4. Tại từng PHP đang cài, nếu có nút Update thì bấm. Xác nhận khi hộp thoại hiện ra. Panel sẽ tải mã nguồn, biên dịch và cài đè nhánh đó. Theo dõi thanh tiến trình. Không đóng tab, không reboot VPS lúc này.
Bước 5. Lặp lại Update cho mọi PHP đã cài. Máy có 8.1, 8.2 và 8.4 thì cập nhật đủ ba gói.
Bước 6. Khi thanh tiến trình báo xong, bấm tên PHP vừa cập nhật để vào trang quản lý. Mở Service, bấm Restart. Làm lần lượt từng phiên bản. aaPanel khuyến nghị restart PHP thủ công sau khi đổi cấu hình hoặc cài bản mới.
Bước 7. Trong cùng trang quản lý, mở phpinfo. Dòng PHP Version phải khớp mốc vá: 8.5.12, 8.4.27, 8.3.36, 8.2.35, 8.1.35, 8.0.27 hoặc 7.4.34. Loaded Configuration File trỏ tới php.ini của đúng nhánh, thường dạng /www/server/php/84/etc/php.ini.
Bước 8. Vào Website. Cột PHP của từng domain phải vẫn đúng nhánh bạn muốn. Nếu chủ đích chỉ vá, không đổi major version, số trên cột vẫn là 8.4 nhưng phpinfo đã là 8.4.27. Nếu muốn rời 8.2, bấm số PHP trên dòng site, chọn 8.3 hoặc 8.4 hoặc 8.5 đã cài, Save, rồi tải lại trang chủ site.
Bước 9. Với WordPress, đăng nhập wp-admin, mở Site Health hoặc Tool để xác nhận PHP version. Thử form liên hệ, giỏ hàng, trang có upload. Với Laravel, mở một URL chính và trang login.
Nếu nút Update không xuất hiện sau khi làm mới danh sách, bấm Update App List lần nữa, đợi vài phút rồi tải lại App Store. Kho gói từng quá tải ngay sau ngày phát hành. Kiểm tra phiên bản panel ở góc dưới hoặc Settings. Panel quá cũ nên nâng panel trước, rồi mới Update PHP.
Gán PHP cho website và cài extension trên giao diện
Vá xong nhánh hiện tại là đủ để đóng lỗ hổng. Nếu site còn 7.4 hoặc 8.1, nên chuyển sang 8.3+ sau khi kiểm tra plugin.
Vào Website, bấm tên domain, tìm mục PHP version. Chọn phiên bản đã cài và đã vá. Save. Nginx hoặc Apache trên aaPanel sẽ trỏ site sang php-fpm của nhánh mới.
Cài PHP mới lần đầu: App Store, Deployment, chọn PHP 8.4 hoặc PHP 8.5, Install. Nên chọn compiled nếu Quick Install không hiện trong Installed sau vài phút. Đợi biên dịch xong mới gán cho site.
Extension hay thiếu sau khi cài mới: fileinfo, opcache, intl, redis, memcached, imap, exif, sl. Trong trang quản lý PHP, mở Install extensions, cài từng cái site đang dùng. WordPress thường cần fileinfo, opcache, curl, gd, mbstring, zip, mysqli. Magento và Laravel thường cần intl, soap, bcmath.
phpMyAdmin cũng chọn PHP riêng trong App Store, mục phpMyAdmin, PHP version. Đặt cùng nhánh đã vá để không để một SAPI cũ phục vụ tool quản trị.
PHP CLI trên panel (chạy composer, cron) có thể khác PHP của website. Trong Website, tìm PHP CLI nếu panel có mục này, chọn cùng nhánh đã vá. Cron gọi php /www/wwwroot/…/wp-cron.php sẽ dùng CLI. Để CLI cũ là để hổng bảo mật trên tác vụ nền.
Kiểm tra sau cập nhật
phpinfo trên panel là nguồn đúng. Không tin mỗi nhãn 8.4 trên cột Website.
Tạo file tạm info.php trong Files, thư mục site, nội dung gọi phpinfo, truy cập https://ten-mien/info.php từ trình duyệt, đối chiếu PHP Version, rồi xóa file ngay.
Xem Logs trong trang PHP nếu site 502. FPM chưa lên sau compile thường để lại lỗi socket. Bấm Start hoặc Restart ở Service.
Một số máy sau Update xuất hiện hai dòng PHP trùng số trong App Store. Đó là lỗi hiển thị đã được người dùng báo. Đừng Uninstall đại. Kiểm tra Website còn site nào gắn nhánh đó không, Restart service, tải lại App Store. Chỉ gỡ dòng thừa khi đã chắc không còn site dùng và đã có snapshot.
Site trắng trang sau khi đổi 7.4 sang 8.4 thường do plugin hoặc theme, không do bản vá. Trả PHP về nhánh cũ đã vá trên cùng menu PHP version, rồi xử lý plugin trước khi nâng major.
Khi nút Update báo lỗi biên dịch
Compile thất bại thường dừng ở thiếu thư viện: libcurl, gd, xml, zip, onig, openssl. Panel ghi log. Trên giao diện, mở Terminal của aaPanel nếu có, hoặc xem thông báo cuối hộp tiến trình.
Máy Ubuntu hoặc Debian hay thiếu libcurl4-openssl-dev, libxml2-dev, libsqlite3-dev, libonig-dev, libzip-dev, libssl-dev, libgd-dev. Máy AlmaLinux, Rocky, CentOS hay thiếu gd-devel và các gói devel tương ứng. Cài xong dependency thì quay lại App Store, bấm Update lần nữa, không Uninstall PHP đang chạy.
Hết dung lượng /tmp hoặc /www/server/php trong lúc compile cũng làm Update fail. Kiểm tra dung lượng ổ ở Home của panel trước khi thử lại.
OpenLiteSpeed dùng lsphp, khác php-fpm của Nginx. Nếu Update gói PHP Nginx thành công mà site OLS vẫn hiện phiên bản cũ, mở gói OpenLiteSpeed trong Deployment, kiểm tra PHP gắn với OLS, restart OpenLiteSpeed trên cùng trang Service.
Nếu chưa cập nhật được ngay, chỉnh cấu hình trên giao diện
Chỉ dùng khi Update đang lỗi hoặc đang chờ snapshot. Không coi đây là vá xong.
Vào App Store, bấm PHP đang phục vụ website, mở Configuration file. Đó là php.ini của nhánh.
Với CVE-2026-109618: tăng hạn chế POST. Site không upload file, đặt post_max_size = 8M. Site cần upload, đặt post_max_size = 32M và upload_max_filesize nhỏ hơn post_max_size. Save, Restart PHP. memory_limit = -1 giảm một đường tấn công nhưng ứng dụng vẫn có thể ghi đè. Ưu tiên FPM profile: mở FPM profile, thêm php_admin_value[memory_limit] = -1 nếu panel cho sửa pool, để website không đổi lại hạn mức.
Với CVE-2026-109619: trong php.ini đặt session.upload_progress.enabled = 0. PHP 8.5 thêm fatal_error_backtraces = 0. Save, Restart PHP ở Service. Không dựa vào disable_functions hay display_errors. Không dùng Files để tạo .user.ini cho hai chỉ thị này, vì chúng phải có hiệu lực trước khi PHP phân tích request.
Giới hạn kích thước request ở Nginx hoặc Apache trong mục Conf của website, nếu panel có Limit traffic hoặc Timeout. Tắt site không cần thiết trong cột Status cho đến khi PHP đã vá.
Lịch hỗ trợ và việc nên làm sau ngày vá
PHP 8.5: hỗ trợ đầy đủ đến 31/12/2027, bảo mật đến 31/12/2029.
PHP 8.4: hỗ trợ đầy đủ đến 31/12/2026, bảo mật đến 31/12/2028.
PHP 8.3: chỉ còn bảo mật đến 31/12/2027.
PHP 8.2: bảo mật đến 31/12/2026.
PHP 8.1 trở về trước: hết hỗ trợ phía dự án PHP. Bản vá trên aaPanel cho 8.1, 8.0, 7.4 là bước đệm.
PHP 8.6 đang ở giai đoạn ứng viên, dự kiến bản ổn định giữa tháng 11/2026. Không cài RC lên production để vá lỗ hổng này. Dùng 8.5.12 hoặc 8.4.27.
Sau khi vá, lên lịch thử staging trên 8.5, gỡ plugin không còn bảo trì, tắt display_errors trên production trong Configuration file, bật OPcache sau khi đã xác nhận bản vá.
Câu hỏi thường gặp
Chỉ sửa php.ini có đủ không? Không. Chỉ Update PHP mới đóng lỗ hổng.
aaPanel dùng LiteSpeed hoặc OpenLiteSpeed có cần vá không? Có. Mọi cách phục vụ PHP trên web đều trong phạm vi.
Có nhiều website, mỗi site một PHP, phải Update mấy lần? Bằng số PHP đang cài trong Installed. Sau đó kiểm tra cột PHP ở Website.
Update xong site vẫn hiện 8.4.25? Chưa Restart PHP, hoặc đang xem nhầm nhánh, hoặc trình duyệt cache phpinfo cũ. Mở phpinfo từ trang quản lý PHP trên panel.
Nên lên 8.5 hay chờ 8.6? Production vá ngay 8.5.12 hoặc 8.4.27. 8.6 chỉ khi đã có bản ổn định và plugin tương thích.
WordPress chạy được bản vá này chứ? Có. WordPress không chặn 8.4 hay 8.5. Lỗi sau khi đổi major version thường do plugin cũ, không do point release bảo mật.
Uninstall PHP rồi cài lại có sạch hơn Update không? Được, nhưng mất extension và có thể đứt socket FPM. Ưu tiên nút Update. Chỉ Uninstall khi gói hỏng hoàn toàn và đã có snapshot.
Cập nhật PHP trên aaPanel sau 21/10/2026 là làm mới App Store, bấm Update từng nhánh đã cài, Restart PHP, đối chiếu phpinfo với 8.5.12, 8.4.27, 8.3.36, 8.2.35 hoặc các gói 8.1.35, 8.0.27, 7.4.34 nếu còn app cũ. Xong việc này, máy mới ra khỏi cửa sổ tấn công của hai lỗ hổng RCE. Bước tiếp theo là rời PHP 8.2 và thấp hơn trước khi nhánh đó hết hạn vá.



