1 điểm bởi GN⁺ 2023-12-22 | 3 bình luận | Chia sẻ qua WhatsApp
  • HotspotHelper API được cung cấp từ iOS 9 cho phép ứng dụng nhận thông tin về các điểm truy cập WiFi xung quanh, có thể trở thành một con đường theo dõi vị trí mà không cần sự đồng ý của người dùng
  • Ứng dụng có thể đọc SSID và BSSID của các mạng lân cận trong callback đã đăng ký, rồi gửi lên máy chủ để dùng trong logic ước tính vị trí
  • Vì phần lớn điểm truy cập WiFi là cố định, khi kết hợp với các dịch vụ công khai như Precisely hoặc Google Geolocation API, có thể ước tính vị trí dựa trên WiFi
  • Hành vi này không chỉ xảy ra khi thao tác trong màn hình cài đặt, mà còn có thể xảy ra khi thiết bị quét WiFi xung quanh trong trạng thái bị khóa; người dùng không có cách nào để biết hoặc tắt nó
  • Các ứng dụng có phạm vi sử dụng lớn như WeChat và Alipay cũng đã triển khai tính năng này, dẫn đến yêu cầu rằng Apple cần cung cấp tùy chọn cho phép/từ chối rõ ràng như quyền vị trí và thông báo

Thông tin WiFi mà HotspotHelper API phơi lộ

  • Từ iOS 9, Apple cung cấp API HotspotHelper, cho phép ứng dụng yêu cầu chức năng hỗ trợ hệ thống kết nối với điểm truy cập WiFi
  • Mã ví dụ cho thấy luồng ứng dụng nhận thông tin mạng WiFi bằng NEHotspotHelper.register
    • Lấy danh sách mạng lân cận từ command.networkList
    • Đọc network.ssidnetwork.bssid từ từng mạng
    • Có thể chuyển các giá trị này vào logic theo dõi vị trí như trackLocation(withSSID:andMACAddress:)
  • Mục đích ban đầu có thể là hỗ trợ kết nối mượt mà, nhưng ứng dụng cũng có thể dùng SSID và BSSID nhận được làm dữ liệu theo dõi vị trí

Con đường có thể ước tính vị trí mà không cần người dùng đồng ý

  • Thông tin về các điểm truy cập WiFi xung quanh có thể trở thành mốc tham chiếu để ước tính vị trí của người dùng
    • Hầu hết điểm truy cập WiFi không di chuyển sau khi được lắp đặt
    • Có thể dùng danh sách điểm truy cập lân cận để tam giác hóa hoặc ước tính vị trí hiện tại của người dùng
  • Ví dụ về API công khai gồm Precisely Location By Wi-fi Access PointGoogle's Geolocation API
  • Tính năng này không chỉ được kích hoạt khi người dùng thao tác rõ ràng trên màn hình cài đặt
    • Ứng dụng đã đăng ký có thể chạy khi thiết bị quét các điểm truy cập WiFi xung quanh
    • Bao gồm cả trường hợp thiết bị đang bị khóa và nằm trong túi người dùng
  • Ứng dụng có thể lấy SSID và địa chỉ MAC xung quanh rồi gửi lên máy chủ; nếu nhà phát triển muốn, việc theo dõi vị trí gần như thời gian thực là có thể
  • Người dùng khó biết quá trình này có đang diễn ra trên màn hình hay không, và cũng không có lựa chọn để vô hiệu hóa tính năng

Trường hợp WeChat và Alipay

  • WeChat và Alipay được nhắc đến là các ứng dụng lớn đã triển khai tính năng này
  • Hai ứng dụng này được sử dụng cực kỳ rộng rãi tại Trung Quốc đại lục và liên quan đến nhiều lĩnh vực trong đời sống của người dân
  • Khi khả năng theo dõi vị trí không cần sự đồng ý của người dùng xuất hiện trong các ứng dụng phổ biến như vậy, phạm vi ảnh hưởng sẽ lớn
  • Dù mục đích thu thập dữ liệu có thể là cải thiện trải nghiệm người dùng hoặc hỗ trợ kết nối WiFi lân cận, logic phía máy chủ vẫn không minh bạch, để lại vấn đề về tính minh bạch và trách nhiệm giải trình

