Hai năm qua, nhận định rằng các model AI hàng đầu sẽ thay đổi ngành nghiên cứu lỗ hổng bảo mật chủ yếu dựa vào benchmark và vài con số lỗi được chọn lọc. Tuần này nó có thêm một sự cố thật. Thứ Ba, 21/10/2026, dự án PHP phát hành bản vá khẩn cấp cho hai lỗi thực thi mã từ xa (RCE) mức nghiêm trọng, CVE-2026-109618 và CVE-2026-109619, nay được gọi chung là PHP2Shell. Lỗi nằm trong chính runtime PHP chứ không thuộc framework hay plugin nào. Cả hai nhóm được ghi nhận là người phát hiện đều cho biết model AI đảm nhận phần lớn công việc. Kẻ tấn công thì đã khai thác lỗi trước khi bản vá ra đời.
Chuyện gì đã xảy ra
Theo thông báo của nhóm bảo mật PHP mà BleepingComputer dẫn lại, lỗi ảnh hưởng mọi bản cài PHP có phục vụ request web: PHP-FPM, Apache với mod_php, php-cgi, FrankenPHP và LiteSpeed. Nhóm PHP đánh giá mod_php là cấu hình rủi ro cao nhất. Các bản đã vá gồm PHP 8.5.12, 8.4.27, 8.3.36 và 8.2.35. Với 7.4, 8.0 và 8.1, những nhánh dự án không còn hỗ trợ, chỉ có bản vá ở dạng mã nguồn, không có bản build chính thức. Wikipedia ghi nhận dải phiên bản bị ảnh hưởng là PHP 5.4 đến 8.5. Đội phát triển PHP chấm 9,2 điểm (mức critical) theo CVSS v4.0. Hãng bảo mật watchTowr chấm 10,0.
Hai nhóm tìm ra lỗi một cách độc lập:
- Calif, công ty chuyên red-team (tấn công thử nghiệm) cho hệ thống AI ở California, được OpenAI mời tham gia chương trình “Patch the Planet”. Theo Fortune, chương trình này nhằm chủ động tìm và vá lỗ hổng trong hạ tầng số. Calif chọn PHP vì đây là mục tiêu có tầm ảnh hưởng lớn, và tìm ra lỗi đầu tiên vào tháng 8 nhờ GPT-5.6 Sol. Fortune ghi ngày 1/8, còn Al Jazeera dẫn OpenAI ghi ngày 11/8. Sau đó OpenAI tự đào sâu thêm và tìm ra các mắt xích khác của chuỗi lỗi.
- Wiz cho biết tìm ra lỗi PHP đầu tiên ngày 19/8 bằng “Wiz Atlas, Gemini 4 Argon và GPT-5.6 Sol”. Nhóm xác nhận RCE không cần xác thực trên Drupal ngày 20/8 và trên WordPress ngày 21/8, báo cho PHP ngày 24/8. Theo Wiz, PHP xác nhận đã nhận báo cáo vào ngày 21/9.
Bản vá được tính để phối hợp công bố, nhưng thông tin rò rỉ sớm. Ngày 20/10, PHP báo trước lịch phát hành và giữ quyền phát hành sớm hơn nếu chi tiết lỗi bị lộ. Tối hôm đó tin đã lên Hacker News, và theo Wikipedia, Calif đăng nhầm một video proof-of-concept (bản trình diễn khai thác). Amazon Threat Intelligence cho biết hệ thống honeypot (bẫy dụ tấn công) MadPot của họ ghi nhận một lượt khai thác thử từ ngày 17/10. Sau khi lỗi được công bố, CEO Cloudflare Matthew Prince cho Fortune biết có “hàng chục nghìn” lượt khai thác thử trong 45 phút đầu, “hàng trăm nghìn” sau hai giờ và hàng triệu lượt đến tối cùng ngày. AWS mô tả lỗ hổng là “đang bị khai thác rộng rãi”.
Phản ứng của các chính phủ mạnh tay khác thường. Trung tâm An ninh mạng Quốc gia Anh (NCSC) yêu cầu các tổ chức cập nhật ngay, nếu chưa vá được thì đưa hệ thống ngoại tuyến. Theo Al Jazeera và Reuters, cơ quan nhà nước ở Đức, Pháp, Bỉ, Hà Lan, Phần Lan và Séc đã tạm đóng website để vá. Cơ quan An ninh Quốc gia Mỹ (NSA) ra khuyến cáo, còn Thủ tướng Nhật Bản đăng cảnh báo trên mạng xã hội.
Bản chất kỹ thuật
Lỗi không nằm trong code ứng dụng. Wiz cho biết ngay cả một ứng dụng “Hello World” đơn giản cũng có thể bị tấn công. Tất cả là lỗi an toàn bộ nhớ trong cách PHP xử lý lỗi fatal giữa chừng một request, nhất là lỗi hết bộ nhớ (out-of-memory, OOM). Theo mô hình của PHP, mỗi request được cấp một heap mới và heap bị bỏ đi khi request kết thúc. Các lỗi này phá vỡ giả định đó: kẻ tấn công ép request gặp OOM giữa chừng, heap bị hủy, nhưng một số con trỏ toàn cục của tiến trình vẫn tồn tại sang request kế tiếp mà cùng worker xử lý. Wiz mô tả nhiều đường khai thác như vậy:
- Session upload progress. Module Session giải mã dữ liệu tiến trình upload từ rất sớm, trước khi khởi tạo bình thường. Nếu cấp phát bộ nhớ thất bại đúng lúc đó, trạng thái toàn cục của bộ unserialize (
BG(unserialize)) có thể vẫn còn hiệu lực. Một request sau đó có thể khiến PHP coi vùng nhớ do kẻ tấn công kiểm soát là trạng thái unserialize đang dùng. Một nhánh liên quan khiếnPS(id)trỏ vào vùng nhớ đã giải phóng, rồi PHP mã hóa URL chính nội dung vùng heap bị tái sử dụng đó vào cookiePHPSESSIDgửi về. Đây là lỗi rò rỉ bộ nhớ từ xa, và theo Wiz nó xảy ra cả khi ứng dụng không hề gọisession_start(). - Backtrace của lỗi fatal.
EG(last_fatal_error_backtrace)có thể tồn tại lâu hơn vùng heap nó trỏ tới, dẫn đến lỗi use-after-free (dùng vùng nhớ sau khi đã giải phóng) ở request tiếp theo. - OPcache. Trong
zend_accel_script_persist(), một chỉ số cục bộ của tiến trình tăng lên trước khi trạng thái chung được công bố. Nếu cấp phát thất bại giữa hai bước này, một ô trong bộ nhớ chia sẻ bị đánh dấu là trống trong khi vẫn đang dùng. Worker khác có thể chiếm lại ô đó và gây nhầm lẫn kiểu dữ liệu (type confusion).
Ghép một lỗi rò rỉ bộ nhớ đủ để vượt ASLR với các lỗi use-after-free tồn tại xuyên request trên những worker chạy lâu, kẻ tấn công có được RCE trước khi đăng nhập. Wiz đã trình diễn điều này trên WordPress, Drupal và Joomla. Wiz cũng thừa nhận việc khai thác “phức tạp có tiếng” và phải tinh chỉnh theo từng mục tiêu. Điều đó khớp với số liệu của Prince: hàng triệu lượt thử không có nghĩa là hàng triệu máy chủ đã bị chiếm.
Các biện pháp tạm thời trong thông báo gồm đặt session.upload_progress.enabled=0 rồi khởi động lại mọi worker, giảm post_max_size, đặt fatal_error_backtraces=0 trên bản 8.5, và giới hạn bộ nhớ cho từng worker bằng cgroup. PHP nói thẳng rằng các biện pháp này không bảo vệ hoàn toàn. Cách khắc phục thật sự là nâng cấp. Nếu bạn chạy PHP trong container, hãy build lại image: kéo tag base mới về không thay thế được tiến trình FPM đang chạy lâu.
Vì sao điều này quan trọng
Loại lỗi này không mới. Theo Wikipedia, một lập trình viên lõi của PHP đã phát hiện vấn đề OOM khi rà soát mã năm 2024, nhưng lỗi không được sửa vì nhóm không thống nhất được cách khắc phục. Fortune cho biết một phiên bản hạn chế của lỗi khi đó “không được coi là đáng kể”. Điều thay đổi là chi phí để biến một điểm yếu đã biết thành chuỗi khai thác chạy được. Bài viết của Wiz khẳng định “một nhà nghiên cứu hoàn thành trong một tuần khối lượng việc mà trước đây cần một đội đẳng cấp thế giới làm trong nhiều tháng”. Đây là tuyên bố của nhà cung cấp, người ngoài không kiểm chứng được. Dù vậy, hai nhóm độc lập, cùng dùng model AI hàng đầu, chạm tới cùng những lỗi sâu trong runtime chỉ cách nhau vài tuần. Như vậy, việc dùng AI săn lỗ hổng ở quy mô toàn Internet đã là thực tế, không còn là dự báo.
Bài học thứ hai là về thời gian. Quy trình công bố lỗ hổng thông thường ngầm định có vài tuần yên ổn giữa lúc báo cáo kín và lúc vá công khai. Lần này, chi tiết rò rỉ sớm một ngày, một bản build vá sớm của bên phân phối hạ nguồn được cho là đã để lộ những gì thay đổi, và việc dò quét hàng loạt bắt đầu vài phút sau khi công bố. Chính nhóm PHP kết luận rằng công cụ giờ tìm lỗi nhanh hơn bao giờ hết, cho cả phe phòng thủ lẫn phe tấn công, và số báo cáo sẽ còn tăng. Với lập trình viên, tốc độ vá giờ là một thuộc tính bảo mật, kể cả việc biết chính xác phiên bản runtime nào đang chạy trong từng container.
Những câu hỏi còn bỏ ngỏ
- Quy mô thật. Các tiêu đề nói “70% Internet”. Thực ra đó là tỷ lệ website dùng PHP, khoảng 69–70% theo phần lớn thống kê, không phải số máy chủ khai thác được. Palo Alto Networks đếm được khoảng 22,6 triệu máy chủ có khả năng bị ảnh hưởng. Hiện chưa rõ bao nhiêu máy đã thực sự bị xâm nhập.
- Ghi công và cách kể chuyện. OpenAI, Google (chủ sở hữu Wiz) và các đối tác đều có lợi ích thương mại khi gọi đây là “bước ngoặt AI”. Các nguồn chưa cho thấy bao nhiêu phần việc do model làm, bao nhiêu do chuyên môn của con người trong quy trình. Chẳng hạn, chưa rõ model tự đề xuất chuỗi khai thác hay nhà nghiên cứu dùng model để rà mã nhanh hơn.
- Phía tấn công. Chính OpenAI thừa nhận năng lực ấy cũng giúp kẻ tấn công nhanh chóng xây dựng công cụ và mã khai thác. Hiện chưa có bằng chứng công khai cho thấy các vụ khai thác ngoài thực tế có dùng AI hay không.
Điều không còn tranh cãi là lỗ hổng đầu tiên ở quy mô Internet được công khai ghi công cho model AI hàng đầu đã xuất hiện, và nó trúng vào ngôn ngữ đang vận hành phần lớn web.
Nguồn
- Wiz Research: PHP2Shell — AI uncovers critical RCE vulnerabilities affecting 70% of the Internet
- BleepingComputer: PHP ships emergency patches for critical PHP2Shell flaws
- Fortune: AI helped discover the PHP vulnerability that could take down 70% of the internet
- Al Jazeera / Reuters: World leaders warn of security flaws found in PHP programming language
- Axios: Why bugs discovered by OpenAI tech are creating a cyber emergency
- Wikipedia: PHP2Shell