Hướng dẫn cập nhật pfSense xử lý lỗ hổng PHP2Shell

PHP2Shell là tên gọi của hai lỗ hổng nghiêm trọng trong PHP, mã định danh CVE-2026-109618 và CVE-2026-109619. Netgate xác nhận các lỗ hổng này ảnh hưởng đến pfSense do hệ thống sử dụng PHP cho giao diện quản trị WebGUI và dịch vụ Captive Portal.

Dưới đây là thông tin và hướng dẫn kiểm tra, cập nhật pfSense dành cho khách hàng đang sử dụng Cloud Server tại Long Vân.

I. Thông tin lỗ hổng và phạm vi ảnh hưởng

  • Tên lỗ hổng: PHP2Shell
  • Mã CVE: CVE-2026-109618 và CVE-2026-109619
  • Thành phần ảnh hưởng: PHP sử dụng bởi pfSense WebGUI và Captive Portal
  • Tác động: Có thể dẫn đến thực thi mã từ xa nếu dịch vụ PHP bị truy cập từ mạng không tin cậy.

Theo Netgate, pfSense WebGUI mặc định chỉ truy cập được từ mạng nội bộ LAN. Captive Portal cũng không được bật mặc định. Vì vậy, rủi ro tăng cao khi WebGUI được mở ra Internet hoặc Captive Portal phục vụ các thiết bị không tin cậy.

Lỗ hổng này ảnh hưởng đến phần mềm pfSense, không đồng nghĩa các Cloud Server đặt phía sau firewall tự động bị ảnh hưởng. Nếu máy chủ của quý khách tự cài PHP để chạy website hoặc ứng dụng, cần kiểm tra và cập nhật PHP riêng trên máy chủ đó.

II. Kiểm tra hệ thống có cần cập nhật hay không

1. Kiểm tra phiên bản pfSense

Đăng nhập vào giao diện WebGUI và ghi lại phiên bản pfSense đang sử dụng tại trang tổng quan hoặc mục cập nhật hệ thống.

Netgate đã cung cấp gói PHP cập nhật cho các phiên bản sau:

  • pfSense Plus 26.07  –>  PHP 8.5.12
  • pfSense Plus 26.03.1 –> PHP 8.5.12
  • pfSense CE 2.9.0 –> PHP 8.5.12
  • pfSense CE 2.8.1 –> PHP 8.3.36

Với phiên bản từ 2.7.0 cần thao tác update lên 2.8.1, quý khách có thể thao tác đổi repo về repo Long Vân đã chuẩn bị để việc cài đặt các gói cập nhật được nhanh hơn theo hướng dẫn ở dưới.

2. Kiểm tra quyền truy cập WebGUI từ WAN

Rà soát firewall rules trên giao diện WAN và xác nhận không có rule cho phép truy cập WebGUI từ Internet hoặc các mạng không tin cậy.

Quản trị WebGUI nên giới hạn trong mạng LAN, VPN hoặc các địa chỉ IP quản trị đã được cho phép. Không nên mở WebGUI trực tiếp ra Internet nếu không thực sự cần thiết.

3. Kiểm tra Captive Portal

Vào mục Services > Captive Portal để kiểm tra Captive Portal có đang được sử dụng hay không.

Nếu không sử dụng dịch vụ này, hãy tắt để giảm bề mặt tấn công. Nếu đang sử dụng, cần ưu tiên cập nhật pfSense sớm do Captive Portal có thể tiếp nhận kết nối từ các thiết bị chưa được xác thực.

III. Chuẩn bị trước khi cập nhật

1. Trước khi thực hiện cập nhật, quản trị viên nên:

– Sao lưu cấu hình pfSense.
– Lên lịch bảo trì để hạn chế gián đoạn dịch vụ.
– Bảo đảm có thể truy cập console nếu kết nối mạng bị gián đoạn.
– Nếu đang quản trị qua WireGuard, chuẩn bị phương án truy cập thay thế. Quá trình cập nhật có thể làm gián đoạn kết nối WireGuard.

Nếu nền tảng Cloud Server đang sử dụng có hỗ trợ snapshot, quý khách có thể tạo snapshot trước khi cập nhật để có phương án khôi phục khi cần thiết.

