(评论)
(comments)

原始链接: https://news.ycombinator.com/item?id=38720656

WIFI和蓝牙都是无线通信协议。 虽然它们的用途略有不同,但它们都是通过无线电波传输的,并且有可能泄露用户的位置。 在位置跟踪方面,WIFI和蓝牙信号三角测量可以实现高度准确的位置估计。 理论上,仅蓝牙信号就可以准确确定设备之间的接近程度。 然而,由于担心电池耗尽和性能影响,此功能通常被选择退出并且没有广泛使用。 此外,与传统蓝牙设备相比,低功耗蓝牙(蓝牙 LE 或蓝牙智能)设备的通信功耗更低,从而节省了电池寿命。 总体而言,虽然它们的操作方式存在一些差异,但在位置精度方面的实际影响是相当的。

相关文章

原文
Hacker News new | past | comments | ask | show | jobs | submit login
Apple allows some iOS apps to track user locations via lists of nearby SSIDs (wingu.se)
746 points by lloyds_barclays 17 hours ago | hide | past | favorite | 281 comments










Reading through the linked docs, this API seems to specifically be for apps created by owners of WiFi hotspots to help users connect to those hotspots (https://developer.apple.com/documentation/networkextension/h...).

> NEHotspotHelper allows your app to participate in the process of authenticating with hotspot networks, that is, Wi-Fi networks where the user must interact with the network to gain access to the wider Internet.

> NEHotspotHelper is only useful for hotspot integration. There are both technical and business restrictions that prevent it from being used for other tasks, such as accessory integration or Wi-Fi based location. Before using NEHotspotHelper, you must first be granted a special entitlement (com.apple.developer.networking.HotspotHelper) by Apple.

Which makes sense, but then why exactly are apps like WeChat and Alipay granted this entitlement?



I don't know about Alipay, but afaict WeChat needs this feature for WeChat Wifi, which lets users connect to internet hotspots from their WeChat accounts https://mp.weixin.qq.com/s?__biz=MzI1NjA0NzQzOQ==&mid=265026...


I’m sure that’s valid but I’ve worked for mobile app companies and can guarantee features like this are added just to get the entitlement.


Ah now I see - to get all the entitlements they create a super-app that happens to use those things.

Then they can spy on us for our main use case



Seems like Apple should give users the ability to download an app while rejecting an entitlement.


You can. iOS apps have to request individual permissions - I'm not sure about the specific level of granularity here, but you can deny location access while still letting the rest of the app run, and the app has to be able to deal with it.


No, you can reject permissions, but not entitlements.

Entitlements are granted (statically, per developer certificate or maybe app ID, not sure) by Apple, permissions are (optionally) granted by users at runtime.

The only way to not have an app making use of an API gated by (only) an entitlement is to never install it.

Of course there could be permissions that are gated behind entitlements, but in this case it seems to be only an entitlement.



And even then, an app can block usage until you allow a permission; ie Snapchat doesn’t need the camera permission to allow you to chat but will block usage of the app until you enable it.


As I understand it, this SSID feature does not require location services permissions.


It's not a new idea but I would love to see Apple implement a way to serve eg. a fake, empty contact list for an app that refuses to enable a feature unless you allow contact list permissions.


I at least partially blame Apple for this too.

I personally use several different terminal/Unix emulator/SSH client apps on iOS that request the "background location" permission solely because there is no actual "background execution" API.



The complexities and capabilities in the Chinese(well, most asia) mobile market are remarkable.

I always find it funny when people boast about how great certain things are in the US without ever have traveled to HK, Singapore, Tokyo, Beijing etc...

Most people dont realize just how entangled mobile life is in Asia, way more than in the US.



Centralized superapps seem incredibly dangerous to privacy, given that the limited mobile privacy models are designed around per-app permissions.

   1. Create app that does 1 thing
   2. Add more features to app
   3. Abuse superset of permissions
   4. Gov leans on app owner
   5. Gov abuses superset of permissions


I think if you're in China the centralized superapp is the least of your worries, privacy-wise. I agree that this is probably part of why these things will never really take off in the US though (no matter what Elon wants to wish for).


It is not the least of your worries, it is the abusive system working as intended. It is policy of the Chinese state to ingratiate itself into every aspect of its citizens' lives to exert control.

The fact the State is wholly evil in other ways does not lessen the worry; it multiplies it.



No, I more than 100% agree, I am just staing that most people just dont realize just how deeply entangled the mobile is to Asian life. I wasn't praising it, I am horrified, but also in awe by it.


I'm pretty sure most people are very aware that most of east Asia never saw massive PC adoption and so their internet developed in a very mobile-centric way. This hasn't been surprising for a long time?


I'm not sure I agree.

I mean, back when the west had WAP there were articles saying NTT DoCoMo had much more advanced phone technology, sure.

But in terms of making it into the cultural consciousness - you don't see ubiquitous asia-specific mobile super-apps in cultural exports like 'Squid Game' or 'Spy X Family' (admittedly a lot of cultural exports aren't set in the present day)



Is that inherently greater than not being connected or using super apps? Also, I didn't know Tokyo or japan in general were also into the "big app" concept. Japan in general didn't seem that "connected" relatively speaking back in 2017-18 but maybe stuff has changed in the past couple of years.


I think I'm missing some context: ex. there's O(many) apps that offer hotspot connections in the US as well. And my understanding is there's a privacy concern, which I think would be exacerbated by a super-app like WeChat adding this.

What's the great certain things of all that?



Even if only genuine hotspot apps got the entitlement, it is not a user-friendly privacy-first design. Such API use should trigger a user-visible permission dialog before apps get background-notified and user should be able to select the one of "allow-once, allow while using, allow-in-background, never" and the app activity should show up in app privacy reports.


