Skip to content

Instantly share code, notes, and snippets.

@Cryptiiiic
Created March 1, 2023 00:10
Show Gist options
  • Star 35 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save Cryptiiiic/b82133ac290070939189e1377dc3ac85 to your computer and use it in GitHub Desktop.
Save Cryptiiiic/b82133ac290070939189e1377dc3ac85 to your computer and use it in GitHub Desktop.
The unfortunate state of iOS downgrading
Unfortunately I have some bad news for downgrading.
Before I explain the bad news at the end of this post, I first need to introduce a background of iOS devices.
In iOS 16, Apple introduced a new firmware component known as Cryptex1. Technically, this is a "virtual" co-processor.
It's purpose is to allow Apple to push RSRs (Rapid Security Responses) which are separate from traditional iOS updates and can be installed much faster.
Like other firmwares, it also has a signing ticket locked to a cryptographic nonce (number-used-once).
We commonly refer to the Apple signing tickets as SHSH blobs.
Meaning the firmware can't be installed without a valid signing ticket as well as a matching nonce.
The "big two" components we deal with signing/nonces are AP and SEP. AP is basically the main device chip (Application Processor).
SEP is the security chip (Secure Enclave Processor).
With regards to APNonce, Apple conveniently gave us the com.apple.System.boot-nonce NVRAM property which we use to set the APNonce generator.
On A11 and older, APNonce is hashed from that generator. When the property is not set, the generator is random.
To explain how that generator works, first I have to introduce you to "nonce-seeds".
I don't know much about them yet but upon boot the kernel's Image4 kext (kernel driver) generates a new seed randomly. The nonce is then generated based on the seed.
Starting in A12, Apple introduced nonce entanglement, which basically encrypts the seed using the device specific UID1 key as well as a constant value.
Meaning even with the boot-nonce NVRAM property, the hash will not be of the original set generator.
We got around this by first setting the generator, then extracting the encrypted value's hash (APNonce) to save a signing ticket with.
Getting back to SEP, SEP has no such NVRAM property to set nonce. Meaning we have to restore a SEP version that Apple gives us a signing ticket back for.
This introduces the issue of "SEP compatibility".
Using latest SEP with an older version may work sometimes, but Apple could all of a sudden release an update that breaks the compatibility.
OK, so we have AP and SEP that use the same signing ticket style (ApImg4Ticket), however an iOS device has many other components.
The other components are usually separate microchips/co-processors. They have their own firmwares. During a restore they are updated.
They are called FirmwareUpdaterComponents for this reason. Unfortunately these firmwares don't use ApImg4Tickets or APNonces.
Instead they have their own signing ticket and nonce derived from nonce seeds.
Luckily for us it was rare that a FirmwareUpdaterComponent update would break compatibility with an older iOS version.
This allowed us to downgrade with no issue given SEP was also compatible. This brings me to the bad news with iOS 16.
There's no known way to persist nonce-seeds. Meaning we can't reuse older FirmwareUpdaterComponents and their saved signing tickets.
Cryptex1 may be "virtual" and not a real chip but it's still considered a FirmwareUpdaterComponents, it has a signing ticket and its own nonce.
It is extremely rare that a newer Cryptex1 will be compatible with the older iOS version you are downgrading to, as it contains the dyld shared cache among other things, which contains basically all of the system's libraries.
At the time of this post, 16.3.1 Cryptex1 causes 16.0-16.1.2 to not even boot, 16.2 will boot but freeze on country selection on the setup screen.
It's really not looking good for downgrading. We now need to put research and effort into finding a way to persist nonce-seeds across multiple reboots.
TLDR;
In iOS 16, Apple introduced a new component that is almost always incompatible with older versions. This means downgrading is likely to be impossible on non-checkm8 devices except within patch versions (e.g. 16.3 and 16.3.1).
In other words A12 and later, downgrading is impossible, dead in the water, a no-go.
- Cryptic
@anarchopossum
Copy link

So like now downloading shsh blobs are useless now? 🥺

@FestiveKillian
Copy link

:sadge:

@jadc
Copy link

jadc commented Mar 1, 2023

Sad

@turn1pwastaken
Copy link

F

@brandonsaldan
Copy link

Big Mac $3.99 Big Mac - Meal $5.99 2 Cheeseburgers $2.00 2 Cheeseburgers - Meal $4.89 Quarter Pounder with Cheese $3.79 Quarter Pounder with Cheese - Meal $5.79 Double Quarter Pounder with Cheese $4.79 Double Quarter Pounder with Cheese - Meal $6.69 Bacon Clubhouse Burger $4.49 Bacon Clubhouse Burger - Meal $6.49 Buttermilk Crispy Chicken $4.39 Buttermilk Crispy Chicken - Meal $6.39 Artisan Grilled Chicken $4.39 Artisan Grilled Chicken - Meal $6.39 Premium McWrap Chicken & Bacon (Grilled or Crispy)$4.39 Premium McWrap Chicken & Bacon (Grilled or Crispy) - Meal $6.39 Premium McWrap Chicken & Ranch (Grilled or Crispy) $4.39 Premium McWrap Chicken & Ranch (Grilled or Crispy) - Meal $6.39 Premium McWrap Sweet Chili Chicken (Grilled or Crispy)$4.39 Premium McWrap Sweet Chili Chicken (Grilled or Crispy) - Meal $6.39 Filet-O-Fish

@elisaado
Copy link

elisaado commented Mar 1, 2023

F

@Naville
Copy link

Naville commented Mar 1, 2023

Big Mac $3.99 Big Mac - Meal $5.99 2 Cheeseburgers $2.00 2 Cheeseburgers - Meal $4.89 Quarter Pounder with Cheese $3.79 Quarter Pounder with Cheese - Meal $5.79 Double Quarter Pounder with Cheese $4.79 Double Quarter Pounder with Cheese - Meal $6.69 Bacon Clubhouse Burger $4.49 Bacon Clubhouse Burger - Meal $6.49 Buttermilk Crispy Chicken $4.39 Buttermilk Crispy Chicken - Meal $6.39 Artisan Grilled Chicken $4.39 Artisan Grilled Chicken - Meal $6.39 Premium McWrap Chicken & Bacon (Grilled or Crispy)$4.39 Premium McWrap Chicken & Bacon (Grilled or Crispy) - Meal $6.39 Premium McWrap Chicken & Ranch (Grilled or Crispy) $4.39 Premium McWrap Chicken & Ranch (Grilled or Crispy) - Meal $6.39 Premium McWrap Sweet Chili Chicken (Grilled or Crispy)$4.39 Premium McWrap Sweet Chili Chicken (Grilled or Crispy) - Meal $6.39 Filet-O-Fish

Gimme a pack of Filet-O-Fish

@MoleMad
Copy link

MoleMad commented Mar 1, 2023

Time to switch to Google Pixel while you can. It's the only sane choice left (modern Samsung Androids are insanely locked down)

@SynysterZV
Copy link

Time to switch to Google Pixel while you can. It's the only sane choice left (modern Samsung Androids are insanely locked down)

me sitting here with my OnePlus 6T

@LudovicoPiero
Copy link

:trollface:

@brandonsaldan
Copy link

Big Mac $3.99 Big Mac - Meal $5.99 2 Cheeseburgers $2.00 2 Cheeseburgers - Meal $4.89 Quarter Pounder with Cheese $3.79 Quarter Pounder with Cheese - Meal $5.79 Double Quarter Pounder with Cheese $4.79 Double Quarter Pounder with Cheese - Meal $6.69 Bacon Clubhouse Burger $4.49 Bacon Clubhouse Burger - Meal $6.49 Buttermilk Crispy Chicken $4.39 Buttermilk Crispy Chicken - Meal $6.39 Artisan Grilled Chicken $4.39 Artisan Grilled Chicken - Meal $6.39 Premium McWrap Chicken & Bacon (Grilled or Crispy)$4.39 Premium McWrap Chicken & Bacon (Grilled or Crispy) - Meal $6.39 Premium McWrap Chicken & Ranch (Grilled or Crispy) $4.39 Premium McWrap Chicken & Ranch (Grilled or Crispy) - Meal $6.39 Premium McWrap Sweet Chili Chicken (Grilled or Crispy)$4.39 Premium McWrap Sweet Chili Chicken (Grilled or Crispy) - Meal $6.39 Filet-O-Fish

Gimme a pack of Filet-O-Fish

i got you twin 🤞

@Vresod
Copy link

Vresod commented Mar 1, 2023

Will this effect users on iOS 15 versions?

@SynysterZV
Copy link

Will this effect users on iOS 15 versions?

No as Cryptex1 wasn’t implemented until IOS 16

Copy link

ghost commented Mar 1, 2023

rip

@QuanTrieuPCYT
Copy link

sadge thing

@QuanTrieuPCYT
Copy link

:trollface:

@shidktbw
Copy link

shidktbw commented Mar 1, 2023

F

@augustobob
Copy link

Time to move on, we’ll find another way to downgrade

@eenturk
Copy link

eenturk commented Mar 2, 2023

Dammit Apple...

@Nebula-Developer
Copy link

Pretty sad. I love Apple but the freedom we get given is slowly deteriorating.

@akromovx
Copy link

akromovx commented Mar 5, 2023

дефолт, база

@Tweaker177
Copy link

That bucking flows! RIP.

@tonn333
Copy link

tonn333 commented Apr 28, 2023

Will this effect users on iOS 15 versions?

No as Cryptex1 wasn’t implemented until IOS 16
So it would still be possible for me to go form 14.3 to 15.4.1 if I have the blobs?

@briesnitz
Copy link

same question here, I'm jailbreaked on ios 14.2 and want to upgrade to 15.3 having all blobs saved. Is futurerestore affected in this case, too?

@onyxcode
Copy link

onyxcode commented Sep 22, 2023

on A11 and above yes besides the iphone 8

@jorin21
Copy link

jorin21 commented Nov 21, 2023

I know this impacts downgrading but from all that I’m reading I’m not sure if this impacts upgrading to a higher version. For example, I am on 16.4 right now and I have a blob saved for iOS 17.1 . Considering everything, would I still have a problem upgrading if my device is A11+?

@gzz2000
Copy link

gzz2000 commented Nov 27, 2023

I am also concerned about upgrading. I am on 15.4.1 (iphone 12) and have saved blobs for 16.5. Can I use that blob to upgrade to 16.5? Given the state it might no longer be possible because there is no way to install a cryptex1 that is 16.5-compatible. Correct me if I was wrong please

@RaenzyIsDev
Copy link

😭 rip iPhone 13

@little-nugget
Copy link

I am also concerned about upgrading. I am on 15.4.1 (iphone 12) and have saved blobs for 16.5. Can I use that blob to upgrade to 16.5? Given the state it might no longer be possible because there is no way to install a cryptex1 that is 16.5-compatible. Correct me if I was wrong please

I'd also like to know if i can upgrade to 16.5 since i have the signed blobs for my iphone which is on 15.4.1 currently

@drybonesification
Copy link

Same here ive been looking around and now that i see jailbreaks coming out for higher versions then what i am on. I would like to update from 15 to another version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment