Lỗ hổng Opera GX cho phép các trang web độc hại tự động cài đặt Mod để đánh cắp dữ liệu từ các trang đã truy cập

Các nhà nghiên cứu đã phát hiện một lỗ hổng trong Opera GX, phiên bản trình duyệt Opera dành cho game thủ, cho phép một trang web độc hại âm thầm cài đặt tiện ích mở rộng trình duyệt và sử dụng nó để lấy dữ liệu cụ thể từ các trang mà nạn nhân truy cập. Trong một bản Proof of Concept, họ đã tái tạo địa chỉ Gmail đầy đủ của một người dùng đã đăng nhập chỉ từ một lần truy cập mà không cần nhấp chuột. Opera đã vá lỗ hổng này và tuyên bố không thấy bằng chứng nào cho thấy nó từng bị khai thác trong thực tế.
Lỗ hổng rò rỉ dữ liệu trên Opera GX

Các nhà nghiên cứu đã phát hiện ra một lỗ hổng trong Opera GX, phiên bản trình duyệt Opera tập trung vào chơi game, cho phép một trang web độc hại âm thầm cài đặt tiện ích mở rộng trình duyệt (add-on) và sử dụng nó để lấy dữ liệu cụ thể từ các trang mà nạn nhân truy cập.

Trong một bản Proof of Concept (thử nghiệm khai thác), họ đã tái tạo được địa chỉ Gmail đầy đủ của một người dùng đã đăng nhập chỉ từ một lần truy cập duy nhất mà không cần bất kỳ cú nhấp chuột nào. Opera đã vá lỗ hổng này và cho biết họ không tìm thấy bằng chứng nào cho thấy nó từng bị khai thác trong thực tế.

Bản vá đã được phát hành trong phiên bản Opera GX 130.0.5847.89, vì vậy bất kỳ ai đang sử dụng phiên bản hiện tại đều đã được bảo vệ; bạn có thể kiểm tra phiên bản của mình tại opera://about. Lỗ hổng này không có mã CVE.

Vì cuộc tấn công không cần sự cho phép hay nhấp chuột của người dùng, nên không có biện pháp khắc phục nào khác ngoài việc cập nhật bản vá. Đội ngũ Bug Bounty của Opera đã xếp hạng vấn đề này ở mức P1, mức độ nghiêm trọng cao nhất, và trả mức thưởng tối đa 5.000 USD cho một lỗi cực kỳ nghiêm trọng.

Cách thức tấn công hoạt động

GX Mods cho phép bạn thay đổi giao diện Opera GX với âm thanh, chủ đề, hình nền tùy chỉnh và CSS để thiết kế lại các trang web bạn truy cập. Chúng được phân phối dưới dạng tệp .crx, giống như các tiện ích mở rộng trình duyệt, nhưng chúng không thể chạy JavaScript và không nắm giữ quyền hạn nào.

Điểm yếu nằm ở cách chúng được cài đặt: quy trình xử lý Mod của Opera tự động tải xuống và kích hoạt một Mod mà không có thông báo xác nhận. Do đó, một trang web độc hại có thể cài đặt âm thầm, ví dụ như bằng cách tải một iframe ẩn trỏ đến tệp .crx.

Dấu hiệu duy nhất là một thanh thông báo bên dưới thanh địa chỉ cho biết một Mod đã được thêm vào, kèm theo nút Remove (Gỡ bỏ).

Hành vi tự động cài đặt này không phải là mới. Nhà nghiên cứu Renwa đã xác định được nó từ năm 2023 và bằng cách leo thang một Mod đã cài đặt thành một tiện ích mở rộng đầy đủ, đã sử dụng nó để giả mạo thanh địa chỉ của trình duyệt. Opera đã vá cuộc tấn công cụ thể đó vào tháng 3 năm 2023 nhưng vẫn để lại cơ chế tự động cài đặt cơ bản, vốn là nền tảng cho nghiên cứu mới này.

Một Mod thay đổi diện mạo âm thầm nghe có vẻ vô hại. Nhưng CSS của một Mod được áp dụng cho mọi trang bạn truy cập, không chỉ một trang. Thông thường, CSS Injection chỉ giới hạn trong trang mà nó được đưa vào; nhưng ở đây, kiểu dáng của kẻ tấn công có thể tác động đến mọi trang web mà trình duyệt mở ra, một kỹ thuật mà các nhà nghiên cứu gọi là Universal CSS Injection.

CSS không thể tự đọc một trang và gửi dữ liệu đi. Nhưng nó có thể bị lợi dụng để làm rò rỉ một giá trị theo từng phần nhỏ. Thủ thuật này dựa trên các Attribute Selectors: một quy tắc có thể kiểm tra xem giá trị thuộc tính của một phần tử (chẳng hạn như một email nằm trong một trường ẩn) có bắt đầu bằng một chữ cái nhất định hay không, và chỉ tải một hình nền từ máy chủ của kẻ tấn công khi điều kiện đó đúng. Thực hiện đủ số lần như vậy, kẻ tấn công có thể biết được giá trị đó theo từng ký tự.