Not sure I agree - in fact pretty sure I don’t. Having lots of permission dialogs just trains users to mindlessly click yes on everything, because they just want to do the thing, not think about how the sausage is made.


So just don't have them, and don't let them think about it?


I'm saying that a default of "ask every single time" is not good. For anyone.


Because the Chinese market is too important. For wechat you can maybe argue that it's a "super app" and probably also can be used to connect to wifi hotspots, but for alipay I fail to come up with an explanation..


Alipay is also pretty much an everything app (it also has its own ecosystem of mini-apps built on Alipay's platform). Except for the social aspect, it's nearly interchangeable with WeChat.


Ah I see. It's been a while thanks to the pandemic that I've been there, and even then preferred just doing wechat so I dont have to deal with even more stuff. At least for regular payment almost all places accepted both options.


You can buy hotspot access with Alipay (scan QR code -> connect), presumably thats why.


The sensible move would really be to break up these "everything" apps. Sure WeChat may have a wifi service, but if it is being used by 0.01% of the user base then why is everyone else forced to approve the permissions? Creating a separate "WeChat Wifi Connector" takes zero extra effort on their part.


You don't have to break up the app, just require user opt in to enable the feature for the app.


>API seems to specifically be for apps created by owners of WiFi hotspots to help users connect to those hotspots.

VPN apps also seem to use it: https://github.com/pia-foss/mobile-ios/blob/4618b55161ec5b8b...



Apparently the entitlement is not required in a few other conditions, listed here [1] by Apple:

    1. application is using CoreLocation API and has user's authorization to access precise location. [This seems harmless – the app already gets the precise location anyway here.]

    2. application has used NEHotspotConfiguration API to configure the current Wi-Fi network. [This seems to be the scope of the article!]

    3. application has active VPN configurations installed. [This one is quite surprising to me!]

    4. application has active NEDNSSettingsManager configuration installed. [No idea what this is exactly, but it seems similar to the VPN one.]
[1] https://developer.apple.com/forums/thread/679038


These "super apps" get special treatment everywhere.

Many phone manufacturers even automatically grant certain permissions when these apps are installed (the list is sometimes hard-coded into the system), since there are people who do not understand what is "permission", and they blame the phone manufacturer for not being able to use WeChat/Alipay.



Its a more basic question to me, why do these apps need a special entitlement? Couldn't they ask users for permissions like any other app, presumably with a good reason to go along with it since location is needed for some features?


Apple wants to gatekeep the feature for "legitimate" uses. If it was just another permission, random flashlight apps (as the joke goes) would ask for the permission and _n_% of people would just blindly accept it. Then, of course, Apple would get blamed for allowing random flashlight apps to track people's location. Of course this could all be done via the regular app review process, but Apple seems to have decided on a few permissions they want to keep super locked down (CarPlay is another, to avoid blame for when someone crashes while using some CarPlay app).


This is functionally a Location Services feature, so the user should grant location permissions to use this.

I am not sure how it works in practice.



FYI, that API requires entitlements to be used, which are only available if you request them from Apple and justify their use. It's not a general-purpose API any app can use.


That’s not really any consolation, since (according to the article) Apple has granted that entitlement to WeChat and Alipay.

Yes, these are “super-apps” and Wi-Fi hotspot services are probably part of their offerings, but that’s just more reason this should be a user-grantable permission like “local network access”. If I don’t care for the hotspot feature, I don’t want the app to have that capability.



Certain apps have always gotten special treatment. If it’s big enough to mess with phone sales they’re allowed nonsense a normal dev would be permanently banned for.

Ex: all the stuff FB has been caught doing over the years

My understanding (no first hand experience) is that WeChat and Alipay are basically required in China. If a phone doesn’t have them, it’s worthless and won’t sell.

So naturally they too can do nonsense that would get the rest of us booted to space.



Why does apple get to decide which app gets automatic access to my private data, on my device, without needing to ask me?


I've asked similar questions before and am usually told that this is how Apple does things and it's what makes their users happy. It's in fact why they love and choose Apple. They trust Apple to make the right decisions, and this is in fact a big part of the value add of their products. This is much related to the walled garden approach. For example, ask about why sideloading should remain not an option at all, rather than something like Android where you can enable it if you want to but "Grandma" isn't going to accidentally do it. Apple users actively don't want that capability. It doesn't make sense to me, but that's because "I'm not their target market."


> Apple users actively don't want that capability

That's a self-fulfilling property, with cause and effect going as much in the other direction: people who want that capability don't become Apple users. If you want openness, you don't pick Apple.



You’re missing a probably sizable fraction of Apple users that don’t love this, but also don’t hate it enough to switch to something else for that reason alone.

It’s very similar to political parties: I have yet to find one that I 100% align with in all things, yet I still vote.



This mentality is fascinating to me. In a sense, nobody owns an Apple device. It's more like renting: the landlord keeps a bunch of doors locked and has strict rules, but the place comes pre-furnished and includes millennial-grade amenities.

I can see the appeal if you don't particularly care about owning a device, but it blows my mind that people become so dedicated to this way of living.



I love that your analogy hit me so hard that I came to question my iPhone SE. I think the main issue for me is that I have not found a better alternative elsewhere. There are some interesting locked down and privacy focused variants of Android, but I am not sure I could use them with the banking and personal ID apps that are almost "required" unless I have to jump through additional hoops daily.

But thought provoking analogy - and thanks for that!



I think the renting analogy is a decent one and I’m on the other side of this, so let me give you my perspective.

When you own a home, you are 100% liable and responsible. If anything breaks, it’s an unexpected demand on my time and/or an unexpected expense. When you rent, you just call the landlord and say “shit’s broke” and it’s no longer your responsibility. I don’t have the mental bandwidth these days for the unexpected demands the house places on me.

This is _exactly_ the experience I had with Android versus iPhone.

I bought the original Android Dev Phone 1. Still have it somewhere. Moved to a Galaxy Nexus, Nexus 4, couple of OnePlus phones, etc. Used the stock Android, Cyanogenmod, LineageOS, and others. Did all sorts of fun stuff.

Then my life got busier and busier and busier and I found myself sitting up late one night dicking with fixing something on my phone again and just was like nope, this is not how I need or want to be spending my time. My life has only gotten busier since. I don’t have time for suddenly finding out one day that the last update that I installed broke the microphone on my phone and I can no longer use it as a phone.

Using the iPhone is having a landlord. If it breaks, it’s just broken. Not only do I not need to feel responsible for fixing it, I couldn’t if I wanted to. It takes up no space in my head.

So the fact that Apple (1) generally doesn’t release terribly broken software; (2) supports their devices with updates for a long time; and (3) is vaguely respectful of privacy and security makes the iPhone an obvious winner for me.

Even just making sideloading _available_ is going to shift the space my phone sits in my head. It’s no longer going to be “it works or it doesn’t, if it works and you don’t like how it works that sucks nothing to do about it so you may as well forget about it”. It’s going to be a constant “this is vaguely annoying I bet I could find a replacement dialer that _does_ allow you to search your call history…”. I’ll literally pay a premium for someone to take options away from me rather than have yet another place I need to exercise my self control.

I already spend all day with needy computers fixing and improving and such. Having a dumb appliance that lets me not do that is what I _want_.



I think you greatly overestimate how big of a deal this lack of user choice is to most people.

Nobody needs to be dedicated to a lack of choice/freedom for Apple's business model to work.

Being begrudgingly ok with it works just as well, just like they don’t price their products at “oh wow, that’s a steal, I’ll take one as a spare”, but rather somewhere close to “oh wow, but I guess I don’t buy this every day, and maybe with an installment plan…”



It's unlikely that if you have a mobile phone, the landlord doesn't keep some doors locked.

At minimum - even if you're running de-Googled Android - the baseband blob has high levels of access and you have no control over it.

I'm not saying Apple isn't worse with this, but the illusion of phone ownership spreads a lot further.



Baseband blobs are isolated with IOMMU (at least on GrapheneOS https://grapheneos.org/faq#baseband-isolation, but maybe that's also true for stock Pixels idk) and Google spends a lot of effort on baseband security: https://security.googleblog.com/2023/12/hardening-cellular-b...


Not to get too philosophical, but the entire concept of ownership per se is always a social contract that's being renegotiated continuously by society. Almost every country in the world has limits on the things you can own, to give just one example.

I do see the value of having autonomy over the devices I conduct my digital life on (whether owned or rented, for that matter!), but I'm not sure if the concept of physical ownership is the right model here.

How my personal data is being processed in other people's and the government's systems is just as relevant to me, and conversely, I'm fine with some opaque blobs of other people running on my hardware, as long as they're properly sandboxed (i.e. can't phone home freely or access any of my data that's none of their business), and I see the mutual benefit in them.



Oh I do want this functionality from them and I already actually do get it on MacOS, where grandma or my mom can use the App Store while I can still get an installer dmg with „this app was downloaded from internet do you trust it yadda yadda” warning. They’ret capable of doing it, they just don’t because AppStore makes a lot of nasty monopoly $.


It’s not that I trust Apple, it’s that I trust Apple infinitely more than I trust the largest spy network on earth and existing without a smartphone today is difficult.

If you need a smartphone, you can choose between a company that has some missteps, or a demonstrably evil spy network. I know who I am choosing.



Thanks, your position certainly makes sense to me regarding a Pixel phone with the stock software on it, but much less so when considering options like GrapheneOS or any of the Androids made by other non-Google companies (like OnePlus, etc). That's the point at which usually "user experience" or "I'm already in the Apple ecosystem" usually come to fore-front as the reason.

I don't really trust of those big companies, which is where GrapheneOS really shines. Open source, lots of enhanced privacy controls, but also as much of the Google ecosystem as the user wants. If you maximally distrust everyone, you can roll with pure FOSS. If you're somewhere in the middle like most people, you can pick and choose the pieces that are worth it to you (Google's Pixel Camera app is a common one for example). Graphene OS is also trivial to install now thanks to the web installer, so pretty much anybody who can load a web page, plug in a USB cable, and follow the explicit instructions to unlock the bootloader (which is stuff like, "open settings" -> "click about", etc) can do it.



Where do I buy a GrapheneOS phone from a manufacturer that tests the entire package and releases updates?

I’ve done the “just buy unlocked hardware and install this or that” in the past. My phone ended up taking up way more of my time than I’m willing to let it and my life has only gotten busier since.



I have to agree with this sentiment, I read it here on HN 'power' users more than once. Although most Apple users have no clue about what we discuss here, the part about actively wanting it is simply not true en masse.

Needless to say that's not for me and I will probably keep sporting Androids (in my case I am happy with Samsung's top ultra offerings) since I actually use those added features, ie saving 500 bucks on proper expensive variometer for paragliding and instead hooking it up via OTG cable with basic one with good sensor but without display, for 10% of the price... needless to say relevant app isn't on play store neither. And so on.

But we certainly have choice on the market. I just wish Apple would properly focus on user security and shielding them from the worst of internet, and less on milking advertising, what I see so far didn't convince me it isn't just sophisticated marketing and not much more. You already pay premium on the device, its a proper spit in the face to be so visibly milked more and more, thats pure corporate greed.

What I mean - my wife with iphone pops up browser, I pop up mine with firefox and ublock origin. Internet is utterly useless and horrible place on her phone, while completely fine on mine (plus I get youtube ads blocking as a bonus)



Do your wife a favor and get her Wipr[0].

Sure it’s $1.99 but we support indie developers here on HN don’t we?

It’s a set it and forget it type of deal, no more ads in Safari.

0: https://apps.apple.com/us/app/wipr/id1030595027



> this is how Apple does things and it's what makes their users happy

I would be shocked if many of these "surveillance loopholes" aren't silently mandated by government agencies around the world.



FWIW I used WeChat a few years ago and at that point it definitely asked for local network access (which is what this article is about; a mechanism for collecting SSIDs which can then later be correlated to locations).

If there is an entitlement, it is as of yet unclear whether it means a consent dialog/privacy toggle or not. IIRC an entitlement only means you can ask for this sort of access, not get it automatically, but I may be wrong (I’ve never gotten far in iOS dev).

We can argue that this feature is misnamed, regular users will not understand what it is and would not be giving informed consent, and I can get behind that, but “automatic access to my private data on my device” looks like jumping to conclusions.



That’s not what that permission does. As mentioned in TFA, SSID scanning access requires an entitlement (granted by Apple), not a permission (granted by the user).


You are misunderstanding what entitlements are. An entitlement does not imply no consent from the user, in many cases all it gives is the ability to ask for that consent.



> FWIW I used WeChat a few years ago and at that point it definitely asked for local network access (which is what this article is about; a mechanism for collecting SSIDs which can then later be correlated to locations).

Is that what "local network access" means? I thought that was for controlling network connections to LAN ips and/or to send multicast packets (eg. mdns).



> there was a VPN app I used that didn't have the "local network access" permission, but was still inexplicably able to get a list of wifi networks I connected to

It is different from continuously getting a list of all SSIDs within your Wi-Fi range, even those you never connected to. This is what allows shady apps infer location (this, and massive databases of SSID matched to coordinates).

What you described is also a feature of WireGuard iOS, and it needed no permission.



As far as I can tell, Wireguard does it the other way around (i.e. you provide it with a list of SSIDs you want to always enable VPN for, it provides that to the OS, and the OS then only tells the VPN that it needs to get connected).

But according to this [1] post (by an Apple employee?), having an enabled VPN profile seems to indeed be opting the app in to receiving the current SSID without the location permission, at least for some time and since iOS 14.

[1] https://developer.apple.com/forums/thread/679038



I may have mixed up WireGuard versions, it does it on macOS but doesn’t on iOS (or this feature was removed).

Either way, being able to get a list of networks user connected to is unrelated to the feature under discussion.



Hm, I assume any app can ask for whatever it wants, but that's just an assumption. I don't know if app developers need to apply to be able to request permissions, but I don't own an iPhone.


Certain things require permission from Apple to be able to even use. The API in question here is one of them.

Other things are just available to any developer but have to have a user prompt, for example saving to the photo library.



I was remembering when trying out iOS development years back that entitlements were needed for many things and the ones I tried involved a consent screen.

From looking at https://developer.apple.com/documentation/bundleresources/en... I would say there are many more entitlements than consent screens, the phrasing suggests there is no 1:1 mapping between them and is not clear on whether they reliably come with consent screens (I suspect not).

It is very unfortunate that there is little clarity on that in the docs, and that entitlements are not exposed anywhere in the GUI. Sure, they are too technical, but they could at least be shown in some advanced info pane. I am seriously considering if I can dejail an old iPhone and perhaps inspect some big name apps for what they have been entitled to.



Because Apple fundamentally doesn't believe you own the device so the question makes no sense to them. They already own it why would they need to ask you?


If every big app had to interrupt users to ask for simple things like performing http calls, usability would take a little hit, the nice "UX flow" of apple is a major selling point, so a very small percentage would buy Android phones.


Determining my house or even room level location is not at all equivalent to making an HTTP call.

And Apple does generally prompt for location permissions, as does Google on Android.



With Apple there's no such thing as “my device”.


Does your employer have a donation matching program?

It’s a great time of year to donate to the EFF.



It's so hard to prioritize non-profits these days. EFF is huge and super relevant, but so are aid programs to Ukraine or I/P, and reproductive health orgs. There's a lot going on I want to contribute to.


I wonder if there is a service to automate small (or large) donations to multiple organizations on a regular basis similar to an investment service?

Edit: I can only find services marketed towards the nonprofit, not for the donor. A service that aggregated and automated all the nonprofits I want to regularly donate small amounts to would be great. I think it would be important to not require the nonprofits direct involvement in order to allow me to donate as diversely as I want.





Benevity is a company that basically administers company matching donations.

Database of approved nonprofits, can set up arbitrary amounts as recurring payments, and automatic matching if you do the donations through their site.

It’s not quite “I got $500 this month to give back, scatter it amongst my chosen charities” but you could definitely use a service like that to set up baseline donations.

I don’t do scheduled donations; prefer to spool it up and make a splash when employer offers 2:1 match. Don’t think I’ve seen that in all of ‘23, though, so settling for 1:1 now.



Thank you for this. I realize this suggestion fits the context of the thread, but I am currently self employed so I would love another suggestion that isn’t necessarily geared toward integrating with employer match programs.


I’m with you on all those.

I just did my end of year matching gift donating through the portal at work.

I guess I left out Ukraine, which needs fixing. But did get FSF, EFF, the regional food bank, and a niche human rights org.

Let me tell you, causing my employer donate to the EFF in particular is always one of the high points of my year. Even better when there’s 2:1 matching, which they seem to not offer this year (I dig deep in my own pocket when they do have that because, hey, 2:1!). It’s hilarious and oh so satisfying.



I donate to NOYB, but I second your sentiment.


Because you bought a closed-source device by which you surrendered your privacy to whatever the source-controlling company wants.


Quite a few apps run tests to find out if they're running on a rooted device, and refuse to continue if they are.

Dunno if these apps do that or not, but I can easily imagine that using them is a Hobson's Choice even in OSS utopia: take the horse offered (app with tracking) or don't have a horse.



There is no Hobson's choice in OSS utopia, as the outcome of "app with tracking offered only" is "fork app - tracking".

You can sit there and stew over the gall of those people to do it, but if you piss them off enough, it will happen.



To the extent you could ever replace WeChat and Alipay with OSS, that's already a possibility today even with closed OSes and App Stores.

To the extent that you can't (network effects or legal obligations or whatever) you still won't be able to if the code of those apps is made available under any license of your choice.



Probably because you asked them for permission to use their phone and software.


They clearly purchased the phone, therefore it's not "their" (Apple's)


I honestly don't see it like that anymore. You paid in to buy the object but you're still asking for permission to use their overall ecosystem.

I think it's more like a child buying a teams jersey so that he can play on the team, but he can still get kicked off the team if he doesnt follow the rules. You can't argue "but I paid for the uniform with your logo, you must let me play 1st base!"

Sure the child still owns the uniform, and maybe he can get some use out of it or sell it off for spares (parts) to other people, but him paying doesn't make him own the team.



I think we agree.


You buy Apple hardware, which is a pretty strong signal that you trust Apple.


Two party marketplace. I don’t trust Apple, but the competition is not any better.


Because this is how all operating systems work.

If Microsoft wanted to give special apps access to your private data without asking, then that is exactly what would happen.

The same thing is true in Linux, other than we'd expect that the open source nature would have users going "Yo, WTF"



That's like saying "because that's how locks work, the company who sold you the lock can just come open your door".


This is exactly correct, though you don't want to admit it's the case it seems.

I mean, we just allowed Car Manufactures to pump as much contact data and location data as they can off your phones and sell it to whomever they'd like risk free and legally.

We have laws against physical trespassing, but when it comes to 'data' trespassing on applications that you install or come with your phone we're still in the wild west.



I think you're both right. the misunderstanding here is a difference between is and ought. pixl97 is describing the current state of things, not saying they ought be this way (please correct me if I'm wrong). stavros is describing the way things ought to be.


