Nebula Security cho biết một lỗ hổng JIT trong Firefox đã được vá có thể bị kích hoạt chỉ bằng cách truy cập một trang web độc hại và cũng đã được sử dụng để tấn công Tor Browser.
Được theo dõi dưới mã hiệu CVE-2026-10702, lỗi này cho phép thực thi mã tùy ý (arbitrary code execution) bên trong tiến trình renderer của trình duyệt. Mozilla đã xếp hạng lỗ hổng này ở mức Cao (High) và đã khắc phục trong bản cập nhật Firefox 151.0.3.
"Không yêu cầu bất kỳ cài đặt hay tương tác bổ sung nào từ phía người dùng," Eten Zou, CEO của Nebula Security, chia sẻ với The Hacker News. "Chỉ cần truy cập một trang web độc hại là đủ để kích hoạt lỗ hổng."
Zou cho biết mọi phiên bản Tor Browser tích hợp phiên bản Firefox bị lỗi đều bị ảnh hưởng, mặc dù các nhà nghiên cứu vẫn chưa xác định được chính xác các bản phát hành Tor cụ thể nào.
Phạm vi ảnh hưởng và khả năng khai thác
Thông thường, lỗi này chỉ cho phép thực thi mã bên trong tiến trình nội dung (content process) đã được phân vùng (sandboxed) của Firefox. Tuy nhiên, Nebula đã công bố tài liệu khai thác công khai và sử dụng lỗi này như giai đoạn đầu tiên của IonStack - một chuỗi tấn công từ trình duyệt đến nhân hệ điều hành (browser-to-kernel chain) được xây dựng cho thiết bị ARM64 chạy Android 17. Mã khai thác hoàn chỉnh được công bố nhắm vào một bản build cụ thể của Google, mặc dù Zou khẳng định bản thân lỗi trình duyệt này không chỉ giới hạn trên kiến trúc ARM.
Mã khai thác công khai chứa các offset của Firefox 151.0 cho bản build Android 17 chạy trên ARM64. Zou cho biết mỗi bước khai thác đều độc lập với kiến trúc và mô tả lộ trình trên x86 ổn định hơn, mặc dù Nebula chưa hoàn thành toàn bộ chuỗi tấn công cho kiến trúc đó.
Người dùng Firefox được khuyến cáo nên cập nhật lên phiên bản mới nhất. Theo dòng lịch sử nguồn của Mozilla, lỗi khai báo alias sai lệch bắt đầu từ Bug 1995077, xuất hiện từ bản Firefox 147. Lỗi này vẫn hiện diện trong Firefox 151.0.2 và đã được loại bỏ khỏi Firefox 151.0.3. Điều này xác định phạm vi phiên bản ổn định bị ảnh hưởng là từ Firefox 147 đến 151.0.2.
Thông báo của Mozilla không liệt kê Firefox ESR, và lỗi khai báo này cũng không xuất hiện trong Firefox ESR 140.12. Tính đến ngày 28 tháng 7 năm 2026, chưa có ghi nhận chính thức nào về việc lỗ hổng này bị khai thác trong thực tế (in the wild).
Phân tích kỹ thuật về lỗ hổng JIT
Trong phân tích kỹ thuật, Nebula truy nguyên vấn đề nằm ở MObjectToIterator khi chạy với skipRegistration được đặt thành true. Trình biên dịch JIT của Firefox chuyển đổi JavaScript thường xuyên thực thi thành mã máy gốc, và để thực hiện việc này một cách an toàn, nó phải theo dõi các thao tác nào có thể chạm vào bộ nhớ.
Firefox đã xử lý thao tác này như một lệnh "đọc" (read), ngay cả khi việc giải quyết một thuộc tính lazy (lazy property) có thể cấp phát một bộ đệm dynamic-slots thay thế và giải phóng bộ đệm cũ.
Kỹ thuật Global value numbering sau đó đã coi việc tải bộ đệm slots (slots-buffer) sau đó là dư thừa và sử dụng lại con trỏ cũ sau khi nó đã trở nên lỗi thời (stale). Mã khai thác của Nebula thực hiện thu hồi phần bộ nhớ đã giải phóng, làm rò rỉ con trỏ hidden-class, xây dựng một đối tượng giả và làm hỏng Uint8Array để đạt được quyền đọc và ghi bộ nhớ tùy ý. Sau đó, mã trên Android sẽ thay đổi các lớp bảo vệ bộ nhớ và chuyển hướng điểm truy cập của hàm WebAssembly sang shellcode ARM64.
Sai sót này xuất phát từ một quy ước biên dịch rất hẹp: một thao tác có khả năng thay thế bộ đệm dynamic-slots của đối tượng lại được gắn nhãn là chỉ đọc. Quy ước sai lầm này đã khiến logic tối ưu hóa (vốn dĩ hợp lệ) giữ lại một con trỏ mà hệ thống thực thi (runtime) đã vô hiệu hóa.
Bản vá ở cấp độ mã nguồn của Mozilla đã loại bỏ việc xử lý alias tùy chỉnh chỉ đọc khỏi ObjectToIterator và điều chỉnh thao tác iterator liên quan. Điều này ngăn bộ tối ưu hóa coi một bước có khả năng thay đổi dữ liệu là một lệnh tải vô hại, từ đó không giữ lại con trỏ cũ.
Chuỗi tấn công IonStack và lỗi GhostLock
Giai đoạn thứ hai của IonStack là CVE-2026-43499, một lỗi futex riêng biệt trong nhân Linux mà Nebula gọi là GhostLock. Trong khi CVE-2026-10702 cung cấp bàn đạp từ xa qua trình duyệt, CVE-2026-43499 giúp nâng quyền lên mức root trên bản build Android được hỗ trợ.
Zou cho biết GhostLock được gọi trực tiếp từ Firefox. Ông nói thêm rằng cơ chế sandbox yếu hơn của Android giúp việc khai thác trở nên dễ dàng hơn, nhưng Nebula tin rằng ngay cả một sandbox mạnh hơn trên máy tính để bàn cũng không thể ngăn chặn cuộc tấn công này.
Việc cập nhật Firefox sẽ chặn điểm xâm nhập qua trình duyệt đã được tài liệu hóa, nhưng nó không vá được bản thân lỗi GhostLock.