Lỗ hổng bảo mật PHP-FPM chiếm dụng quyền root (CVE-2021-21703)
PHP-FPM (FastCGI Process Manager) là một chương trình phiên dịch PHP khi chạy trang web cho web server. PHP-FPM phát triển qua sự mở rộng của CGI . PHP-FPM có chức năng tối ưu quá trình xử lý thông tin của các máy chủ web, hỗ trợ việc xử lý thông tin từ nhiều trang web trong cùng một khoảng thời gian một cách nhanh nhất. Với tốc độ xử lý PHP script nhanh cùng tính năng tối ưu hoá cho những trang web có kích thước lớn, giúp tăng lượng truy cập hiện tại php-fpm đang được sử dụng rất rộng rãi.
Tuy nhiên theo công bố mới nhất, PHP-FPM đang có lỗ hổng bảo mật nghiêm trọng, có thể bị khai thác để chiếm dụng quyền root đã tồn tại được hơn 10 năm.
Lỗ hổng này cho phép một tiến trình có đặc quyền thấp có thể đọc và ghi một mảng con trỏ được sử dụng bởi tiến trình main chạy dưới quyền root, thông qua bộ nhớ dùng chung. Kẻ tấn công có thể lợi dụng sự cố này để thay đổi số nguyên 32 bit từ 0 thành 1 trong bộ nhớ của tiến trình main hoặc xóa một vùng bộ nhớ. Bằng cách lợi dụng , khai thác lỗi này hacker có thể tiếp cận và khiến các tiền trình Main thực thi mã và qua đó leo thang đặc quyền.
Theo thông tin từ phía PHP, các phiên bản ảnh hưởng bao gồm PHP 7.2.x, 7.3.x đến PHP 7.4.24 và từ 8.0.x đến 8.0.11. Trang chủ chính thức của PHP đã phát hành phiên bản vá lỗi PHP 7.4.25 và 8.0.12 vào ngày 21/10/2021. Các lỗi này được các nhà nghiên cứu bảo mật báo cáo hồi tháng 05/2021. Sau khi vá lỗi xong cách đây 7 ngày, họ đã công khai lỗi với mã định danh CVE-2021-21703. Tuy nhiên theo thông tin từ các diễn đàn, Twitter thì hầu như các phiên bản php đều bị ảnh hưởng.
Một số link bài viết về thông tin lỗi này:
https://bugs.php.net/bug.php?id=81026
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-21703
https://security-tracker.debian.org/tracker/CVE-2021-21703
Đối với các VPS sử dụng webserver là nginx và php-fpm bạn có thể cập nhật, build lại phiên bản php mới nhất để khắc phục lỗi này. Tuỳ thuộc vào Control panel , stack script bạn đang sử dụng sẽ có những cách cập nhật chủ động hay thủ công khác nhau.
Bạn chạy lệnh sau để check VPS có hoạt động với php-fpm hay không.
ps aux | grep php-fpm | grep process
Hướng dẫn khắc phục với VPS sử dụng Directadmin
Đối với VPS sử dụng Directadmin, thông thường mặc định bạn sẽ sử dụng mod_php hoặc nếu như bạn sử dụng openlitespeed bạn không cần cập nhật .
Đối với các VPS sử dụng Directadmin với nginx là webserver và sử dụng php-fpm trên một hoặc nhiều phiên bản, bạn nên build lại php trong custombuild của directadmin.
Cách 1. Chạy lệnh kiểm tra tự động
Bạn copy toàn bộ câu lệnh phía dưới và dán vào terminal VPS, lệnh sẽ kiểm kiểm tra và cập nhật php nếu như VPS directadmin của bạn có sử dụng php-fpm. Nếu không sử dụng php-fpm , câu lệnh sẽ không cập nhật php.
Việc cập nhật php sẽ diễn ra khoảng 30 phút tới 1 tiếng với custombuild trên directadmin bạn vui lòng giữ kết nối SSH tới VPS khi đang cập nhật.
Lưu ý: với custombuild chỉ hoạt động ổn định đối với VPS từ 2GB ram trở lên, đối với VPS dưới 2GB ram, bạn vui lòng nâng cấp ram trước khi chạy lệnh cập nhật.
if systemctl is-active --quiet php-fpm*; then
echo -e "\nPhat hien tien trinh php-fpm, chuan bi cap nhat sau 10s…\n"
sleep 10;
cd /usr/local/directadmin/custombuild
./build update
./build php n
./build rewrite_confs
else
echo "Khong phat hien php-fpm , Thoat chuong trinh"
fi
Cách 2: kiểm tra và cập nhật thủ công Directadmin
Cách Để kiểm tra VPS có chạy php-fpm không bạn sử dụng lệnh sau :
ps aux | grep php-fpm | grep process
Nếu không hiển thị gì có nghĩa là bạn không sử dụng php-fpm và không cần cập nhật, còn nếu có hiển thị có nghĩa VPS bạn có sử dụng php-fpm .
Bạn có thể cập nhật thủ công php-fpm bằng các lệnh sau :
cd /usr/local/directadmin/custombuild
./build update
./build php n
./build rewrite_confs
Chúc các bạn sớm cập nhật lỗi php thành công nhé!