Yes, exactly. It is that way, but it should be illegal to do that.


> and sell it to whomever they'd like

Is there any evidence that car manufacturers are harvesting data from drivers' phones and selling it without consent?





Android requires the app to ask the user's permission to read WAP identification details. Previously, the app had to ask for location permission, and now there is a special permission just for this. https://developer.android.com/develop/connectivity/wifi/wifi...


The market decides by not buying devices that empower apps to spy on them.


Because there's no rule saying they can't.

I think.

Legal advice about what is and isn't legal under GDPR (and equivalents) varies a lot.



No app gets special treatment for any of the user-grantable permissions like location, Bluetooth, local network access, contacts, photos...

What makes this any different? It really seems more like an oversight than a conscious decision, similarly to how (I believe) both iOS and Android have retroactively had to bucket some of the Bluetooth LE permissions into "location", since that's what you can effectively do with them.



Giving the world’s most valuable corporation the benefit of the doubt.

This is an interesting worldview to have in 2023.



It’s a pretty obscure API, and Apple has a strong interest in at least being perceived as pro user privacy.

And assuming for a second this is indeed an intentional backdoor in plain sight of the world: What’s in it for Apple?

Hanlon’s razor still cuts in 2023, at least for me.



>Apple has a strong interest in at least being perceived as pro user privacy.