2. Hướng dẫn đổi repo pfsense để update version PFSense.

Bước 1. Mở cấu hình repo của pfsense với trình soạn thảo ee

ee /usr/local/etc/pkg/repos/pfSense.conf

Bước 2. Điều chỉnh thông tin repo và phiên bản muốn cập nhật

Cấu hình ban đầu :

Cấu hình sau chỉnh sửa:

→ ấn ESC → Enter → Enter để lưu và thoát trình chỉnh sửa

Lưu ý:

  • url: điều chỉnh sang cấu hình http://repo-pfsense.longvan.io/KÈM_PHIÊN_BẢN_CẦN_NÂNG_CẤP
  • mirror_type: thiết lập “none” vì mặc định srv chuyển về cân bằng tải pfsense mặc định

Bước 3. Cập nhật tải lại repo

pkg update -f

Bước  4. Tải trước gói để chuẩn bị nâng cấp

pkg-static -4 fetch -y -a

Bước 5. Nâng cấp hệ thống (upgrade pfsense)

pfSense-upgrade -d

sau khi chờ upgrade hoàn tất kiểm tra lại version PFsense và thao tác cập nhật gói PHP.

IV. Cập nhật gói PHP trên pfSense

Netgate lưu ý gói PHP cập nhật cần được cài đặt qua **SSH hoặc console**. Không thực hiện cập nhật gói này thông qua WebGUI hoặc Nexus GUI.

Phương pháp 1: Cập nhật các gói và khởi động lại pfSense (khuyến nghị)

Đăng nhập vào shell pfSense qua SSH hoặc console, sau đó chạy:

pfSense-upgrade -c &&
pkg upgrade -y &&
pkg upgrade -fy pfSense-pkg-WireGuard &&
/etc/rc.reboot

pfSense sẽ cập nhật các gói, cài lại gói WireGuard nếu có và khởi động lại hệ thống. Trong quá trình này, các kết nối đi qua firewall có thể bị gián đoạn.

Phương pháp 2: Cập nhật gói và khởi động lại các dịch vụ WebGUI

Có thể dùng phương pháp này khi không muốn khởi động lại toàn bộ pfSense:

pfSense-upgrade -c &&
pkg upgrade -y &&
pkg upgrade -fy pfSense-pkg-WireGuard &&
/etc/rc.php-fpm_restart &&
/etc/rc.restart_webgui &&
/etc/rc.captiveportal_configure

Phương pháp 3: Cập nhật và khởi động lại WebGUI

Chỉ sử dụng phương pháp này nếu hệ thống không sử dụng Captive Portal

pfSense-upgrade -c &&
pkg upgrade -y &&
pkg upgrade -fy pfSense-pkg-WireGuard &&
/etc/rc.php-fpm_restart &&
/etc/rc.restart_webgui

V. Kiểm tra sau khi cập nhật

Sau khi quá trình cập nhật hoàn tất:

1. Đăng nhập lại vào WebGUI.
2. Kiểm tra hoạt động của WebGUI, VPN, firewall rules và các dịch vụ đang sử dụng.
3. Nếu có sử dụng Captive Portal, kiểm tra lại trang xác thực và kết nối của người dùng.
4. Mở shell và chạy lệnh sau để kiểm tra phiên bản PHP:

php -v

Đối chiếu phiên bản hiển thị với gói PHP đã cập nhật cho phiên bản pfSense tương ứng.

VI. Lưu ý dành cho khách hàng Cloud Server

– Lỗ hổng này liên quan đến PHP bên trong pfSense; việc sử dụng pfSense làm firewall không tự động làm cho các máy chủ Cloud Server phía sau bị nhiễm.
– Nếu WebGUI đang mở ra Internet hoặc hệ thống đang sử dụng Captive Portal, cần ưu tiên cập nhật.
– Tham khảo hướng dẫn cập nhật chính thức tại [Netgate – Critical PHP Security Update].

Như vậy, Long Vân đã hướng dẫn các bước kiểm tra và cập nhật pfSense để xử lý lỗ hổng PHP2Shell. Chúc quý khách thành công!