- Đã bắt lưu lượng HTTPS thực tế bằng proxy MITM của ứng dụng iOS Nhà Trắng để phân tích ứng dụng trao đổi với những máy chủ nào và những dữ liệu gì
- Ngoài whitehouse.gov, ứng dụng còn giao tiếp với 31 host bên thứ ba như Elfsight, OneSignal, YouTube, Google DoubleClick, Facebook, Twitter
- Thông tin profiling người dùng như ngôn ngữ, múi giờ, IP, mẫu thiết bị, số phiên làm việc... được gửi liên tục tới OneSignal
- Các script bên ngoài được thực thi thông qua bộ nạp widget Elfsight, và mã theo dõi quảng cáo Google DoubleClick cũng hoạt động bên trong ứng dụng
- Dù trong privacy manifest của ứng dụng hiển thị “không thu thập dữ liệu”, trên thực tế vẫn diễn ra nhiều hoạt động theo dõi và truyền dữ liệu tới bên thứ ba
Tổng quan phân tích lưu lượng mạng
- Đã bắt và phân tích lưu lượng mạng của ứng dụng iOS chính thức Nhà Trắng bằng proxy MITM (man-in-the-middle)
- Cài đặt mitmproxy trên môi trường macOS và ghi lại toàn bộ lưu lượng HTTPS của iPhone thông qua proxy
- Phiên bản ứng dụng là v47.0.4 (build 81), và đã duyệt toàn bộ các tab Home, News, Live, Social, Explore
- Lưu lượng được giải mã và ghi lại mà không bị chỉnh sửa, theo đúng cách sử dụng thông thường của người dùng
Các máy chủ mà ứng dụng kết nối
- Trong một phiên duy nhất, ứng dụng gửi yêu cầu tới 31 host duy nhất (không tính lưu lượng hệ thống iOS)
- Trong tổng 206 yêu cầu, chỉ có 48 yêu cầu (23%) được gửi tới whitehouse.gov
- 158 yêu cầu còn lại (77%) được gửi tới các dịch vụ bên thứ ba như Elfsight, OneSignal, YouTube, Google DoubleClick, Facebook, Twitter
- Các đích yêu cầu chính
- whitehouse.gov: WordPress API (tin tức, trang chủ, thư viện ảnh...)
- YouTube: nhúng video và thumbnail
- Elfsight: tải widget, tài nguyên tĩnh, lưu trữ tệp, boot API...
- OneSignal: phân tích và profiling người dùng
- Facebook/Twitter CDN: tải hình ảnh
- Google APIs và DoubleClick: quảng cáo và theo dõi
Dữ liệu được gửi tới OneSignal
- Khi ứng dụng chạy, phần thân yêu cầu HTTPS được gửi tới
api.onesignal.com
- Thông tin bao gồm: ngôn ngữ, múi giờ, quốc gia, địa chỉ IP, thời điểm chạy lần đầu và hoạt động cuối, mẫu thiết bị, phiên bản OS, loại mạng (WiFi/cellular), nhà mạng, trạng thái jailbreak, số phiên, thời lượng phiên, định danh duy nhất
- Mỗi lần mở ứng dụng, nhiều yêu cầu PATCH được gửi để cập nhật hồ sơ
- Ở lần chạy đầu tiên có 18 yêu cầu PATCH, và trong toàn bộ phiên ghi nhận 9 yêu cầu OneSignal
- Trình tự: truy vấn hồ sơ hiện có bằng GET → cập nhật thông tin phiên bằng PATCH
- OneSignal liên tục ghi lại IP theo từng phiên, thời gian hoạt động, số phiên, thời lượng phiên
- Hồ sơ được cập nhật khi địa chỉ IP thay đổi
- Dấu thời gian
first_active không thay đổi sau thời điểm cài đặt
- Kết quả là OneSignal duy trì hồ sơ lâu dài theo từng người dùng, theo dõi mô hình sử dụng ứng dụng và môi trường mạng
- User-Agent của lưu lượng là
WhiteHouse/81 CFNetwork/3860.400.51 Darwin/25.3.0
Lưu lượng liên quan đến Elfsight
- 6 widget và bộ nạp JavaScript hai giai đoạn được xác nhận trong phân tích tĩnh cũng xuất hiện trong lưu lượng thực tế
- Khi mở tab Social, ứng dụng kết nối tới 13 tên miền Elfsight
elfsightcdn.com, core.service.elfsight.com, static.elfsight.com, storage.elfsight.com, widget-data.service.elfsight.com, video-proxy.wu.elfsightcompute.com ...
- Khi gửi ID widget thông qua yêu cầu
/p/boot/, máy chủ trả về danh sách script sẽ được thực thi (mảng assets)
- Ví dụ: TikTok →
tiktokFeed.js, Instagram → instashow.js, Facebook → facebookFeed.js, YouTube → yottie.js
- Hàm
loadAssets của ứng dụng chèn từng URL thành thẻ <script> để thực thi
- Cấu trúc này cho phép máy chủ quyết định đoạn mã nào sẽ được chạy
- Trong phiên, máy chủ Elfsight thiết lập hơn 10 cookie
- Bao gồm
elfsight_viewed_recently, cookie theo dõi Cloudflare (_cfuvid, __cf_bm), định danh phiên...
Theo dõi quảng cáo Google DoubleClick
- Khi nhúng YouTube, hạ tầng theo dõi quảng cáo của Google cũng được tải cùng
- Ghi nhận các yêu cầu tới
googleads.g.doubleclick.net, static.doubleclick.net
- DoubleClick là nền tảng phân phối và theo dõi quảng cáo của Google,
nên mã theo dõi quảng cáo đang được thực thi ngay bên trong ứng dụng chính thức của Nhà Trắng
- Privacy manifest của ứng dụng không nêu rõ nội dung này
Sự không khớp giữa privacy manifest và hành vi thực tế
Phương pháp phân tích
- Công cụ proxy: mitmproxy (mitmdump)
- Môi trường: macOS, iPhone(iOS), cùng một mạng WiFi
- Chứng chỉ: thêm CA của mitmproxy vào thiết lập tin cậy trên iOS
- Phạm vi bắt gói: lưu lượng HTTPS phát sinh khi duyệt toàn bộ 5 tab của ứng dụng
- Có chỉnh sửa hay không: không, chỉ quan sát lưu lượng
- Xử lý thông tin cá nhân: IP, định danh thiết bị, OneSignal ID... đều đã được che trong bài viết
- Không có hành vi xâm nhập hoặc thao túng máy chủ, chỉ ghi lại các kết nối do ứng dụng tự nguyện thực hiện
Nghiên cứu liên quan
- Báo cáo phân tích tĩnh của ứng dụng iOS Nhà Trắng
- Kết quả phân tích Thereallo của phiên bản Android
Giới thiệu về Atomic Computer
- Atomic Computer là công ty cung cấp dịch vụ an ninh mạng, hạ tầng và phát triển
- Công ty thực hiện các dịch vụ đánh giá và phân tích bảo mật ứng dụng di động
1 bình luận
Ý kiến trên Hacker News
Trong tổng số các yêu cầu tới bên thứ ba, 43% liên quan đến Google (bao gồm YouTube, Fonts, Analytics), và nếu cộng cả Facebook với Twitter thì vào khoảng 55%
Việc một ứng dụng của chính phủ nhúng quá nhiều mã theo dõi hoặc phân tích là vấn đề, nhưng riêng Google Fonts hay YouTube embed thì tôi không nghĩ là quá nghiêm trọng
Nhìn tiêu đề tôi đã kỳ vọng sẽ thấy những domain gây sốc kiểu Palantir hay ICE, hóa ra lại là Google/Facebook nên hơi nhạt
Thay vì chỉ viết “77% là yêu cầu tới bên thứ ba”, tiêu đề nên tập trung vào bản chất và mức độ nghiêm trọng của các yêu cầu đó
Tham khảo thêm thì atomic.computer cũng đang dùng Google Fonts và Analytics. Trước khi quy kết mọi yêu cầu bên thứ ba đều xấu, cũng nên kiểm tra lại chính website của mình
Rốt cuộc họ vẫn có thể tự quyết định sẽ theo dõi loại dữ liệu nào qua ứng dụng, và cũng có thể thu thập dữ liệu theo kiểu “rửa” qua các nhà cung cấp tracking phổ biến
Các yêu cầu liên quan đến Google có vẻ được đưa vào vì mục đích minh bạch, chứ không phải để công kích ứng dụng White House
atomic.computer không hề nói rằng yêu cầu tới bên thứ ba tự thân là xấu, mà chỉ phân tích chúng như một công cụ thu thập và theo dõi dữ liệu
Người dùng không thể kiểm soát dữ liệu sẽ được dùng ra sao sau khi bị thu thập, nên rốt cuộc sự thiếu quyền kiểm soát mới là vấn đề cốt lõi
Họ nói đã cài mitmproxy trên Mac rồi route lưu lượng iPhone qua đó để giải mã HTTPS
Tôi khá tò mò không biết việc khiến iPhone tin một chứng chỉ người dùng lại dễ đến vậy sao
Trên Android thì việc soi lưu lượng mạng khá phiền phức
Những thử nghiệm như thế này cho thấy rất rõ rằng chúng ta cần có quyền kiểm soát thiết bị của mình. Ta có quyền biết dữ liệu đang được gửi đi đâu và gửi những gì
Nó cũng làm tôi nhớ đến vụ Zoom từng gửi lưu lượng sang Trung Quốc, hay chuyện Facebook theo dõi dữ liệu duyệt web bên trong ứng dụng
Tuy nhiên sẽ có ngoại lệ nếu ứng dụng dùng OpenSSL riêng hoặc áp dụng certificate pinning
Những ứng dụng lớn như Facebook hay Twitter đa phần đều dùng pinning, còn các app đơn giản kiểu này thì thường không
Nhưng với các ứng dụng có pinning thì khó vượt qua, và nền tảng cho phép cài ứng dụng tự tạo sẽ có lợi thế hơn
Với các trường hợp pinning chặt như app ngân hàng thì thường sẽ cần thiết bị đã root
Thậm chí còn có thể tưởng tượng chúng đã được dùng làm dữ liệu huấn luyện deepfake
Có các luồng thảo luận trước đó liên quan
Thảo luận trước 1, Thảo luận trước 2
Tôi chặn hầu hết các domain quảng cáo (ví dụ: doubleclick.net) ở cấp DNS
Khá ngạc nhiên khi phần lớn website, bao gồm cả trang tin, lại mở ra vô số kết nối tới bên thứ ba
atomic.computer cũng cố tải Cloudflareinsights và Google Fonts, nhưng bị chặn trên mạng của tôi
Những yêu cầu như vậy là nguyên nhân chính khiến Google có thể theo dõi người dùng trên toàn bộ Internet
Ứng dụng của chính phủ phải chịu một tiêu chuẩn cao hơn rất nhiều so với ứng dụng B2C thông thường
Việc tải Google Fonts thì còn chấp nhận được, nhưng gửi telemetry tới OneSignal hay Facebook lại là chuyện khác
Ở Úc, theo quy định PSPF và ISM, dữ liệu của chính phủ không được truyền ra bên ngoài không đáng tin cậy
Những ứng dụng như vậy sẽ trượt đánh giá IRAP ngay lập tức
Cách khắc phục rất đơn giản — tự host font, dùng phân tích 1st-party, và coi mọi yêu cầu ra bên ngoài là một vector rò rỉ dữ liệu
Phần lớn ứng dụng B2C cũng có tỷ lệ yêu cầu tới bên thứ ba trên 50%
Mức 77% của ứng dụng White House không quá gây sốc, nhưng vấn đề là họ đã khai sai mục dữ liệu được thu thập trên App Store
Sau đó thông tin đã được chỉnh sửa và hiện giờ được hiển thị đúng
Ứng dụng chính phủ đúng là nên chịu tiêu chuẩn cao hơn, nhưng con số 77% có thể cũng không khác quá nhiều so với mặt bằng ngành
Rất nhiều ứng dụng nhúng mã quảng cáo và tracker, nên mức này có khi chỉ là mức bình thường
Có thể xem danh sách SDK mà ứng dụng sử dụng trên AppGoblin
Privacy manifest ghi là “không thu thập dữ liệu”, nhưng trên thực tế ứng dụng lại gửi model thiết bị, IP, số phiên, ID theo dõi tới OneSignal
Đây rõ ràng là một vấn đề khai báo gian dối (false attestation)
Bước tiếp theo có lẽ sẽ là thêm quảng cáo