Perceived is doing a lot of lifting there. The public largely cannot audit Apple's ACTUAL security.



That’s true, but arguably irrelevant here since this is a public, documented API that can be audited.


It could be. But the fact it’s behind a special permission you have to request from Apple tells me they likely think it’s secure enough.


What’s your basis for saying that Apple doesn’t provide special treatment to apps? I’ve directly experienced both of their special and their non public (phone calls only, refusal to communicate over email) processes.


I’m not claiming that at all in general, but I do believe it’s true when it comes to user-grantable permissions. Or do you have evidence to the contrary?


Interesting that cutting monetary deals was a problem for Google, but special access APIs are fine.


That doesn’t excuse anything! This is not “oh poor small time devs”, this is paying customers being lied to by Apple.


They are required in China, but the hotspot functionality isn’t. At least give me an option to turn it off.


See also McDonald’s being allowed to gate app functionality behind background location access


That’s adjudication of “soft” rules around permission optionality, which is a big problem, but nothing that lets apps bypass permissions outright.


Chinese state supported spyware spies on you? I'm shocked!


Most entitlements though trigger a privacy prompt to allow the user to disable the functionality. Without writing a test app, I don't know that this is the case with this entitlement.

I think it should ask the user's permission.



Keep in mind that in a corporate context, not asking the user for permission or explaining what/why you are doing something is the (sociopathic imo, but nevertheless) norm. To the degree you do disclose something like that it is inevitably hidden away or obfuscated by being put somewhere in the UX that no one ever really goes.

