Bản vá bảo mật khẩn cấp cho PHP và Node.js: WireBoard đã làm gì, bạn cần làm gì?

Patrick Wunderlin
Patrick Wunderlin
Bản vá bảo mật khẩn cấp cho PHP và Node.js: WireBoard đã làm gì, bạn cần làm gì?

Hôm nay, ngày 21/10/2026, cả PHP và Node.js đều phát hành bản cập nhật bảo mật. Đáng chú ý nhất là các bản vá PHP: chúng khắc phục hai lỗ hổng nghiêm trọng cho phép kẻ tấn công chạy mã trên máy chủ web mà không cần đăng nhập. Các cuộc tấn công đã được ghi nhận ngay cả trước khi bản vá được công bố.

WireBoard đã cập nhật xong. Dịch vụ không bị gián đoạn. Bạn không cần làm gì với tài khoản WireBoard hay đoạn mã theo dõi.

Tuy nhiên, nếu website hoặc ứng dụng của bạn chạy PHP hay Node.js, hãy đọc tiếp và cập nhật ngay hôm nay.

Tóm tắt nhanh

Phiên bản cần cập nhật

Mức độ nghiêm trọng

PHP

8.5.12, 8.4.27, 8.3.36 hoặc 8.2.35 (hoặc gói đã được nhà cung cấp vá lỗi)

Nghiêm trọng (CVSS 9,2), thực thi mã từ xa không cần xác thực

Node.js

26.12.1, 24.22.1 hoặc 22.23.4

Cao

  • Bạn dùng WordPress, Magento, Drupal, Laravel hay ứng dụng PHP khác? Vậy là website của bạn đang chạy PHP. Hãy cập nhật ngay.

  • Bạn dùng hosting chia sẻ hoặc hosting có dịch vụ quản trị? Nhà cung cấp sẽ vá PHP. Hãy kiểm tra xem họ đã làm chưa.

  • Sau khi cập nhật PHP, hãy khởi động lại PHP-FPM hoặc Apache. Nếu không, phiên bản cũ vẫn tiếp tục chạy.

  • Bạn đang dùng phiên bản đã hết hỗ trợ (PHP 8.1 trở xuống, Node.js 25, 23, 20 trở xuống)? Các phiên bản này sẽ không có bản vá chính thức. Hãy lên kế hoạch chuyển sang phiên bản còn được hỗ trợ.


Chuyện gì đã xảy ra?

PHP: "PHP2Shell" (CVE-2026-109618 và CVE-2026-109619)

Đội ngũ PHP đã phát hành bản vá cho hai lỗ hổng nghiêm trọng, cùng được chấm 9,2 điểm theo thang CVSS v4.0:

  • CVE-2026-109618: cho phép thực thi mã từ xa thông qua lỗi bộ nhớ khi PHP hết bộ nhớ trong lúc xử lý yêu cầu.

  • CVE-2026-109619: cho phép thực thi mã từ xa do trạng thái toàn cục cũ còn lưu lại.

Cả hai lỗ hổng đều có thể bị khai thác từ xa, không cần xác thực, ngay với cấu hình mặc định. Chi tiết về lỗ hổng bị rò rỉ trên mạng một ngày trước lịch phát hành. Vì vậy, các hãng bảo mật đã ghi nhận hoạt động dò quét và tấn công website PHP trước khi có bản vá. Một số công ty đã chủ động tạm ngừng dịch vụ để phòng ngừa cho đến khi cập nhật được.

Tất cả các nhánh PHP còn được hỗ trợ đều bị ảnh hưởng nếu đang dùng phiên bản thấp hơn 8.2.35, 8.3.36, 8.4.27 hoặc 8.5.12 tương ứng.

Node.js: bản cập nhật bảo mật tháng 10/2026

Node.js đã phát hành bản vá cho các nhánh 26.x, 24.x và 22.x, khắc phục 10 lỗ hổng, trong đó có 4 lỗ hổng ở mức Cao. Đáng chú ý nhất là:

  • CVE-2026-111497: lỗi ghi ngoài giới hạn trong bộ giải nén Brotli, có thể cho phép thực thi mã từ xa. Ứng dụng có thể gặp lỗi này chỉ bằng việc gọi fetch() tới một máy chủ trả về dữ liệu nén Brotli.

  • CVE-2026-105483 / CVE-2026-106069: cho phép vượt qua bước xác minh tên máy chủ TLS bằng các cách viết địa chỉ IP bất thường.

  • CVE-2026-105482: dns.resolve có thể phân giải một tên miền khác với tên miền mà mã của bạn đã kiểm tra.

