Apple’s proprietary software is notoriously difficult to make malware for. It’s not that it’s impossible (so don’t go cavorting around sketchy sites without antivirus just because you have an iMac) it’s just tougher than Windows, and because Windows is more common, Windows gets the bulk of the viruses.
However, glitches and bugs are a different story entirely! Bugs are plenty common under the hood of the iPhone – some user inconvenience was deliberately introduced into older phones, allegedly in an attempt to make users upgrade. Apple paid out a pretty penny in lawsuits for that one.
Even on new ones, dropping the phone could make it seize up. Leaving it on too long? Seize up. Apps could crash so hard that the only way to get the screen to respond to inputs again was with a hard reboot. The iPhone isn’t flawless or impossible to break, it’s just hardier on the virus front. With that caveat, sometimes glitches can be used like viruses to disrupt normal use of the phone. The text glitch that forced hard reboots of the phone is one example that Apple’s R&D department won’t soon forget.
But how did it happen?
Unicode, which Apple switched to in iOS 5, or somewhere around the release of iPhones 3 and 4, is very widely used. Unicode is a character library meant to homogenize the text you see online. It’s not the only one, but it’s one of the biggest! Unicode assigns a unique numerical value to each character in its library (letters, numbers, punctuation signs, etc.). The device can then show you, the user, the character behind the numbers when it receives that data from the other side.
You’ll notice when Unicode is out of date. If you have an older phone, sometimes you’ll see blank boxes where there should be a character or emoji, but your device doesn’t ‘know’ what character is supposed to correspond to the value it’s being given, so it shows a blank box instead. Sometimes the OS can fudge it a little and substitute characters that aren’t necessarily part of the Unicode (see Apple’s devil emoji vs. Android’s in texts) but generally the OS has to be able to read the character to represent it.
That aside, when it comes to breadth, Unicode is pretty impressive: even if it doesn’t have hieroglyphs or every new emoji, Unicode supports an incredible array of languages by default. Russian characters, Greek characters, Arabic, Latin, Cherokee, Mongolian, Chinese, Japanese, etc. are all represented in the Unicode library.
When you think of it that way – when you picture how many thousands of different characters and combinations you can create with the entire Unicode library at your fingertips – it’s not so surprising that someone found something that caused problems. In 2015, a string of English and Arabic letters combined with a couple of symbols could brick up the Apple iPhone so badly that the user had to reboot. One version of this used the iMessage notification to do so, so the only way to prevent it was to disable the notification from previewing the text on-screen – unfortunately, it also meant that if the phone tried to show the message again after rebooting, it could get caught in a death loop and need a reset unless the other user sent another text to replace the freezy one in the message previews. Apple did not introduce an update to fix the issue for weeks. Whether that was because they couldn’t or because they couldn’t replicate the issue on their own devices (it didn’t happen to every iPhone) is hard to say, but the text continued to circulate and collapse the iMessage app with little consequence.
Not every iPhone was affected by this particular text. iPhones with iOS 7 or above didn’t shut down upon receiving the text, and neither did 5 or below. Androids seemed to be completely unaffected, and of course turning off notifications prevented it from happening to devices in the danger zone. That was for the Arabic/English/symbol text discovered in 2015… and people soon discovered it was not the only text capable of tanking a phone.
Apple patched the discovered ones once they realized it was an OS issue (and a serious one) but that didn’t stop people from finding new ones to send to their friends, restarting the cycle of ‘Discovered -> It’s Not Serious -> Oh No It IS Serious -> Don’t Worry We Patched It’ from Apple every time, a cycle that sometimes took weeks or months. Again, Unicode is absolutely massive, so there was no way to test every combo of characters before launch. One bug used Sindhi characters, another used Telugu to crash devices. In all cases (or everything searchable) it wasn’t the messaging app itself, but the notification – something about having to show the characters in the little notification box is what caused the iOS to flip out, further complicating fixes. Users could disable the notifications, but that would make iPhones slightly less user-friendly than they were, and with Android devices creeping up on them, that was a bad look.
Even worse, The Verge reported in 2018 that some of these bugs could cause MacOS to flip out upon receipt, as well as more recently updated iOS devices. While the original one was dealt with in 2015, echoes of it continued to wreak havoc on targeted iPhone users for years to come. It seems as though the latest phones don’t struggle with Unicode… so hopefully, the issue won’t be making another appearance.