Like seriously. I had the argument before;

Architect: we're going to fingerprint users. Me: are you going to disclose that? Architect: Of course not. Me: It's their device. You should ask. Architect: That defeats the point. Me: You either don't understand property rights, or clearly have issues with the concept of consent.

The entire IT space has been decades of building while eliding the fact these experiences are fundamentally being driven on someone else's hardware.

But that's just the world we live in I suppose.



How does that apply to thise case though? Asking for permissions on iOS is the norm and many apps include a message indicating what and why they are about to request something non-obvious before sending the request and triggering the popup.


This particular entitlement does not trigger any pop up and can’t be disabled by the user except by uninstalling the app.


Yes, I get that...I just meant his whole spiel about "not asking for permission being the norm". In the context of iOS permissions not asking is the exception.


More trying to enlighten the not yet enlightened to be on the look out for said behavior if they weren't already looking out for it. Also, with things like iOS entitlements, their entire purpose is to act as a permissions based contract. Where what I'm talking about comes into play is dropping in functionality that can be called if you know about it, but not making any attempts to advertise that you can.

Maybe not relevant in this particular case, but again, was more intended in the sense of a BOLO.



But if Facebook/Instagram/Messenger (or Alipay / WeChat as mentioned in the article) has this entitlement and does fishy stuff, I guess this can actually be a large privacy issue?

