Enabling Developer Mode on a Device
developer.apple.com
developer.apple.com
However, I’m not sure how big of an attack vector they’re closing here. I’m thinking of two channels:
1. Drive by installs when someone uses a public charger or another person’s computer to charge while using their phone
2. Users being guided to install malicious apps themselves under the guise of fake support or similar setups.
These just don’t seem like major problems to me. (1) could probably work if you were targeting an individual, but it doesn’t seem like this is the weak link. For (2) I can’t imagine anyone who goes to the trouble of installing xcode and deploying to their device wouldn’t be willing to just check that box too.
FWIW Android does a similar thing with USB debugging enabled, just without the extra step with the passcode.
(I don't oppose there being developer mode, I'm just adding that there are extra steps)
This has usually been when the lightning port has been fouled by pocket lint or the cord has started going bad, but I bet it happens often enough to desensitize users (especially for people using off-brand cords) that it has been identified as a possible attack vector, and developer mode is the solution.
After that, iOS users are sometimes prompted to enter their passcode on an unlocked device for things like updates. A user who doesn’t understand their phone (very common) or is distracted and has something they’re trying to do (basically everyone) could easily say “whatever, yes, trust this charger” then “ugh again!? Here’s my passcode” without even thinking about it.
Of the 9 family members I’m thinking of who use iPhones: 3 know enough not to do that, 4 know that “Don’t Trust” is probably the right answer but could be caught if they weren’t thinking about it, 2 would have no idea and it’s 50/50 which button they hit.
The passcode would never stop either of the last 2.
And this is why I consider modals "out of nowhere" to be the worst UX sin out there. And iOS is chock-full of these things. Low battery? In-your-face alert. System update? In-your-face alert, and then sneaky "enter passcode to install overnight" crap. Something about your Apple ID that you couldn't care less about? In-your-face alert. Plugged something in? In-your-face alert. No SIM card? In-your-face alert. An app failed to download? In-your-face alert.
It would've been much better if it was a notification. You'd only look for it if you know it should be there, for example when your computer doesn't see your phone.
Basically what my question boils down to is: can I locally and build a persistent app with this change?
It's not harder in the sense of "you are prohibited from doing it".
* use TestFlight for centralized distribution of pre-release apps, through Apple (with some lighter-touch app review involved), or
* use enterprise signing (which requires enrolling in a more expensive program and jumping through some corporate hoops, with your apps subject to deactivation if you abuse it) to install on an unrestricted number of devices theoretically owned by your company, or
* whitelist a pretty low number of specific iOS devices to install arbitrary apps onto — I think that limit is still 100 devices per year, per developer account
This sounds like it removes the whitelisting requirement from the third option. Hope it's enough friction to prevent the worst aspects of sideloading from taking hold.
This might be a more pessimistic reading, but from what I can glean, Apple added a warning toggle and app code requirement to the sideloading and signing process. That's it. Nothing presented here indicates the lifting of any previous restrictions or the addition of any new features like on-device app-signing/compiling, now or in the future. If anything, this "Developer Mode" is another layer of soft lockout to those who wish to load jailbreaks or non-Appstore apps onto their phones. Those who don't know any better will think that Apple is capitulating, when the likelier scenario is that Apple is putting on a show to quell the complainers while quietly expanding its control.