WireBoard đã làm gì?

Chúng tôi đã áp dụng cả hai bản cập nhật trên toàn bộ hạ tầng WireBoard trong hôm nay. Quá trình cập nhật không làm gián đoạn dịch vụ hay ảnh hưởng đến dữ liệu. Bạn vẫn sử dụng WireBoard như bình thường.

Bạn có bị ảnh hưởng không?

Bạn cần xử lý nếu website, ứng dụng hoặc máy chủ của bạn sử dụng:

  • PHP, trực tiếp hoặc thông qua CMS hay framework như WordPress, WooCommerce, Magento, Drupal, Joomla, Laravel hoặc Symfony.

  • Node.js, chẳng hạn ứng dụng Next.js, Nuxt, Express hoặc NestJS, hay bất kỳ dịch vụ backend hoặc máy chủ build nào chạy Node.

Chưa rõ hệ thống đang dùng gì? Hãy hỏi lập trình viên hoặc nhà cung cấp hosting. Chỉ cần hỏi: "Website của chúng tôi có chạy PHP hoặc Node.js không, và đã cập nhật bản vá bảo mật phát hành hôm nay chưa?"

Cách kiểm tra phiên bản

PHP

Điều cần kiểm tra là phiên bản PHP mà máy chủ web đang dùng. Lệnh php -v trong terminal hiển thị phiên bản PHP dòng lệnh, có thể khác với phiên bản trên máy chủ web.

  1. Tạo tệp info.php trong thư mục gốc của website, với nội dung <?php phpinfo();

  2. Mở tệp này bằng trình duyệt và xem mục PHP Version ở đầu trang.

  3. Xóa tệp ngay sau khi kiểm tra: tệp này hiển thị toàn bộ cấu hình máy chủ của bạn.

Nhiều bảng điều khiển hosting (cPanel, Plesk...) cũng hiển thị phiên bản PHP.

Lưu ý với các gói từ bản phân phối Linux: Ubuntu, Debian, RHEL và các bản phân phối tương tự thường đưa bản vá về phiên bản đang cung cấp mà không đổi số phiên bản. Khi đó, hãy tìm mã CVE trong nhật ký thay đổi của gói để xác nhận (xem bên dưới).

Node.js

node -v

Hệ thống đã được vá nếu kết quả là v26.12.1, v24.22.1, v22.23.4 hoặc phiên bản mới hơn trong cùng nhánh.

Cách cập nhật PHP

Chọn hướng dẫn tương ứng với cách cài PHP trên máy chủ của bạn.

Hosting chia sẻ hoặc hosting có dịch vụ quản trị

Nhà cung cấp quản lý PHP và chịu trách nhiệm áp dụng bản vá. Hãy xem trang trạng thái hoặc thông báo của họ, rồi xác nhận phiên bản bằng phpinfo() như hướng dẫn ở trên. Nếu bảng điều khiển cho phép chọn phiên bản PHP và bạn đang dùng 8.1 trở xuống, hãy chuyển sang 8.2 trở lên sau khi kiểm tra CMS và các plugin có tương thích hay không.

Ubuntu / Debian

sudo apt update
# replace 8.3 with the PHP branch you use
sudo apt install --only-upgrade 'php8.3-*'

# confirm the fix is included
apt changelog php8.3-fpm | grep -E 'CVE-2026-10961(8|9)'

Nếu lệnh cuối không trả về kết quả, kho gói của bản phân phối bạn dùng chưa có bản vá. Hãy kiểm tra thông báo bảo mật của Ubuntu hoặc trang theo dõi bảo mật của Debian rồi thử lại sau. Nếu dùng các gói PHP của Ondřej Surý, hãy cập nhật từ kho đó theo cách tương tự.

RHEL / AlmaLinux / Rocky Linux

dnf module list php          # see which PHP stream you're on
sudo dnf upgrade 'php*'

# confirm the fix is included
rpm -q --changelog php-fpm | grep -E 'CVE-2026-10961(8|9)'

Nếu dùng kho Remi, hãy cập nhật từ kho này.

Docker

Tải image mới không cập nhật các container đang chạy. Bạn cần tải image, build lại và tạo lại container:

docker pull php:8.3-fpm        # use your tag
docker compose build --pull
docker compose up -d

