Hướng dẫn vá lỗi bảo mật PHP2Shell trên DirectAdmin
Thông tin từ bài viết CẢNH BÁO KHẨN CẤP: Lỗi hổng bảo mật PHP2Shell cho biết, PHP2Shell (bao gồm CVE-2026-109618 và CVE-2026-109619) là một lỗ hổng bảo mật cực kỳ nghiêm trọng nằm sâu trong lõi PHP. Lỗ hổng này cho phép tin tặc thực thi mã độc từ xa (RCE) và chiếm quyền điều khiển toàn bộ máy chủ mà không cần đến bất kỳ thông tin đăng nhập nào.
Trước rủi ro các website và toàn bộ dữ liệu hệ thống có thể bị đánh cắp hoặc phá hoại bất cứ lúc nào, việc cập nhật bản vá là giải pháp triệt để và cấp bách nhất hiện nay. Nhằm giúp các quản trị viên nhanh chóng bảo vệ hệ thống của mình khỏi đợt tấn công này,
Trong bài viết này, Long Vân sẽ hướng dẫn chi tiết cách nâng cấp PHP và vá hoàn toàn lỗ hổng PHP2Shell dành cho các máy chủ đang sử dụng hệ thống quản trị DirectAdmin.
Các bước cập nhật và vá lỗi PHP trên DirectAdmin
Bước 1: Kiểm tra các phiên bản PHP đang cài đặt
Đầu tiên, quý khách cần cập nhật CustomBuild và kiểm tra các phiên bản PHP hiện tại trên máy chủ:
da update
da build versions | grep -E "PHP|Latest"
Bước 2: Sao lưu PHP trước khi cập nhật
Để đảm bảo an toàn, hãy sao lưu thư mục PHP hiện tại trước khi tiến hành biên dịch lại (ví dụ bên dưới áp dụng cho PHP 8.1):
cp -a /usr/local/php81 /usr/local/php81.pre-20261021
Nếu máy chủ chạy nhiều phiên bản PHP, quý khách có thể dùng lệnh vòng lặp sau để sao lưu hàng loạt:
for dir in /usr/local/php[0-9]*; do cp -a "$dir" "${dir}.pre-$(date +%Y%m%d)"; done
Kiểm tra lại xem bản sao lưu đã được tạo thành công hay chưa:
ls -d /usr/local/php*.pre-*
Bước 3: Tiến hành Build (Biên dịch) lại PHP
Thực hiện lệnh sau để build lại từng phiên bản PHP (ví dụ build PHP 8.1 và lưu lại log quá trình cài đặt):
da build php 8.1 2>&1 | tee /var/log/build-php81.log
Bước 4: Kiểm tra lại phiên bản sau khi cập nhật
Sau khi tiến trình build hoàn tất, hãy kiểm tra lại phiên bản PHP để đảm bảo bản vá đã được cập nhật thành công (so sánh với số phiên bản an toàn đã công bố):
/usr/local/php81/bin/php -v
Cách khôi phục (Restore) nếu quá trình cập nhật bị lỗi
Trong trường hợp website không hoạt động sau khi cập nhật, quý khách có thể khôi phục lại bản sao lưu ở Bước 2 bằng chuỗi lệnh sau:
systemctl stop php-fpm81
mv /usr/local/php81 /usr/local/php81.patched
mv /usr/local/php81.pre-20261021 /usr/local/php81
systemctl start php-fpm81
Bước 5: Cấu hình tự động cập nhật bản vá (Tùy chọn)
Để tránh bỏ lỡ các bản vá bảo mật trong tương lai, quý khách có thể thiết lập CustomBuild tự động kiểm tra và nhận thông báo hàng ngày (Daily):
da build set cron yes
da build set cron_frequency daily
da build set email admin@example.com
da build set notifications yes
da build cron
Nếu muốn hệ thống tự động cài đặt các bản cập nhật phần mềm định kỳ (thay vì chỉ gửi thông báo), hãy sử dụng lệnh sau:
da build set updates yes
da build cron
* Lưu ý quan trọng: Trong quá trình hệ thống tự động build bản cập nhật, dịch vụ Web Server (Apache/HTTPD) có thể bị khởi động lại (restart) bất kỳ lúc nào gây gián đoạn nhẹ. Hãy cân nhắc thiết lập cronjob chạy ngoài giờ cao điểm hoặc duy trì thao tác thủ công nếu hệ thống của quý khách yêu cầu uptime tuyệt đối.