Phản hồi của Apple và mô hình quyền cần thiết

  • Vấn đề này đã được phát hiện khoảng 2 năm trước và được chia sẻ trên Bilibili bằng video, nhưng mức độ nhận biết công khai còn hạn chế
  • Các lo ngại cũng đã được chuyển tới Apple và đã nhận được phản hồi qua email, nhưng sau đó không có cập nhật bổ sung nào
  • Apple cần cung cấp cho người dùng một lựa chọn để vô hiệu hóa tính năng này, tương tự các thiết lập quyền riêng tư như vị trí và thông báo
  • Trước khi ứng dụng truy cập tính năng này, ứng dụng phải yêu cầu quyền một cách rõ ràng, và người dùng phải có thể cho phép hoặc từ chối truy cập trong khi sử dụng ứng dụng
  • HotspotHelper vẫn là một điểm gây tranh cãi giữa cam kết bảo vệ quyền riêng tư của Apple và việc bảo vệ dữ liệu người dùng

3 bình luận

 
GN⁺ 2023-12-22
Ý kiến trên Hacker News
  • Nhìn vào tài liệu được liên kết, API này có vẻ nhằm giúp ứng dụng do chủ sở hữu hotspot Wi-Fi tạo ra hỗ trợ người dùng kết nối vào hotspot đó: https://developer.apple.com/documentation/networkextension/h...
    NEHotspotHelper cho phép ứng dụng tham gia vào quá trình xác thực mạng hotspot, tức các mạng Wi-Fi mà người dùng phải tương tác với mạng để truy cập Internet rộng hơn
    Tài liệu cũng nói rằng nó chỉ hữu ích cho tích hợp hotspot; các tác vụ khác như tích hợp phụ kiện hay định vị dựa trên Wi-Fi bị hạn chế về kỹ thuật và kinh doanh, và trước khi dùng cần được Apple phê duyệt entitlement đặc biệt com.apple.developer.networking.HotspotHelper
    Vậy thì câu hỏi là vì sao các ứng dụng như WeChat hay Alipay lại được cấp quyền này

    • Không rõ với Alipay, nhưng WeChat có vẻ cần chức năng này vì WeChat Wifi, cho phép người dùng truy cập hotspot Internet bằng tài khoản WeChat: https://mp.weixin.qq.com/s?__biz=MzI1NjA0NzQzOQ==∣=265026...
    • Ngay cả nếu chỉ cấp quyền cho các ứng dụng hotspot thực sự, đây vẫn không phải là thiết kế ưu tiên quyền riêng tư thân thiện với người dùng
      Việc dùng API kiểu này nên hiển thị hộp thoại quyền cho người dùng trước khi ứng dụng nhận thông báo nền, và người dùng phải có thể chọn giữa “chỉ cho phép một lần, cho phép khi đang dùng, cho phép trong nền, không cho phép”
      Hoạt động của ứng dụng cũng nên được hiển thị trong Báo cáo quyền riêng tư của ứng dụng
    • Có lẽ vì thị trường Trung Quốc quá quan trọng
      WeChat là một “siêu ứng dụng” và còn có thể lập luận rằng nó dùng để kết nối hotspot Wi-Fi, nhưng với Alipay thì khó nghĩ ra lời giải thích hợp lý
    • Có vẻ các ứng dụng VPN cũng dùng chức năng này: https://github.com/pia-foss/mobile-ios/blob/4618b55161ec5b8b...
    • Theo một số điều kiện Apple tóm tắt, có vẻ không cần entitlement này: https://developer.apple.com/forums/thread/679038
      1. Khi ứng dụng dùng API CoreLocation và đã được người dùng phê duyệt truy cập vị trí chính xác. Trường hợp này trông vô hại vì ứng dụng vốn đã nhận được vị trí chính xác
      2. Khi ứng dụng đã cấu hình mạng Wi-Fi hiện tại bằng API NEHotspotConfiguration. Có vẻ phạm vi của bài viết này chính là trường hợp này
      3. Khi ứng dụng đã cài đặt một cấu hình VPN đang hoạt động. Điều này khá bất ngờ
      4. Khi ứng dụng đã cài đặt một cấu hình NEDNSSettingsManager đang hoạt động. Không rõ chính xác là gì, nhưng có vẻ tương tự phía VPN
  • Để tham khảo, muốn dùng API này cần có entitlement đặc biệt, và chỉ nhận được sau khi yêu cầu Apple và chứng minh mục đích sử dụng là chính đáng
    Đây không phải API phổ thông mà ứng dụng nào cũng dùng được

    • Điều đó chẳng an ủi được mấy. Theo bài viết, Apple đã cấp quyền đó cho WeChat và Alipay
      Dĩ nhiên đây là các “siêu ứng dụng” và dịch vụ hotspot Wi-Fi có thể là một trong các tính năng chúng cung cấp, nhưng chính vì thế quyền này càng nên là thứ người dùng có thể cấp, giống như “truy cập mạng cục bộ”
      Nếu không quan tâm đến tính năng hotspot, tôi không muốn ứng dụng có năng lực đó
    • Phần lớn quyền đều hiển thị lời nhắc quyền riêng tư để người dùng có thể tắt tính năng
      Nếu không tự dùng ứng dụng thử nghiệm thì không biết quyền này có như vậy không, nhưng tôi cho rằng nó nên hỏi sự cho phép của người dùng
    • Nếu Facebook, Instagram, Messenger hoặc Alipay, WeChat được nhắc tới trong bài có quyền này và làm điều gì đáng ngờ, đó có thể là một vấn đề quyền riêng tư lớn
      Tôi tò mò liệu Apple có phân tích việc sử dụng quyền và thu hồi khi bị lạm dụng hay không
      Tương tự, tôi nhớ hồi “scandal” Facebook VPN, Apple đã thu hồi chứng chỉ ký enterprise của Facebook
    • Không biết việc này tốt hơn hay tệ hơn
      Nghe như kiểu “đừng lo, bạn hay tôi không thể lạm dụng nó, chỉ các tập đoàn lớn và bên thu thập dữ liệu mới làm được”
    • Rốt cuộc chỉ các ứng dụng lớn mới có thể theo dõi người dùng à
      Có vẻ tác giả là người Trung Quốc nên quan tâm đến WeChat và Alipay, nhưng tôi tự hỏi Facebook và Google thì sao
  • Tôi cứ tưởng người dùng vốn đã nhận được lời nhắc cho phép quyền này rồi
    Dạo này khá nhiều ứng dụng hỏi có cho phép truy cập “mạng cục bộ” hay không; tôi hiểu đó là khả năng nhìn thấy các điểm phát Wi-Fi cục bộ nên hầu như luôn từ chối
    Đọc bài này xong tôi cũng tắt luôn trong Spotify
    Tuy nhiên phần lớn người dùng không biết thông tin này có thể được dùng để suy luận vị trí, nên hộp thoại quyền cần được cải thiện

    • Từ góc nhìn nhà phát triển, quyền “mạng cục bộ” có lý do để gây khó chịu
      Thứ nhất, cách triển khai rất cẩu thả. Khác với các quyền khác, không có cách nào hiển thị lời nhắc một cách rõ ràng; nó đột ngột xuất hiện khi Apple cho là phù hợp
      Ngay cả khi cần cho chức năng cốt lõi, cũng không có cách nào hướng dẫn người dùng một cách tự nhiên, và cũng không có cách kiểm tra quyền đã được cấp hay chưa
      Thứ hai, quan trọng hơn, các ứng dụng của chính Apple không hiển thị cảnh báo này, nên điều kiện cạnh tranh là không công bằng
      AirPlay và các thứ tương tự hoạt động mượt mà, còn công nghệ cạnh tranh thì không; vì nhà phát triển không thể biết trạng thái quyền nên trải nghiệm người dùng trở nên tệ hơn
      Nếu Apple đưa ra hạn chế, họ cũng phải áp dụng cho ứng dụng của mình. AirPlay và AirDrop lần lượt phải hỏi quyền truy cập Bluetooth và mạng cục bộ; ứng dụng Photos khi khởi chạy phải hiện lời nhắc “chọn ảnh, cho phép tất cả, từ chối”, và ứng dụng Camera cũng không được ghi vào thư viện ảnh nếu không có lời nhắc tương tự
      Có như vậy Apple mới có động lực thiết kế đúng trải nghiệm người dùng quanh các hạn chế này, và tìm ra giải pháp sáng tạo hơn thay vì các hộp thoại gây bối rối
      Hiện tại họ không có động lực để thiết kế tốt. Bất kỳ lập trình viên iOS nào từng xử lý các API này đều biết thiết kế tệ đến mức nào vì các hạn chế tùy tiện và bất ngờ
    • Quyền đó dùng để gửi/nhận lưu lượng mạng cục bộ, chẳng hạn giao tiếp với thiết bị trong cùng subnet hoặc tìm các đích như Chromecast
      AirPlay không cần quyền này
    • Tôi hiểu nó theo nghĩa quét LAN, thậm chí có thể cả tailnet, để tìm các dịch vụ như Hue bridge, loa Sonos, Chromecast
  • Tài liệu: https://developer.apple.com/documentation/technotes/tn3111-i...
    Quy trình xét duyệt có thể chặn các ứng dụng spam nhỏ, nhưng như tác giả và những người khác đã nói, có lẽ sẽ không chặn được các ông lớn

    • Xem tài liệu thì có thể xác nhận rằng lệnh gọi API này cần quyền
      Tuy nhiên vẫn chưa rõ liệu khi có quyền đó, người dùng có thấy lời nhắc cho phép từ chối việc dùng API hay không
  • Có cách nào kiểm tra những ứng dụng phổ biến nào đang dùng thứ này không
    Cũng như hầu hết mọi người ở đây, tôi không cài WeChat hay Alipay, nhưng tò mò về các ứng dụng như Instagram, Facebook, WhatsApp, Twitter, TikTok, Snapchat, Chrome, Firefox, Photoshop, Lightroom

    • Nghe có vẻ như tôi đang lặp lại cùng một chuyện, nhưng App Store nên cho xem các quyền mà ứng dụng sẽ yêu cầu trước khi cài đặt
      Không nên bắt người dùng tải xuống và cài đặt ứng dụng chỉ để xem nó sẽ cố làm những gì
      App Store vốn đã biết thông tin này, và việc hiển thị trong phần chi tiết ứng dụng trước khi tải xuống chắc hẳn rất dễ
  • Cũng nên nói về chuyện iOS/macOS bật thiết bị không dây Wi-Fi và Bluetooth sau mỗi lần cập nhật hệ thống
    Trái với những lời ru ngủ từ bộ phận marketing, trông cứ như một thiết bị được cố tình tạo ra để tối đa hóa giám sát

    • Theo dao cạo Hanlon, có thể Apple chỉ lười nên để các thiết lập này mặc định bật
      Có vẻ họ chọn không theo dõi trạng thái thiết lập vì 99% người dùng dùng hoặc cần chúng, và Apple cũng thích bàn phím, chuột Bluetooth
    • Chuyện này thật sự gây khó chịu
  • Giờ tôi thấy tò mò. Còn những ứng dụng nào có quyền này nữa
    Có cách nào biết trong số các ứng dụng cài trên điện thoại của tôi, ứng dụng nào có quyền này không

  • Đây là một trong những vấn đề lớn của một nền tảng hoàn toàn bị khóa kín
    Việc chủ sở hữu nền tảng tôn trọng quyền riêng tư và ngăn người khác xâm phạm rốt cuộc chỉ là một lời hứa miệng mà thôi

    • Quan điểm đó có thể sai. Không ai kỳ vọng Apple hoàn hảo
      Bảo mật nền tảng điện toán vốn đã khó, và đặc biệt quyền riêng tư được định nghĩa mơ hồ hơn nhiều về mặt văn hóa so với bảo mật máy tính thông thường, vốn được định nghĩa bằng việc vượt qua kiểm soát truy cập kỹ thuật
      Điểm cốt lõi là Apple có cố đóng vai trò người tuyển chọn kiểm soát hệ sinh thái hay không
      Trước đây khi Uber làm những chuyện đáng ngờ, Apple từng chơi trò đấu gà để buộc họ dừng lại
      Tất nhiên Alipay và WeChat có thể khó hơn, vì thị trường Trung Quốc quá lớn và quan trọng đối với thành công hiện tại của Apple
      Sẽ rất thú vị xem Apple thích nghi với chuyện này thế nào trong vài năm tới
      Các nền tảng mở cũng có vấn đề này, và có khi còn phụ thuộc vào lời hứa miệng nhiều hơn
      Nếu ý bạn không phải là “nếu vấn đề này sẽ không được giải quyết thì thà dùng nền tảng mở còn hơn”, thì tôi không rõ luận điểm là gì
      Vấn đề của lập luận đó là đây chỉ là một trường hợp thất bại trong nhiều vấn đề và có thể được giải quyết sau này, còn các nền tảng mở thì ngoài vấn đề này còn có nhiều vấn đề chưa được giải quyết hơn
  • Tôi nghe có phàn nàn rằng tiêu đề này bị phóng đại; nếu có đề xuất tiêu đề nào hay hơn, chính xác hơn và trung lập hơn thì có thể đổi

    • “Các ứng dụng iOS có quyền đặc biệt có thể theo dõi người dùng bằng quét SSID” có vẻ mô tả đúng nhất
      Tôi không chắc, nhưng sau khi đọc bài, tiêu đề hiện tại không có cảm giác hoàn toàn đúng như một sự thật
    • Tôi thấy tiêu đề hiện tại cũng ổn
  • Việc sử dụng NEHotspotHelper cần quyền đặc biệt com.apple.developer.networking.HotspotHelper phải đăng ký xin cấp, và Apple có lẽ sẽ không cấp nếu ứng dụng không có nhu cầu chính đáng
    Tuy nhiên, điều này dường như cho thấy sự không tương thích giữa chiến lược bảo vệ quyền riêng tư của Apple và các siêu ứng dụng như WeChat, Alipay
    Khi một công ty nhồi mọi chức năng vào một ứng dụng duy nhất, ứng dụng đó đột nhiên có mọi quyền, và rất khó nắm được dữ liệu nhạy cảm được dùng khi nào và như thế nào
    Phương Tây thường không xây dựng ứng dụng theo cách này. Ví dụ Comcast có một ứng dụng “WiFi Hotspots” riêng
    Buồn cười là hai ngày trước họ đăng rằng sẽ gộp chức năng đó vào ứng dụng Xfinity chính, nên có lẽ phương Tây cũng đang bắt kịp

    • Người dùng cuối có cách nào để xem ứng dụng nào có quyền này không
    • Facebook cũng là một siêu ứng dụng. Trong nhiều năm, nó đã có tính năng tìm điểm phát Wi‑Fi bên trong ứng dụng
    • Tôi thật sự ghét việc vừa mở ứng dụng là bị dồn dập yêu cầu quyền truy cập camera, micro, danh bạ, v.v.
      Tôi từ chối ngay, và nếu vì thế mà chức năng của ứng dụng bị hỏng thì tôi cũng xóa luôn ứng dụng đó
      Google Maps cứ liên tục nài bật dịch vụ vị trí chính xác, hỏi liệu tôi có đang dẫn đường thay cho bạn bè không và đòi cho phép truy cập danh bạ — tôi cũng từ chối
    • Có thể thu hồi com.apple.developer.networking.HotspotHelper ở đâu trên iOS
      Cài đặt → Quyền riêng tư & Bảo mật → Mạng cục bộ, hay mục khác
    • Rốt cuộc là Apple quyết định công ty nào được lấy dữ liệu vị trí của tôi à. Hay đấy
 
ndrgrd 2023-12-23

Một công ty lấy quyền riêng tư làm điểm bán hàng nhưng phía sau lại âm thầm lấy cắp thông báo và thông tin vị trí của người dùng.

 
joyfui 2023-12-22

Tôi cứ tưởng vì chức năng đó bị chặn nên không thể có thông báo lên/xuống tàu điện ngầm, hóa ra là tính năng này đã có sẵn rồi. Vậy thì tại sao chỉ iPhone là không được nhỉ...