Does Apple do any analysis of entitlement usage and withdraw them when abused? A similar thing I remember is the Facebook VPN "scandal" where I think Apple withdrew the Facebook enterprise signing certificate?



What do entitlements have to do with not asking for user permission though? Seems like separate issues.


Entitlements don’t require user permission.


Is that better or worse? "Don't worry you or I cannot exploit this, only large corporations and data aggregators can."


> that API requires entitlements to be used

Lately I've witnessed a number of apps asking for Local Network permission ("Foo would like to find and connect to devices on your local network") when they have no business doing so in any possible way that I can think of.



Chrome Cast. There is no OS-level service for it to introspect the network looking for screens to cast to, so each app has to drop in a SDK - which then has to have permission to search the local network looking for screens.

This was improved in recent iOS, but I never count on Google updating their SDKs to take advantage of iOS features on any sort of schedule. Even when they do, it will require third party apps to individually update as well.



Many do this if they play video, mostly to enable chrome cast.


> Adding another layer to the discussion is the fact that major apps like WeChat and Alipay have already implemented this capability.

So only the big apps can spy on you? The poster is Chinese so he cares about those 2, but how about facebook and google?



Spyware can be hidden in every piece of closed software, hardware, firmware with access to communications, so unless someone makes a 100% open device, from the first bit to the last screw, there's no 100% guarantee to be free from spyware.


Did Apple audit their code, then? Why in the world should anyone trust Apple to be responsible?


> FYI, that API requires entitlements to be used, which are only available if you request them from Apple and justify their use. It's not a general-purpose API any app can use.

Well as long as it is just Apple that is deciding who can track me without my permission then that's okay I totally trust my corporate overlords for the wise and great Apple is incorruptible and without fault.



That’s almost worse that it’s kind of a side door to the users rights. That’s generally only available to groups with the resources or know how to get it.

I understand it’s not ubiquitous.



I thought users were prompted to give permission for this already? I get asked if I want to give “local network” access to apps sometimes (- lot these days actually) which I take to mean the ability to see local WiFi hotspots. I almost always deny this (and after reading this just turned it off for Spotify). I think the dialog that asks for permission could be improved, though, as most people don’t realize this can be used to deduce their location.


As a developer, the annoying thing about the "Local Network" permission is that:

1) It's poorly implemented. Unlike other permissions, there's no way to explicitly trigger the prompt. It just pops up at Apple's discretion. There's no way to give it a "soft landing" for cases where it's necessary for core app features. And there's no way to check if the permission has been granted or not.

2) More importantly: Apple's own apps don't trigger this warning, which makes the playing field unfair. AirPlay etc. work seamlessly, whereas any competitor's tech doesn't. And as a developer, since you can't tell if this permission has been granted or not, you're left with a poor user experience.

I'm particularly fed up of (2). If Apple is going to introduce restrictions, they need to apply to their own apps as well. AirPlay and AirDrop need to each ask for Bluetooth and local network access. The Photos app needs to trigger the "Select photos, Allow All, Deny" prompt on launch. The Camera app shouldn't be able to write to the photo library without triggering the same prompt too.

That gives them an incentive to design the user experience around these restrictions well, and maybe be more creative with how to solve for this too rather than confusing dialogs.

Currently they have a disincentive to design this stuff well. Any iOS developer that's had to work with these APIs knows that they are designed absolutely awfully with arbitrary and unexpected limitations.



The developer of the Camera app already has access to all the photos in your Photos app. What benefit would a prompt have for the user?


Not sure if this is what you mean, but there could be multiple apps installed that write to the device photo library. You may not want the developer of one camera app to be able to access all photos on the device.

But this raises a related point about how frustrating Apple's APIs are here: When an app is granted the "Write to photo library" permission by the user, it can only write. It can't read back what it's written, ever. You might expect that writing to the library might return a token that can be used to read that photo back. Nope.

Android, for all its faults, does a much better job here. The OS keeps track of the app that wrote the photo -- and that app can read that photo indefinitely, unless another app edits that photo (and thus becomes the owner). A much better design.

On iOS, to read back photos from the library, you have to ask for the "All photos" read permission, which few people will grant you. "Why does my camera want to read all the photos on my device?! Deny!".

And just like that, you can't compete with the built-in camera which shows thumbnails of recently taken photos and allows you to swipe through them.

Apple has no incentive to fix this either, because their own apps bypass this permission system.



No argument from me but regarding workarounds for (1), accessing ProcessInfo.processInfo.hostName has been a reliable pop-up trigger for me for a long time. Eskimo also offers some (esoteric) suggestions for how to notice if your network operation has been denied due to lack of permission: https://developer.apple.com/forums/thread/663852


That’s for sending and receiving local network traffic, eg. talking to devices on the same subnet, and discovery of Chromecast and similar targets.

Edit: AirPlay does not require this permission.



I don't believe it is necessary for airplay, but probably is for Chromecast, Sonos, and many devices to establish ad-hoc connectivity for setup and operation.

I take this popup to mean that they want to fingerprint and locate my home network or backdoor it somehow. I ALWAYS deny this access unless the app specifically requires it, and that is rare.

WiFi based geolocationing should be a well known privacy threat by now. The popup should really communicate that better and provide tighter controls.



You’d think that AirPlay would be abstracted away by an OS API that does the local network discovery itself.


In my experience, it is. My podcast app of choice doesn’t have that permission (I don’t even think it asked for it), but it has the ability to bring up the system audio output selector widget and do AirPlay.