Để chắc chắn hơn, hãy chỉ định cố định phiên bản đã vá trong Dockerfile (ví dụ FROM php:8.3.36-fpm).

Tự biên dịch từ mã nguồn hoặc dùng Windows

Tải phiên bản đã vá từ php.net/downloads.

Sau đó, khởi động lại PHP

Đây là bước rất dễ bỏ sót. Các tiến trình đang chạy vẫn dùng PHP cũ cho đến khi được khởi động lại:

# PHP-FPM (Debian/Ubuntu; replace 8.3 with your branch)
sudo systemctl restart php8.3-fpm

# PHP-FPM (RHEL family)
sudo systemctl restart php-fpm

# Apache with mod_php
sudo systemctl restart apache2   # or httpd on RHEL

Sau đó kiểm tra lại bằng phpinfo() để chắc chắn phiên bản mới đã chạy.

"Chỉ đổi cấu hình thôi có được không?"

Không. Một số cách xử lý tạm thời đã được chia sẻ, chẳng hạn tắt session.upload_progress.enabled. Nhưng chúng chỉ giúp giảm rủi ro. Một lập trình viên trong nhóm phát triển lõi PHP đã công khai khẳng định rằng cập nhật PHP là cách khắc phục thực sự duy nhất. Nếu đã áp dụng biện pháp tạm thời, hãy giữ nguyên cho đến khi cập nhật xong, nhưng đừng vì thế mà bỏ qua bản cập nhật.

Cách cập nhật Node.js

Cách cài đặt

Cách cập nhật

nvm

Chạy nvm install 24 (hoặc 22 / 26), sau đó chạy nvm alias default 24

Bộ cài chính thức

Tải phiên bản mới nhất trong nhánh bạn dùng tại nodejs.org/en/download

Docker

Chỉ định cố định tag đã vá, ví dụ FROM node:24.22.1, rồi chạy docker pull và build lại. Tag không cố định phiên bản như node:24 vẫn có thể dùng bản cũ nếu bạn build lại từ image trong bộ nhớ đệm.

Homebrew

Chạy brew update && brew upgrade node (hoặc node@24 / node@22). Homebrew có thể cập nhật chậm vài giờ. Nếu cần gấp, hãy dùng nvm hoặc bộ cài.

Trình quản lý gói Linux

Cập nhật qua kho gói của bản phân phối hoặc kho NodeSource như bình thường.

Nền tảng hosting (Vercel, Netlify, Heroku, Render...)

Kiểm tra phần cài đặt môi trường chạy và thông báo của nền tảng. Phần lớn sẽ tự động cập nhật môi trường chạy đã vá, nhưng bạn có thể cần triển khai lại ứng dụng.

Sau khi cập nhật, khởi động lại ứng dụng (hoặc triển khai lại) và xác nhận bằng node -v.

Nếu bạn đang dùng phiên bản đã hết hỗ trợ

Bản vá chính thức chỉ được phát hành cho các phiên bản còn được hỗ trợ:

  • PHP: 8.2, 8.3, 8.4 và 8.5. PHP 8.1 trở xuống không có bản vá chính thức. Một số bản phân phối Linux và nhà cung cấp dịch vụ hỗ trợ dài hạn có trả phí vẫn đưa bản vá về phiên bản cũ, nên hãy kiểm tra với bên bạn đang dùng. Nếu không có, nâng cấp lên nhánh còn được hỗ trợ là lựa chọn an toàn. Lưu ý, PHP 8.2 chỉ còn nhận bản vá bảo mật đến ngày 31/12/2026.

  • Node.js: 22.x, 24.x và 26.x. Các nhánh như 25, 23 và 20 đã hết hỗ trợ và không có bản vá.

Nếu chưa thể nâng cấp ngay, hãy cân nhắc đặt website sau tường lửa ứng dụng web hoặc hạn chế truy cập cho đến khi nâng cấp được.

Tìm hiểu thêm

Thông báo chính thức

Hướng dẫn tham khảo

Chia sẻ bài viết
Đã sao chép!
Patrick Wunderlin

Viết bởi

Patrick Wunderlin

Nhà sáng lập WireBoard.io. Kỹ sư máy tính tốt nghiệp EPFL, đam mê web analytics, xử lý dữ liệu thời gian thực và xây dựng công cụ giúp doanh nghiệp phát triển.

WireBoard

Theo dõi website của bạn theo thời gian thực

Dashboard thời gian thực do chính bạn tạo. Bắt đầu miễn phí. Không cần thẻ tín dụng.