-
09/04/2020
-
123
-
1.513 bài viết
Lộ lỗ hổng nguy hiểm trong hệ thống quảng cáo Meta, đe dọa an toàn tài khoản Facebook
Các chuyên gia an ninh mạng đã công bố hai lỗ hổng thuộc dạng Cross-Site Scripting (XSS) trong Meta Conversions API Gateway (một thành phần hạ tầng quan trọng được Meta sử dụng và cung cấp cho hàng triệu website trên toàn cầu). Điều đáng lo ngại là các lỗ hổng này có thể bị khai thác âm thầm, không cần người dùng tương tác, tạo ra nguy cơ chiếm quyền điều khiển tài khoản Facebook ở quy mô rất lớn.
Meta vận hành một cổng trung gian mang tên "Conversions API Gateway", trong đó có một file JavaScript quan trọng là "capig-events.js". File này được Meta tự động tải và thực thi trên nhiều nền tảng chính thức như "meta[.]com", "business[.]facebook[.]com", "developers.facebook[.]com", đồng thời xuất hiện trên hàng triệu website bên thứ ba sử dụng dịch vụ quảng cáo và theo dõi chuyển đổi của Meta.
Vấn đề là khi một đoạn mã JavaScript được nhúng vào website, nó sẽ kế thừa toàn bộ quyền bảo mật của website đó. Vì vậy, chỉ cần script này có lỗ hổng, mọi website sử dụng nó đều trở thành “nạn nhân tiềm năng”, tạo ra một rủi ro chuỗi cung ứng cực kỳ nguy hiểm.
Lỗ hổng thứ nhất: XSS phía client do không kiểm tra nguồn gửi (origin)
Lỗ hổng đầu tiên tồn tại ngay trong file "capig-events[.]js" chạy trên trình duyệt người dùng. Khi một trang web được mở từ một cửa sổ khác, script này sẽ lắng nghe sự kiện "postMessage" để nhận cấu hình.
Sai sót nghiêm trọng ở đây là: script không kiểm tra nguồn gửi thông điệp. Thay vì xác minh xem thông điệp đến từ domain đáng tin cậy, nó lại lưu trực tiếp origin đó và dùng để tải thêm một file JavaScript khác từ chính origin này.
Nói đơn giản, kẻ tấn công có thể:
Sai sót nghiêm trọng ở đây là: script không kiểm tra nguồn gửi thông điệp. Thay vì xác minh xem thông điệp đến từ domain đáng tin cậy, nó lại lưu trực tiếp origin đó và dùng để tải thêm một file JavaScript khác từ chính origin này.
Nói đơn giản, kẻ tấn công có thể:
- Gửi một thông điệp giả mạo
- Đưa vào một domain do mình kiểm soát
- Khiến trình duyệt nạn nhân tự động tải và chạy mã độc
- Đây là một dạng Client-Side XSS, cho phép thực thi mã JavaScript tùy ý trong ngữ cảnh của website đang mở (bao gồm cả các trang của Meta).
Dù Meta có triển khai các cơ chế bảo vệ như Content Security Policy (CSP) hay Cross-Origin-Opener-Policy (COOP), các nhà nghiên cứu vẫn tìm ra cách vượt qua.
Một số trang Meta, đặc biệt là các trang trợ giúp khi chưa đăng nhập, cho phép tải script từ các bên phân tích dữ liệu thứ ba. Chỉ cần một trong các domain này bị chiếm quyền (subdomain takeover, XSS, upload file), kẻ tấn công đã có thể đặt mã độc vào đó.
Ngoài ra, trên Facebook Android WebView, việc tái sử dụng "window[.]name" kết hợp với "window[.]open()" cho phép kẻ tấn công giành lại quyền truy cập vào cửa sổ gốc, từ đó gửi thông điệp độc hại ngay trong ngữ cảnh “đáng tin”.
Một số trang Meta, đặc biệt là các trang trợ giúp khi chưa đăng nhập, cho phép tải script từ các bên phân tích dữ liệu thứ ba. Chỉ cần một trong các domain này bị chiếm quyền (subdomain takeover, XSS, upload file), kẻ tấn công đã có thể đặt mã độc vào đó.
Ngoài ra, trên Facebook Android WebView, việc tái sử dụng "window[.]name" kết hợp với "window[.]open()" cho phép kẻ tấn công giành lại quyền truy cập vào cửa sổ gốc, từ đó gửi thông điệp độc hại ngay trong ngữ cảnh “đáng tin”.
Lỗ hổng thứ hai: Stored XSS phía backend (mức độ nguy hiểm cao hơn)
Lỗ hổng thứ hai được đánh giá nghiêm trọng hơn, nằm ở phần backend của Conversions API Gateway. Khi người dùng tạo các quy tắc sự kiện (IWL rules) thông qua giao diện quản trị, hệ thống backend sẽ sinh ra mã JavaScript bằng cách nối trực tiếp chuỗi dữ liệu do người dùng cung cấp mà không hề lọc hay escape ký tự nguy hiểm.
Các tham số như domain, loại sự kiện, cấu hình trích xuất… có thể bị chèn ký tự đặc biệt để thoát khỏi chuỗi JavaScript và tiêm mã độc. Đây là Stored XSS, nghĩa là mã độc được lưu lại và sẽ tự động thực thi với mọi người truy cập sau đó. Nguy hiểm hơn, việc khai thác không cần bất kỳ thao tác nào từ phía nạn nhân, mã độc sẽ chạy ngay trong phiên đăng nhập Facebook hợp lệ.
Các tham số như domain, loại sự kiện, cấu hình trích xuất… có thể bị chèn ký tự đặc biệt để thoát khỏi chuỗi JavaScript và tiêm mã độc. Đây là Stored XSS, nghĩa là mã độc được lưu lại và sẽ tự động thực thi với mọi người truy cập sau đó. Nguy hiểm hơn, việc khai thác không cần bất kỳ thao tác nào từ phía nạn nhân, mã độc sẽ chạy ngay trong phiên đăng nhập Facebook hợp lệ.
Phạm vi ảnh hưởng và mức độ nguy hiểm
Conversions API Gateway là mã nguồn mở, được triển khai bởi rất nhiều tổ chức trên chính hạ tầng của họ. Nghiên cứu cho thấy hệ thống này đã được triển khai ít nhất 100 triệu lần trên toàn cầu.
Điều đó đồng nghĩa:
Điều đó đồng nghĩa:
- Không chỉ Meta bị ảnh hưởng
- Mà bất kỳ website nào sử dụng gateway này đều có nguy cơ
- Người dùng Facebook có thể bị tấn công chỉ bằng cách truy cập một trang web “vô hại”
Trong kịch bản xấu nhất, tin tặc có thể:
- Chiếm quyền phiên đăng nhập Facebook
- Đánh cắp dữ liệu, cookie, token
- Thực hiện lừa đảo, phát tán mã độc ở quy mô lớn
Khuyến nghị và biện pháp phòng tránh
Các chuyên gia an ninh mạng khuyến cáo:
- Meta và các tổ chức sử dụng Conversions API Gateway cần khẩn trương rà soát, vá lỗi và kiểm tra toàn bộ logic sinh mã JavaScript
- Tuyệt đối không nối chuỗi trực tiếp với dữ liệu người dùng
- Kiểm tra chặt chẽ "event[.]origin" khi sử dụng "postMessage"
- Áp dụng CSP nghiêm ngặt và hạn chế tối đa domain bên thứ ba
Với người dùng cuối, cần:
- Hạn chế đăng nhập Facebook trên các website không rõ nguồn gốc
- Nếu cẩn thận thì nên đăng xuất khi không sử dụng
- Theo dõi các cảnh báo bảo mật từ Meta là những biện pháp giảm thiểu rủi ro cần thiết.
Vụ việc cho thấy ngay cả những hệ thống lớn như Meta cũng có thể gặp sai sót nghiêm trọng ở những chi tiết tưởng chừng “nhỏ”. Khi một đoạn mã được dùng rộng rãi trên hàng triệu website, chỉ một lỗ hổng cũng có thể tạo ra thảm họa ở quy mô toàn cầu. Đây là lời cảnh tỉnh rõ ràng về tầm quan trọng của bảo mật chuỗi cung ứng và việc kiểm soát chặt chẽ mã JavaScript chạy trong trình duyệt người dùng.
WhiteHat
Chỉnh sửa lần cuối:
