5 ms·
>library to help developers detect their app running on jailbroken devices How does this work? I thought iOS apps are sandboxed to an extent where it shouldn't
by krackers 7y ago
>library to help developers detect their app running on jailbroken devices
How does this work? I thought iOS apps are sandboxed to an extent where it shouldn't be possible to snoop around to determine which processes are running and such.
- nerdbaggy 7y agoCouldn’t tell you, I know as much as that article says. But I’m guessing that’s part of their secret sauce
- saagarjha 7y agoI'm sure it's some combination of checking for files that shouldn't be accessible or exist, searching your own address space for things that shouldn't be there, and verifying that kernel calls produce the results that they should.
- js2 7y agoA jailbroken device allows apps to do things that a non-jailbroken device does not. I maintain my company's in-house mobile app crash reporting system and I had to remove jailbreak checks from our iOS SDK. It turned out that some of the checks were causing crashes themselves due to buggy anti-jailbreak-detection code some jailbroken devices had in place. e.g. checking whether a file could be accessed that normally iOS disallows would end up causing a crash instead of just a permission error. Instead, I just do some basic server-side detection. Basically, looking for libraries loaded into the app (e.g. cydia) that are only present on jailbroken devices. Some jailbreaks don't even try to hide their presence. I don't know what iVerify does. I hadn't heard of it before. I'm curious how it avoids crashes though... perhaps it avoids invoking any dynamic system calls.
- baroffoos 7y agoThe proper way of doing things should be that an app controls access to jailbreak features. By default nothing gets them and you can whitelist the ones which need it. I'm not sure if anything like this exists for ios but it should.
- saagarjha 7y agoDepending on how much access you have, it's always possible for jailbreaks to hide their presence from applications (which are running at a lower privilege level). There are a couple of "jailbreak hider" implementations out there.
- Bnshsysjab 7y agoOut of interest, why do you care if your users run your application on a jailbroken device? It’s been a question I’ve had for a while..
- benbristow 7y agoSame reason as why rooted Android devices get blocked by certain applications. Security for the user's sake. Usually it's financial applications (banking etc.) and stuff with sensitive user information.
- yjftsjthsd-h 7y agoAs an Android user, this is super annoying: I rooted the device because I want to control it. Now some stupid app comes along and claims that, for my own protection (supposedly), they're going to break for me. It's insulting, really.
- js2 7y agoWe don’t care but when a crash occurs we collect diagnostic data that we think will help us narrow down the source of the crash. Sometimes a crash happens only on jailbroken devices in which case we usually don’t spend time on it.
- Mindwipe 7y agoJailbroken devices can attack application logic to cheat in multiplayer games, somewhat attack DRM systems for video content (though Fairplay isn't especially vulnerable here), gain access to chargeable features without paying for them (decompiled Spotify APKs that do not feature advertising without having to pay exist on Android and are a non-trivial revenue risk) etc etc. In more open systems you are usually more able to run detection software for the above without sandboxing.
- moftz 7y agoPiracy for Android doesn't require a jailbroken/rooted device.
- azinman2 7y agoThey also get tripped up by Apple internal devices, which as an Apple employee is quite annoying when I get locked out of a financial app.
- deleted 7y ago[deleted]
- dannyw 7y agoI feel like Apple employees shouldn't be using special iPhones for personal use (out of good engineering practice; nothing special.
- dguido 7y agoWe discovered/developed a suite of side channels that let us indirectly read iOS system state from inside the sandbox. There are many different checks across unknown deviations, known jailbreak files and utilities, and runtime behaviors that help us narrow down whether your phone has been modified. It's not perfect, but it's the best you can do from within the Apple App sandbox.
- stevekablink 7y agoIf they used a language like Rust instead of Swift, iOS would be much more immune to these sorts of attack. There would be no side channels.
- Lt_Riza_Hawkeye 7y agoI assume you make a new mach-o file that hasn't been signed by apple and try to exec into it. If it runs, definitely jailbroken. Obviously a jailbroken phone could load a kernel module that detects this and stops it from running in this specific case, leading to a cat and mouse game between jailbreak developers and these apps. iBooks tried this once.