Chrome gặp lỗ hổng RCE nghiêm trọng: Khẩn cấp vá bảo mật

Chrome gặp lỗ hổng RCE nghiêm trọng: Khẩn cấp vá bảo mật

Một lỗ hổng remote code execution (RCE) nghiêm trọng ảnh hưởng đến engine WebAssembly của Google Chrome đã được công bố rộng rãi, kèm theo một mã khai thác (exploit) hoạt động đầy đủ. Lỗ hổng này, được phát hiện và báo cáo trong sự kiện TyphoonPWN 2025, liên quan đến một sự hồi quy trong logic chuẩn hóa (canonicalization logic) cho các kiểu tham chiếu được lập chỉ mục (indexed reference types) trong WebAssembly, cùng với một kỹ thuật vượt qua sandbox mới thông qua JavaScript Promise Integration (JSPI).

Nội dung
Phân Tích Sâu Về Lỗ Hổng Canonicalization
Kỹ Thuật Vượt Qua Sandbox V8 Với JSPI
Cơ Chế Khai Thác (Exploit Mechanics)

Khai Thác Lỗi Nullability Confusion
Khai Thác Lỗi Chuyển Đổi Ngăn Xếp JSPI
Các Phiên Bản Ảnh Hưởng và Biện Pháp Khắc Phục

Chi Tiết Bản Vá

Phân Tích Sâu Về Lỗ Hổng Canonicalization

Các nhà nghiên cứu từ SSD Secure Disclosure đã chứng minh rằng bằng cách kết hợp lỗi nhầm lẫn về khả năng null (nullability confusion bug) với kỹ thuật va chạm băm dựa trên tấn công sinh nhật (birthday-attack-based hash collision) tinh vi, kẻ tấn công có thể đạt được các quyền đọc/ghi tùy ý (arbitrary read/write primitives) trong sandbox V8 và cuối cùng thực thi mã gốc.

Ghi nhận cho phát hiện này thuộc về Seunghyun Lee (0x10n), người đã giành vị trí đầu tiên trong hạng mục Chrome RCE. Nguyên nhân gốc rễ nằm ở sự hồi quy được giới thiệu bởi commit 44171ac (Chrome M135), nơi hàm CanonicalEqualityEqualValueType đã không xem xét khả năng null cho các kiểu tham chiếu được lập chỉ mục (ref t0 so với ref null t0).

Sự bỏ sót này cho phép hai nhóm kiểu WebAssembly chỉ khác nhau về khả năng null chuẩn hóa thành cùng một biểu diễn nội bộ. Điều này tạo điều kiện cho kẻ tấn công tạo ra một va chạm băm (hash collision) thông qua một cuộc tấn công sinh nhật vào thuật toán MurmurHash64A.

Khi hai kiểu tham chiếu va chạm được tạo, một primitive tái định kiểu (recast primitive) sẽ loại bỏ hiệu quả các kiểm tra null, dẫn đến khả năng đọc/ghi trong bộ nhớ bị giới hạn (caged read/write capability in Memory).

Kỹ Thuật Vượt Qua Sandbox V8 Với JSPI

Đồng thời, một lỗi chuyển đổi ngăn xếp JSPI (JSPI stack-switching bug) được giới thiệu trong commit d4700da (Chrome M137) có thể bị khai thác để vượt qua sandbox V8. Bằng cách thao túng các chuỗi ngăn xếp phụ lồng nhau (nested secondary stack chains), mã khai thác bỏ qua các khung không hoạt động (inactive frames) và ghi đè nội dung ngăn xếp bị treo (suspended stack contents), giành lại quyền kiểm soát ngăn xếp JS trung tâm với các giá trị do kẻ tấn công kiểm soát. Thành phần này của chuỗi tấn công cho phép thực thi mã tùy ý hoàn toàn mà không cần dựa vào các cuộc tấn công PartitionAlloc cũ.

Cơ Chế Khai Thác (Exploit Mechanics)

Lỗ hổng này là một ví dụ điển hình về việc khai thác chuỗi lỗ hổng để đạt được mục tiêu cuối cùng. Sự kết hợp giữa lỗi chuẩn hóa WebAssembly và vấn đề trong JSPI đã tạo ra một kịch bản remote code execution cực kỳ nguy hiểm. Đây được xem như một lỗ hổng zero-day tại thời điểm phát hiện và công bố, đòi hỏi phản ứng khẩn cấp từ Google.

Khai Thác Lỗi Nullability Confusion

Kẻ tấn công khởi đầu bằng việc tạo ra các kiểu WebAssembly có vẻ ngoài khác nhau nhưng lại được chuẩn hóa giống nhau do lỗi trong CanonicalEqualityEqualValueType. Sử dụng một cuộc tấn công sinh nhật vào MurmurHash64A, họ tạo ra các va chạm băm, từ đó đạt được khả năng đọc/ghi trong bộ nhớ bị giới hạn. Chi tiết kỹ thuật về MurmurHash64A và tấn công sinh nhật có thể được tìm thấy tại National Vulnerability Database (NVD) hoặc các tài liệu nghiên cứu liên quan.

Khai Thác Lỗi Chuyển Đổi Ngăn Xếp JSPI

Bước tiếp theo trong chuỗi khai thác remote code execution là lợi dụng lỗi JSPI để vượt qua sandbox. Bằng cách can thiệp vào cách JSPI quản lý ngăn xếp, kẻ tấn công có thể thao túng trạng thái của ngăn xếp JavaScript, chèn các giá trị tùy ý và giành quyền kiểm soát luồng thực thi. Điều này cho phép thực thi mã tùy ý (arbitrary code execution) mà không bị giới hạn bởi sandbox V8.

Các Phiên Bản Ảnh Hưởng và Biện Pháp Khắc Phục

Lỗ hổng remote code execution này ảnh hưởng đến tất cả các bản dựng Chrome stable channel từ M135 đến M137 mà không có kiểm tra tương đương null phù hợp, và bản M137+ đối với lỗi JSPI bypass. Google đã phát hành một bản vá bảo mật khẩn cấp để khắc phục vấn đề.

Chi Tiết Bản Vá

Bản vá này bao gồm việc hoàn nguyên logic chuẩn hóa bị lỗi và thực thi các kiểm tra trạng thái ngăn xếp nghiêm ngặt hơn trong JSPI. Việc cập nhật lên phiên bản Chrome mới nhất có chứa bản vá bảo mật này là khuyến nghị bắt buộc để bảo vệ người dùng khỏi các cuộc tấn công khai thác lỗ hổng zero-day tiềm ẩn này. Các bản cập nhật này giúp tăng cường khả năng phòng thủ của Chrome chống lại các kỹ thuật remote code execution tiên tiến.