If anything, I usually see this for apps that want to do playback via Chromecast/Miracast. The well-behaved apps wait until the user interacts with Chromecast output, the iffier ones ask on first launch.



AVRouting in iOS 16 allows for a Media Device Discovery Extensions, which allows for a proper ChromeCast or similar app to provide media streaming in the same interface as AirPlay.

So far there doesn't seem to be any traction by Google to migrate to this.



I take it to mean that it will scan my lan (plus tailnet?) for services. Like a Hue bridge or a Sonos speaker or a Chromecast etc.


Docs: https://developer.apple.com/documentation/technotes/tn3111-i... I’d guess a review would stop the smaller spam apps, but not the big players, as noted by the author and other commenters.


Thanks. The docs confirm that an entitlement is required to call this API — still does not make clear to me whether the presence of the entitlement brings up a prompt allowing the user to deny the use of the API.


If it does, it would be for network, not location. Per the rules, this isn’t a location api, except it actually is.

Iirc Android has always asked for location to enable Bluetooth, I wonder if there are similar apis there?



Yeah, Apple may want to rethink Network != Location.


There is a setting to allow location for the "Networking and Wireless" system service. I wonder if disabling that would prevent this from working?


Can we talk about the fact iOS/macOS turns on the Wifi and Bluetooth radios after each system update? Almost as if the devices were made deliberately to maximize spying, contrary to the marketing lullabies.


Hanlon's razor: Apple is just lazy and defaults all these things to on, rather than keeping tract of the settings since they are used or needed by 99% of people. Apple loves its Bluetooth keyboards and mice, after all.


Yeah I find this incredibly annoying.


Which popular apps use that? Is it possible to check this?

Like most here, I don’t have Wechat or Alipay installed. But I’m interested in e.g. Instagram, Facebook, Whatsapp, Twitter, Tiktok, Snapchat, Chrome, Firefox, Photoshop, Lightroom, etc.



I know I sound like a broken record but I really do think app stores owe us the ability to see, in advance, what permissions an app will request.

I shouldn’t have to download and install the app just to see what kind of behaviors it is going to attempt.

The app stores know this information and it would be trivially easy to present it in the details of the app prior to down loading.



> I know I sound like a broken record but I really do think app stores owe us the ability to see, in advance, what permissions an app will request.

Beyond what Apple already does? https://imgur.com/a/ouEqiGG



This only covers what data apps store/collect. An app can have a clean 'Privacy' disclaimer ("The developer does not collect any data from this app") but still require access to Photos, Camera, Location, etc.


In the Play store it is possible to see what permissions are required and data is collected.


I wonder if it is possible, as an Apple developer, to query "permissions requested" via some other channel ?

I don't know anything about the ways Apple developers interface with the app store to submit or update or index their apps ... is it through xcode ?

I wonder if there is some function in that toolchain that actually does what I am proposing ...



This is possible and relatively easy for Apple to do: for most (if not all) permissions, a declaration that you intend to ask for permission is required in the app's Info.plist manifest file.

When permission is requested and you've forgotten to declare that your app asks for it, the permission will be immediately denied without prompting the user.



Yeah, this should absolutely be standard.


Now I'm curious - which other apps have this entitlement? Is there a way for me to find out which apps on my phone have this entitlement?


We've heard complaints that this title is overstated, and I'd be happy to replace it with a better (i.e. more accurate and neutral) one, if anyone has a suggestion?


"iOS apps can track a user via SSID scan with a special entitlement"

I think that best describes it? Not sure but I agree the title as-is doesn't really ring true after reading the article.



I think the title is fine.


This is one of the majors problems with completely locked-down platforms. Assurances that the owner of the platform respects your privacy and prevents others from violating it are really just a pinky promise.


I think the perspective can be incorrect. No one expects Apple to get it perfect. Computing platforms are legitimately hard to secure, especially when you’re talking about privacy which is a lot more amorphously defined culturally vs typical CS security which is defined as subverting technical access controls.

The key question is whether Apple will play a curator role in trying to reign in the ecosystem. They have in the past (eg Uber was doing shady shit and there was a game of chicken to get them to stop). Of course Alipay and WeChat may be harder especially how Apple China is such a huge market for Apple and critical to their success now. It’ll be interesting to see how Apple adjusts to this over the next few years.

Open platforms also have this problem and also operate on pinky promises (perhaps even worse) so I’m not sure the point you’re trying to make unless it’s that “well if this problem isn’t solved I’d rather have an open platform”. The problem with that argument is that there are many issues and this is only one failure case which may be addressed in the future whereas open platforms have this one and many more that are unadressed.



Open platforms can be reviewed and fixed more easily and faster


Can you clarify with examples/technical description how an open platform will be able to review & fix privacy/security issues like this more easily/faster? As far as I know this wouldn't be news on Android because such permissions are granted as a matter of course without review. Keep in mind that most people use the Google or Samsung stores which aren't open platforms for verifying permissions aren't misused.

For what it's worth spyware/malware consistently seems to target Android more than iOS [1]. To be fair Android has more units, but that's just one axis - iOS users should be more valuable to exploit because they're usually in a different socioeconomic bracket. Another data point is that Android developers get paid anywhere from $2k to $20k to add malware to their Google Play store app [2] - I can't find any articles similar for iOS so would be interesting to compare the marketplaces if anyone knows it for iOS.

[1] https://nordvpn.com/blog/ios-vs-android-security/

[2] https://www.bleepingcomputer.com/news/security/cybercriminal...



turn off location services, your phone still contacts ls.apple.com

deep links, they go deeper than you think.

ibeacons provide very precise indoor location, think of all the behavioral data a store app can collect.

apple is not really your friend.

seriously, apple should let you

- know what is running

- know what network traffic happens

- control these thigns

- run your own programs

