Address
eFusesOnline, one-way bits
Learning With Errors
0 goes to 1, once

First-pass draft. The incident reporting comes from the Consumer Rights Wiki writeup of the January 2026 OnePlus ColorOS 16.0.3.501 anti-rollback fuse incident, which collects the XDA and Android Authority coverage; the requirement is quoted from AOSP Verified Boot. Quoted lines are verbatim, the learner lines and pacing are AI. Both demos are simulations that run real arithmetic on a model of the counter, and neither one reads hardware.

aadharsh

oneplus pushed an update in january and the people who tried to go back to the old build ended up with a dead phone. every thread says the same three words: the fuse blew. is there an actual fuse in there?

eFuses

There is, and it sits on the SoC. Qualcomm chips carry a region called Qfprom, Fuse Programmable Read-Only Memory: a bank of one-time programmable electronic fuses. A controlled voltage pulse moves a fuse from 0 to 1, and that change is physical, so no software can move it back.

[src]
eFuses

The XDA thread is careful with the word. A fuse gets electrically switched rather than burned through, so when somebody says blown they mean a bit that is now stuck at one.

[src]
aadharsh

fine. but why would a phone want a bit it can never clear? that reads like a bug somebody shipped on purpose.

eFuses

Start with what a signature can tell you. Secure boot checks that an image was signed by the vendor, so a forged image fails. Last year's image was also signed by the vendor, so it passes the identical check, and last year's image is the one carrying the hole somebody has already published an exploit for.

eFuses

That is a downgrade attack: flash a real, properly signed, older build, then use the bug it still has. Signature checking cannot stop it, because signature checking keeps no memory. Every boot asks the same question and gets the same honest answer.

two verifiers · where they disagree

Two verifiers, three images, one floor of 6. The left verifier checks the signature and stops. The right verifier checks the signature and then the version. Click an image and read both verdicts.

signature only
pick an image
signature plus rollback floor
pick an image
the two verifiers disagree about exactly one of these three.
aadharsh

ok, so the middle row is the whole problem. the signature is real and the build is still the one i should not be running.

eFuses

That is the gap, and closing it needs the phone to remember how far it has already come. Android's docs put the requirement in one sentence: "Rollback protection is typically implemented by using tamper-evident storage to record the most recent version of the Android and refusing to boot Android if it's lower than the recorded version."

[src]
eFuses

The hard part is where that number lives. Anyone who can flash firmware can rewrite ordinary storage, so a counter kept in flash is a counter the attacker edits on the way past. Qualcomm's answer is to keep it in silicon, as fuses. Drag the version and watch the floor move:

the ratchet · blow a fuse, then try to undo it

A simulated fuse bank, 12 bits wide. No hardware is touched here; the point is the arithmetic. The floor starts at 3 because the factory already blew three. Pick a firmware version, flash it, and watch what the bank will and will not do.

anti-rollback floor: 3
7
pick a firmware version and flash it.
aadharsh

the floor only ever goes up. the undo button just tells me off.

eFuses

That is the property, and physics is what buys it. A fuse bank counts by blowing more fuses, so the counter is a ratchet: every operation adds a one, and the instruction set contains nothing that removes one.

aadharsh

walk me through what the phone actually does at power on.

eFuses

The PBL, the primary bootloader burned into the processor's ROM, comes up first and verifies the next stage, the XBL. Before it hands over, the PBL reads the anti-rollback version out of Qfprom and compares it against the version embedded in the firmware. Come in lower than the fuse value and boot stops there. When a newer build boots cleanly, the bootloader goes through TrustZone to blow more fuses, which writes the new minimum down for good.

[src]
aadharsh

what about 9008. EDL is supposed to be the last resort, it talks straight to storage.

eFuses

It does, and it still loses. EDL runs out of that same PBL ROM and can write your storage directly, while the fuses sit in processor silicon where a storage write cannot reach. The Firehose programmers EDL loads have to be OEM-signed and they carry anti-rollback versions of their own, so unbrick tools that worked last year now fail on exactly these devices. The remedy people report is a new motherboard.

[src]
aadharsh

is this a oneplus thing or does everyone do it?

eFuses

The substrate is everywhere; the job it gets given is what differs. Samsung's Knox bit is the same kind of eFuse on the same kind of board, and it gates no boot at all. It records that you flashed something Samsung never signed, and once it trips, Samsung Pay and Secure Folder stay off for the life of the device. One fuse used as a gate, one used as a witness.

[src]
aadharsh

hang on. the android doc you quoted said tamper-evident. evident means i can tell. it never said i should be unable to go back.

eFuses

That is the sharpest thing on this page. Evident is a detection property: the device can tell that state moved and can decide what to do about it. Qualcomm shipped something strictly stronger, an irreversible one, and the extra strength is exactly what the owner pays for. Whoever writes a detection rule can relax it later. A blown fuse leaves no author to appeal to.

eFuses

OnePlus said as much without meaning to. Nine days after the reports started they told Android Authority they had "temporarily paused the ability to downgrade" and "will be restoring the ability to downgrade software builds in our next routine software update."

[src]
eFuses

Both halves are true, and they act on different layers. The pause is policy, so a future build can lift it. The fuses are already blown on every phone that took the update, so the handsets that hard-bricked in January are waiting on nothing that a routine software update can deliver.

aadharsh

so: a signature says who made this, a fuse says how far this phone has already gone, and only the second one can refuse yesterday.

eFuses

That is the model. Carry one blind spot out with it: the counter compares two numbers and cannot see who is asking. An attacker rolling you back to an exploitable build and an owner rolling back to the build where the camera worked send the identical request, so any mechanism that stops the first stops the second by construction.

end of first pass
This is a recorded conversation. The fuse bank above ratchets, and no button puts it back.