Skip to main content

Minimum iOS Version

One of the keys in the Info.plist file is the ‘MinimumOSVersion’. The MinimumOSVersion is important because it defines the set of permissions and OS features that are supported in the app. If the latest version of iOS is 14, but the app you are testing has a minimum OS version of iOS 11, then the app is not taking advantage of the newer features and security updates.

Additionally, the way that jailbreaks work between the versions have changed. Versions older than iOS 12 operate differently than the newer versions. We saw this with the credentials in memory finding. If the minimum OS is greater than 12, then the device must be rebooted to jailbreak it. If it is older than 12, then no reboot is required and all data in memory is fair game.

Apple used to deliver applications with multiple architectures in them. However, as applications started getting bigger over time, they implemented a way to strip the binary to just the architecture required by the device. This causes some issues with the minimum OS version though. When you install an app from the App Store, the app will be delivered configured specifically to your device. Meaning, it will only contain the architecture of your device, and the Info.plist file will be updated accordingly. If your device is running any version of iOS 13, then the Info.plist file will list the MinimumOSVersion as 13.0. Even though the app will have a true MinimumOSVersion as iOS 10.0.

If you look up the app in the App Store, you can scroll down to the "Compatibility" section, and it will show you the true minimum version information:

For third-party apps, review the OS requirements from the Apple App Store. For in-house developed applications, the Info.plist file should be correct.

/usr/libexec/PlistBuddy -c 'Print :MinimumOSVersion' Info.plist