I would love an ios firewall program or non-neutered little snitch



I wonder if Android's corresponding API has this same vulnerability. Based on my reading, it doesn't seem like it https://developer.android.com/develop/connectivity/wifi/wifi...


It’s worth noting that use of NEHotspotHelper requires a special entitlement (com.apple.developer.networking.HotspotHelper) that you have to apply for, and presumably Apple won’t grant unless your app has a legitimate need for it.

That said, this maybe shows an incompatibility between Apple’s privacy strategy and “super-apps” like WeChat and AliPay. When a company shoves all functionality into one app, that app suddenly has all the entitlements, and it’s harder to tell when and how any sensitive data is being used.

The West generally doesn’t develop apps this way. For example, Comcast has a separate “WiFi Hotspots” app. Although LOL, they posted 2 days ago that its functionality is being combined into the main Xfinity app. Maybe the West is catching up.



Is there a way for an end user to see which apps have this entitlement?


I don’t think you can unless you have a jailbroken device. If I remember correctly, entitlements are store in the AppStore receipt file.


You can view the entitlements from the extracted ipa by using the codesign tool. So it is totally possible to see if an app has this entitlement.


Oh, I only remembered seeing them inside the mobileprovision file. I’ll take another look, thanks.


Facebook is a SuperApp. It had a WiFi-hotspot-finder in it for years.


I love when I launch an app and then get a bevy of requests to access my Camera, my Microphone, my Contacts, etc...

I nope out and if the functionality of the app is trashed, so goes the app....

Google Maps constantly hounding me to turn on precision location services, asking me if I am navigating for a friend and to allow access to my contacts... Wow, no.



You don't think location is useful for a map ... ?


Well, a physical map certainly doesn't keep pestering me for my location...


It wants precise location — which I take to mean war-driving WiFi. GPS I am okay with for a map app.


IIRC, Non-precise location is cell tower level location or the like, possibly a 12 square mile area. It is also very cheap if the device is already connected to a tower.

Precise location may be from Apple's SSID database or from a GPS system.

Non-precise location may help with getting more appropriate search results but won't help you with turn-by-turn navigation.



Reading the documentation I can't figure it out. It sounds like there are a lot of things that feed into "Precise Location" that go beyond GPS. It could be true though that only cell-tower reckoning is used without "Precise Location". I generally only pull up Google maps on longer road trips that aren't really turn-by-turn, so maybe I have the only use case for a map with weak location services.


Precise location _is_ GPS, not the other way around.


> com.apple.developer.networking.HotspotHelper

Where do you revoke this entitlement on iOS? Settings → Privacy & Security → Local Network? Or is this something else?



You can’t revoke entitlements, entitlements is the term used for developers who indicate that they intend to use a feature.

Users are asked for permissions and those permissions can be revoked. This entitlement doesn’t correspond with its own unique permission, either it works without permission from the user or it might be bundled into Local Network or Location Permissions.



This is one of the special ones so you're not allowed to; Apple picks for you per app.


AFAIK entitlements are not necessarily exposed as toggles.


General > Reset > Reset Location and Privacy Settings


You didn't grant any location access in the first place, so why would this work?


So Apple decides which companies should have your location data? Niiiice




He also wants you to pay for the privilege of having your personal data including picture and ID sent to an Israeli spook front company: https://www.aljazeera.com/news/2023/8/21/x-blue-users-will-n...


> presumably Apple won’t grant unless your app has a legitimate need for it.

Increasingly clear that Apple is in charge of what happens on your devices not the users themselves.



It might surprise you but a lot of people want that and buy apple specifically because of that. I would even go so far as to say it is a major competitive advantage.


Wasn't it ever thus?


I had the first iPhone up to the 3GS. It didn't feel that way then. Now there are continuous software updates that keep changing arbitrary and invisible policies.


You’re just more aware of it now. The privacy controls are MUCH tighter now than they were in that era.

If you’re a software developer, you must understand that the user cannot actually understand what any code is doing. Even if you’re using open source, it’s an illusion to think you know what it’s doing. Heck, even the developer doesn’t know what it’s doing a lot of the time (how long does it take to figure out what’s happening with a tricky bug?).

So yes, Apple’s policies do mediate what a developer can do on behalf of the user. That’s how it works.



> I had the first iPhone up to the 3GS. It didn't feel that way then.

The history of smartphones is control being tightened further and further over time. With the phones you had, apps could track your location lots of different ways, and over time those data leaks are being bricked shut. Everything is moving in the direction from "Apps can do whatever they feel like" to "Apple controls what apps can do" to "The user controls what apps can do".

This specific leak seems like it's stuck in the "Apple controls what apps can do" stage, so hopefully this post will help get it moving again.



Big whoop. Consent is paramount and the assumption here that apple and you have aligned interest is pretty darn weak argument.

The only thing of note here is that apple don't want you do know about it, which kind of circles back to aligned interests...



They're not tracking locations because they're not using GPS.

They are checking the environment for stuff that might have known locations, which is different. You can do the same with bluetooth/BLE.



This is a distinction without a difference.

The user must be in control of whether their location is disclosed to an app.



> You can do the same with bluetooth/BLE.

Not anymore you can't. Sometime before 2020 apple, and also google, started treating BLE scanning as an operation needing location permissions. (I had to deal with this transition while submitting an iOS app that connected to a BLE device which actually had a GPS module in it)

As of now, I still have to turn on location on my android phone to connect to some BLE devices.



SSID / BSSID is often enough to pinpoint the location. Recently someone debated this with me, so I asked him what his wifi AP name was, then proceeded to provide their home address.

How? By searching it in https://wigle.net.

That ended the debate quite swiftly.



Same difference as far as a user is concerned. And BT/BLE explicitly asks for permission.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact



Search:
联系我们 contact @ memedata.com