Các nhà nghiên cứu gọi đây là XS-Leak (viết tắt của Cross-site Leak). Để lấy địa chỉ Gmail, các nhà nghiên cứu đã nhắm mục tiêu vào trang tài khoản Google (myaccount.google.com/contactemail), nơi chứa địa chỉ email bên trong ba thuộc tính HTML của nó.

Minh họa khai thác XS-Leak
Minh họa cách thức XS-Leak trích xuất dữ liệu qua CSS

Họ đã đóng gói một Mod với khoảng 150.000 quy tắc CSS, mỗi bộ cho mọi tổ hợp ba chữ cái có thể có của địa chỉ, và sử dụng một tập lệnh để ghép các mảnh khớp lại với nhau. Ban đầu họ thử các đoạn bốn chữ cái, yêu cầu tới 5,6 triệu quy tắc và khoảng 880 MB CSS. Trình duyệt đã bị quá tải, vì vậy họ đã giảm xuống còn các đoạn ba chữ cái chồng chéo nhau vừa đủ để lắp ráp lại.

Việc liên kết mọi thứ lại với nhau chỉ cần một cú hích nhẹ. Nạn nhân truy cập vào trang của kẻ tấn công, Mod được cài đặt trong vài giây, sau đó vài dòng JavaScript sẽ chuyển hướng trình duyệt đến trang tài khoản Google. CSS của Mod đã được tải sẵn ở đó, vì vậy nó sẽ kích hoạt các yêu cầu và làm rò rỉ địa chỉ khi trang đang hiển thị, trước khi nạn nhân kịp nhận ra thông báo để nhấn nút Remove.

Địa chỉ Gmail chỉ là bản thử nghiệm Proof of Concept; cách tiếp cận tương tự có thể lấy các giá trị khác mà một trang hiển thị trong mã nguồn (markup) của nó, chẳng hạn như tên người dùng.

Chính con đường tự động cài đặt này còn có một công dụng thứ hai thô sơ hơn mà các nhà nghiên cứu đã ghi lại: tải một tệp .crx trong khi ở chế độ riêng tư (Incognito) sẽ làm trình duyệt bị treo (crash) và đóng mọi tab đang mở. Lỗi này ảnh hưởng đến cả trình duyệt Opera thông thường chứ không chỉ Opera GX. Thông báo của Opera tập trung vào việc sửa lỗi đánh cắp dữ liệu và không đề cập đến lỗi gây treo trình duyệt này.

Mức độ nghiêm trọng và cái nhìn tổng quan

Báo cáo này suýt chút nữa đã không nhận được sự quan tâm xứng đáng. Opera vận hành chương trình Bug Bounty trên nền tảng Bugcrowd, và các nhà phân tích ban đầu đã gặp khó khăn trong việc hiểu lỗ hổng này làm được gì, ban đầu họ chỉ xếp hạng nó ở mức trung bình P3.

Các nhà nghiên cứu đã chứng minh quan điểm của mình theo một cách cực kỳ trực diện: trong khi một nhà phân tích đang tái hiện cuộc tấn công, họ đã thu thập được các đoạn dữ liệu của chính nhà phân tích đó, xây dựng lại địa chỉ Gmail của họ và dán nó trực tiếp vào báo cáo. Đội ngũ của Opera sau đó đã nâng mức độ nghiêm trọng lên P1 và trả mức thưởng tối đa 5.000 USD.

Phía Opera lại có cái nhìn thận trọng hơn. Trong thông báo của mình, công ty cho biết họ "khá tự tin" rằng lỗ hổng chưa từng bị khai thác trong thực tế, và mô tả cuộc tấn công là phức tạp để thực hiện: nạn nhân phải truy cập vào một trang web độc hại, bị cài đặt một Mod mới và bỏ qua thông báo gỡ bỏ đủ lâu để quá trình chuyển hướng diễn ra.

Tuy nhiên, bản demo của các nhà nghiên cứu là một bằng chứng phản biện mạnh mẽ. Quá trình chuyển hướng của họ diễn ra chỉ trong vài giây trước khi người dùng kịp đọc thông báo, chứ chưa nói đến việc nhấn nút Remove. Đó là một cuộc tấn công tinh vi mà Opera không tìm thấy dấu vết nào trong thực tế, nhưng nó vẫn hoạt động mà không cần bất kỳ cú nhấp chuột nào sau khi đã được thiết lập.

Rủi ro ở đây chưa bao giờ nằm ở bản thân tính năng làm đẹp giao diện. Đó là khả năng tiếp cận. Một khi CSS của Mod có thể đi theo bạn từ trang web này sang trang web khác, thì việc "chỉ là định dạng kiểu dáng" cũng đã là quá đủ để gây họa.

Đây là một biến thể của một ý tưởng quen thuộc: việc đánh cắp dữ liệu chỉ bằng CSS thường bị kẹt lại trên trang mà nó được đưa vào, nhưng ở đây nó đã đi theo trên mọi trang web mà nạn nhân mở ra.

Đây cũng không phải là tính năng đầu tiên của Opera bị lợi dụng để chống lại người dùng; trước đó đã có lỗi MyFlaw vào năm 2024 trong tính năng My Flow của Opera, và Opera đã được cảnh báo về hành vi tự động cài đặt này từ năm 2023.