PHP2Shell nổ tung: CVSS 9.2, ngày trước khi mở, và hai lỗ nằm trong mã 10 năm.
Đầu tiên, kết luận là:PHP sản xuất một mã từ xa trái phép cho CVSS 9.2, số CVE-26-9618 và CVE-26-109619, với biệt danh PHP2Shell. Vào ngày 20 tháng 10, nó được công khai và ngày 21 tháng 10 lúc 1400 bản vá UTC được phát hành, trong khi những hộp mật ong của Amazon được ghi lại vào ngày 17 tháng 10, 4 ngày trước khi mở cửa.
Còn gì tệ hơn thế nữa: hai cái lỗ này là cái đầu tiên tới được PHP 5.4, nghĩa là...Họ đã làm mật mã hơn một thập kỷ.Tôi không biết. Và vào năm 2024, khi nhân viên phát triển lõi PHP phát hiện ra đường đi của OOM, đội đã gặp nhau để thảo luận cách sửa chữa nó.Chúng tôi đã không đồng ý và sau đó chúng tôi đã không sửa chữa nó.Tôi không biết. Lý do là không ai nghĩ rằng nó có thể thực sự được sử dụng.
Cụm từ này giờ trông rất mỉa mai. Lý do khiến chúng ta không thể làm thế không phải là vì cái lỗ không quan trọng, nhưng vì dây xích quá phức tạp nên các nhà nghiên cứu không thể vượt quá khả năng của con người. Rồi Al đến và viết ra.
Trước hết, đừng nói đến "sự đáp ứng khẩn cấp quốc gia" nữa. Nhìn kìa.
Cái tiêu đề yêu thích của bữa tiệc là báo động toàn cầu. Lần này không phải là cường điệu, nhưng là điểm số rõ ràng.
- Comment: Một thông báo trước được công bố vào ngày 20 tháng 10, nói rằng vào ngày 21 tháng 10 lúc 14:00 UTC sẽ được phát hành trong một phiên bản bảo mật nếu các chi tiết bị rò rỉ hoặc bãi bỏ. Kết quả là con số CVE đã bị đâm vào bản tin Hacker cùng ngày, và việc phóng thích vào ngày 22 tháng 10 buộc phải được thả ra trước đó một ngày.
- CERT-EUthả cố vấn 2026-018 và bao gồm cả CVEs.
- MâyVào ngày 21 tháng 10, CTO Dane Knecht nói trực tiếp "Cuộc tấn công sớm đã được nhìn thấy để nổi lên", và các quy tắc WAF được phát hành đầy đủ, bao gồm những người dùng tự do. Nhưng ông tự nhấn mạnh rằng nó chỉ dừng lại, và giải pháp thật sự đang được hàn gắn.
- Thông tin đe dọa Amazon: Những thùng mật ong MadPot bị bắt quả cố gắng vào ngày 17 tháng 10, và một mẻ khác được bắt vào ngày 21 tháng 10, và trọng tải và cơ sở hạ tầng chỉ ra một số kẻ tấn công khác. php2sex "đã được sử dụng rộng rãi".
- Xem TwrCả hai lỗ được tái tạo lại, trong khi các cố gắng để khai thác cả hai được quan sát.
Vậy "cuộc tấn công đã được tìm thấy" không phải là một sự thật. Và phản ứng khẩn cấp đa quốc gia không phải là một cú sốc -- mà là những đối tượng chính của phản ứng là các nhà sản xuất, CDN và tổ chức khẩn cấp, không phải bất kỳ chính phủ nào trong nước.
Hai, hai lỗ, hai cách hoàn toàn khác nhau để chết.
Nhiều người nghĩ đó là một cái lỗ có hai số, không. Đây là hai tuyến đường tấn công riêng biệt, mỗi tuyến CVSS 9.2.
CVE-26-109618:
Việc xử lý yêu cầu bị gián đoạn khi việc phân phối bộ nhớ PHP thất bại. Vấn đề là:Tại thời điểm này, dữ liệu yêu cầu nội bộ có thể đã chỉ được một nửa đầu tư, và logic làm sạch sau đó sẽ sử dụng mảnh không kết hợp dữ liệu xấu này là dữ liệu hợp lệ.
Phương pháp kích hoạt rất đơn giản: xây dựng một yêu cầu đa phần để kích hoạt bộ nhớ. Điều kỳ lạ là,Kích thước của yêu cầu dường như phù hợp với trần nhà của bạn.Đó không phải là kích thước tối đa mà anh đã thiết lập, mà là giải mã và tiêu thụ nội bộ.
Điều tồi tệ nhất là cải thiện tốc độ. CommentNó vẫn sẽ được dọn dẹp.Để cái dây xích này có thể hoàn thành trước khi có bất kỳ mã truy cập nào. Mật mã PHP của anh quá sạch sẽ, không có lỗ hổng, không có gì ngăn cản được nó.
PHP-FPM sẽ giết công nhân khi nó không bắt đầu, chỉ để cắt chuỗi, vì vậy chính thức, mod php là rủi ro cao nhất. Nhưng chú ý -- điều này không có nghĩa là FPM an toàn.Sau khi bắt đầu thành côngVẫn còn có khả năng khai thác.
CVE-26-109619: trạng thái bẩn giữa các yêu cầu
Cái này tệ hơn. PHP sẽ tái sử dụng quá trình làm việc để xử lý nhiều yêu cầu. Yêu cầu cuối cùng để giải phóng bộ nhớ, con trỏ vẫn còn ở trạng thái nội bộ; yêu cầu tiếp theo đến,Đọc địa chỉ trống trước khi khởi tạo chuẩn.Tôi không biết.
Lỗi nghiêm trọng (bị hủy bỏ bộ nhớ, thời hạn hiệu suất) ngắt quãng việc dọn dẹp trạng thái. Tệ hơn nữa, một số chẩn đoán không gây tử vong trong thời gian ngừng hoạt động đã thay thế sai trạng thái.Làm lại đi.Tôi không biết.
Các con đường được xác nhận chính thức bao gồm: RCEs với lỗi nghiêm trọng khi PHP 8.5 cho phép vết lùi đáng thương (mặc định mở), và chu kỳ cuộc đời của RCEs trên động cơ php và FPM.session.upload_progress Theo mặc định, bạn có thể hành động như một người tiêu dùng đầu tiên trong tình trạng bẩn thỉu.Và không cần phải áp dụng cuộc gọiTôi không biết.
Cái lỗ này vẫn còn dính.Bộ nhớ bị rò rỉTôi không biết. Cái gì bị rò rỉ? là mật khẩu, tín hiệu, khoá API, chứng nhận cho các yêu cầu khác trong bộ nhớ tiến trình. Wiz trực tiếp so sánh với Heartbled, không nhiều lắm.
Dòng thời gian, còn hơn cả tiêu đề Look.
| Thời gian | Chuyện gì đã xảy ra? |
|---|---|
| Năm 2024 | Bản kiểm toán phát triển lõi PHP tìm thấy OOOOO, lỗi đó, đội không có sự nhất trí về luật pháp, giữ nó lại. |
| 2026-08 | Ryan Austin của Calif xác định lỗ hổng của OpenAI GPT-5.6 Sol; Wiz Độc lập find |
| 2026-10-17 | Amazon MadPot, mật ong có thể ghi âm một nỗ lực, bốn ngày trước khi mở cửa. |
| 2026-10-20 | Số lượng CVE rò rỉ trên tin tức Hacker và truyền thông xã hội, PHP |
| 2026-10-21 | 14:00 UTC Publication 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 |
Ngày 17 tháng 10.Ngày công cộng là ngày 20, nhưng cuộc tấn công xảy ra vào ngày 17.Đề xuất Amazon rất đơn giản: điểm bắt đầu không phải là ngày tiết lộ, mà là ít nhất 17 tháng 10.
Về cách những kẻ tấn công có được thông tin trước, Amazon nói "không rõ ràng." Tôi không thể đi sâu vào vấn đề này, nhưng anh phải chấp nhận một thực tế.Ngày tiết lộ chưa bao giờ là ngày tấn công, nhưng ngày mà cuối cùng anh cũng biết.
Bốn, lần này là AI.
blog của Wiz có một câu mà tôi đã đọc hai lần: “Những khuyết điểm tiềm ẩn này đã tồn tại hàng thập kỷ rồi, nhưng để chứng minh rằng chúng có thể được sử dụng, chúng cần một chuỗi các bước cực kỳ phức tạp, trên những lề thực tế của các nhà nghiên cứu loài người.Mô hình AI phía trước làm giảm đáng kể ngưỡng này.Tôi không biết.
Ryan Austin, một nhà nghiên cứu ở Calif, được tìm thấy trong dự án OpenAI "Patch the Planet" với GPT-5.6 Sol. Wiz đã tìm thấy vấn đề tương tự một cách độc lập. Để tận dụng nó, chúng ta cần một chuỗi lỗi và mỗi mục tiêu.NameWiz nói rằng mô hình tiền tuyến cho phép họ phát triển các ứng dụng có thể sử dụng cho các ứng dụng khác nhau trong vòng vài giờ.
Không có nghĩa là "A I won again".Vấn đề là cái hào của sự phức tạp đang thất bại.
Nhiều lỗ hổng cũ đã không bị đánh bại trong vòng hai thập niên qua, không phải vì chúng không nghiêm trọng, nhưng vì ngưỡng cửa của việc sử dụng quá cao — một vài tuần đầu tư bởi các nhà nghiên cứu hàng đầu và một chút may mắn. Vì vậy bạn đặt chúng vào cột "vô cùng nguy hiểm". Giờ cái hàng rào này biến mất rồi.
Những cái lỗ mười năm đó nằm trong hệ thống của bạn và được đánh giá là "giáo dục và chưa được xử lý" phải được chỉnh sửa lại.
Năm, bạn nên chọn ai?
| Chi nhánh | Phiên bản đã tác động | Bỏ |
|---|---|---|
| PHP 8.5 | < 8.5.12 | Nâng lên 8.5.12. |
| PHP 8.4 | < 8.4.27 | Nâng lên 8.4.27. |
| PHP 8.3 | < 8.3.36 | Nâng lên 8.3.36. |
| PHP 8.2 | < 8.2.35 | Nâng lên 8.2.35. |
| PHP 7.4 / 8.0 / 8.1 | Tất cả | Chính thức chưa xuất bản, chỉ cấp nguồn |
| PHP 5.4 – 7.3 | Tất cả | EOL, chính phủ không sửa nó. Kinh doanh |
Vài lời nhắc nhở thực tế:
- NameTôi có chỗ trước.Kiểm tra cố vấn của nhà sản xuất của bạn với gói phân phối. Đừng hấp tấp mã nguồn.
- Dùng
rpms.remirepo.netGhi chú: PHP chính thức tuyên bố nguồn tin vào ngày 21 tháng 10.Không cập nhậtBạn có thể chuyển sang một gói phân phối hoặc chuyển nó từ mã nguồn. - Hệ nhị phân Windows của PHP 8.5 cũng nằm trên trang tải chính thức.
- Đừng nghĩ là không sao nếu chạy trong container -- phiên bản PHP của gương container phải được kiểm tra.
Sáu, nếu không có miếng vá, hãy làm bốn miếng này trước.
Tình trạng thứ nhất:Không cái nào ở dưới này có thể giúp anh an toàn.Cụm từ PHP chính thức là "đã tiếp xúc với các đường tấn công cụ thể, nhưng không làm cho cài đặt an toàn hơn". Giá trị của chúng là cho bạn thời gian để lấy các miếng vá.
Đặt giới hạn bộ nhớ là -1
Mục đích: loại bỏ bộ nhớ có thể đoán trước được của PHP thất bại, ví dụ CVE-26-109618 đã xác nhận tình trạng kích hoạt mà nó phụ thuộc vào.
Vấn đề là,Bằng cách nào?: để được đặt ở những nơi mà ứng dụng không được sửa đổi, chẳng hạn như hồ FPM php_admin_value hay cấu hình Apache. Bạn phải kiểm tra xem không có bố trí, thư mục, thiết lập ứng dụng để thêm lại giới hạn.Rồi khởi động lại mọi công nhân.
Cái giá rất rõ ràng: bạn đã rời khỏi hàng rào trí nhớ của PHP, và sự thất bại về phân phối dưới cùng vẫn còn trên con đường nguy hiểm đó. Vì vậy, nó phải là một container hoặc một c nhóm để giới hạn vỏ bọc - nhưng nó chỉ là một chiến lược để "giết người ảnh hưởng."Đừng bao giờ dùng RLIMTA hoặc RLIMT DATAHai cái đó chính xác là những sai lầm về phân phối tạo ra lỗ hổng.
Giảm cỡ tối đa
Không có tập tin 8M để tập tin 32M và đảm bảo upload_max_filesize Ít hơn. Đồng thời, các giới hạn được thêm vào máy phục vụ hoặc lớp ủy nhiệm - khối lượng yêu cầu được giải mã, số trường, số bộ phận đa phần, số đầu, độ sâu của tổ.Những hạn chế này phải bao gồm yêu cầu mà không hợp lệ nội dung-LingthNếu không chúng ta sẽ đi vòng.
3 Tắt phiên chạy. quá trình tải lên
session.upload_progress.enabled = 0
Nó được viết bằng php.ini, FPM công cụ hoặc cấu hình máy chủ.Nó phải hiệu quả trước yêu cầu.Tôi không biết. Dùng ini_set() Hoặc FPM. .user.ini Nó đã quá muộn -- nó bẩn. Thay đổi cũng để khởi chạy lại tất cả các công việc.
PHP 8.5 Một ly nữa.
fatal_error_backtraces = 0
Khối này chỉ xác nhận lỗi quay lại tử vong, không có biến thể khác. Cũng cần thiết thiết thiết lập cấp quản trị + khởi động lại công việc.
Ngoài ra, chính quyền đề cập đến việc nhiều người sẽ lờ đi:Sửa chữa những lỗi nghiêm trọng mà kẻ tấn công có thể kích hoạt và thực hiện thời gian ra.Bao gồm hỗ trợ, tải lên, nhập khẩu xử lý, thất bại dọn dẹp. Và...Xoá các cấu hình lỗi thời hay bất hợp pháp được áp dụng trên cơ sở yêu cầu- theo yêu cầu- Họ nhổ ra thông tin chẩn đoán trước khi nó được khởi tạo và cho rò rỉ.
Câu cuối dễ hiểu nhất:Không thể giấu chẩn đoán bằng lỗi báo cáo, lỗi hiển thị hoặc @.Nó không xảy ra.
VII. NHỮNG BÀI HỌC CHO NÀY
Tôi không muốn kết thúc bằng cách viết "Nộp miếng vá." Tất nhiên đó là miếng vá. Là hôm nay. Nhưng một số phán quyết phải thay đổi.
- Thuật ngữ "khó sử dụng" không còn giống với "được chỉ định".Dây chuyền truy cập của PHP là đủ phức tạp để cần trợ giúp của AI, mà đã được giúp đỡ. Những lỗ hổng cũ trong danh sách tài sản của anh nên được đánh giá lại.
- Ngôn ngữ hoạt động ở một điểm.WordPress, Drupal, Joomla, Magento, MediaWiki đều chạy trên PHP, kiểm toán mã truy cập của bạn sạch sẽ, và lõi PHP đang gặp rắc rối. Điều chỉnh nhịp độ của các lớp cơ sở hạ tầng, với các lớp ứng dụng tách ra.
- Mã ứng dụng bị hỏng mà không chạy. WAF chỉ có thể trì hoãn.Chính đám mây đã nói đó là dấu chấm hết. Đặt WAF như một giải pháp đồng nghĩa với việc mang lại sự sống để cai trị.
- Có rất nhiều trang web cũ trong nước sử dụng PHP.Những trạm chạy trên kênh PHP 5.6/7.0, đã được giữ lại và treo trên một máy chủ đám mây, đang trong tình trạng này là 1,9 triệu. Họ sẽ không nhận được bất kỳ thông báo.
Các phỏng đoán dữ liệu được ghi lại: W3Tchs nói rằng tài khoản PHPs cho 69.3 phần trăm các ngôn ngữ được dịch vụ, và Wiz 70 phần trăm; các chủ thể tiếp xúc, nhà nghiên cứu an ninh Silas Cutler ước tính hơn 1.3 triệu đô la, và việc tìm kiếm của Hank Poman là trên 1.9 triệu. Những con số này là khác nhau tính và không sử dụng chúng như các giá trị chính xác, nhưng tỷ lệ là giống nhau -Hàng triệu, trên toàn cầu.
Một chi tiết nữa đáng nhớ là: khi con số CVE bị rò rỉ, các điểm CVSS được xác nhận chính thức là 10.0.Điểm số đó là sai.Thực ra là 9.2. Không ai biết gì về chi tiết này, nhưng nó sẽ luôn được lưu hành. Nhìn thấy 10, bạn biết sóng là gì.
Một lỗ hổng 10 năm, hai tháng nghiên cứu được hỗ trợ bởi AI, bốn ngày đầu tiên sử dụng, cửa sổ một ngày. Quy mô thời gian này là bình thường của tất cả các phần mềm cơ bản theo sau.
Kiểm tra phiên bản ngay.php -vHoặc hãy nhìn vào gương container của bạn. Đừng chờ ngày mai.