2 điểm bởi GN⁺ 19 ngày trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Đã 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ế

  • Cấu hình quyền riêng tư mà ứng dụng khai báo:
    NSPrivacyCollectedDataTypes: []
    NSPrivacyTracking: false
    
  • Dữ liệu truyền đi được xác nhận trong phiên thực tế:
    • Gửi tới OneSignal các thông tin mẫu thiết bị, OS, IP, múi giờ, ngôn ngữ, số phiên, thời lượng phiên, định danh duy nhất
    • Kết nối tới 13 tên miền Elfsight và nhận hơn 10 cookie theo dõi
    • Thực thi mã theo dõi quảng cáo Google DoubleClick
    • Phát sinh yêu cầu tới Facebook, Twitter/X, YouTube, Google API
  • Kết quả là dù ứ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

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

    • Không có chuyện ICE hay Palantir bị cấm mua dữ liệu từ Google hoặc Facebook
      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
    • Bài viết thực tế tập trung vào các yêu cầu tới OneSignal và Elfsight hơn là Google hay YouTube
      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
    • Hiện tại có thể thấy chính quyền đang cố đẩy nước Mỹ theo hướng độc đoán, nhưng tôi nghĩ đây là một hệ thống quá lớn nên không dễ thay đổi
    • Kiểu phản biện “atomic.computer cũng dùng yêu cầu bên thứ ba” là một dạng ‘tấn công người đưa tin’, nên khá yếu
      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

    • iOS đến giờ về mặc định vẫn tin chứng chỉ do người dùng cài đặt
      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
    • Trên iOS, cấu hình mitmproxy dễ hơn Android rất nhiều
      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
    • Quá trình cài CA thì hơi rườm rà, nhưng với ứng dụng không có pinning thì chặn bắt lưu lượng không quá khó
      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
    • Điều thú vị là một số cộng đồng bảo mật chê bai MITM proxy, trong khi bản thân họ lại đang bị ảnh hưởng bởi góc nhìn thiên về doanh nghiệp
    • Khi Zoom từng gửi lưu lượng sang Trung Quốc, cũng có khả năng video của các cuộc họp chính phủ đã bị chuyển nguyên trạng sang đó
      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

    • Thực tế là các tiêu chuẩn cao như vậy có tồn tại, nhưng chính quyền hiện tại không tuân thủ chúng
    • Cũng có ý kiến thắc mắc vì sao ứng dụng chính phủ lại phải có tiêu chuẩn cao hơn. Xét cho cùng đây chỉ là vấn đề thương hiệ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

    • Tôi phản đối telemetry bên thứ ba của ứng dụng White House, và cả của các ứng dụng khác nữa. Có thể làm nhiều việc cùng lúc mà
    • Chính việc ứng dụng chính phủ lại được làm theo kiểu B2C mới là vấn đề cốt lõi
    • Cũng từng có những tuyên bố cường điệu kiểu ứng dụng White House gửi dữ liệu sang Huawei, nhưng điều gây ngạc nhiên thực sự là nó nhiều hơn ứng dụng khác tới 20%
  • Ứ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