Sms-bericht met bepaalde tekst kan Messages-app iOS laten vastlopen - update

Apples mobiele besturingssysteem heeft last van een bug waardoor gebruikers de Messages-app van andere gebruikers kunnen laten crashen. Dat kan door een bepaald bericht via sms of iMessage naar een gebruiker met iOS te sturen. Het probleem is relatief eenvoudig op te lossen.

Apple logoHet gaat om een specifieke combinatie van Latijnse en Arabische tekens. IOS-gebruikers melden op sociale media dat de tekst circuleert en dat 'grappenmakers' de tekst rondsturen. Sommige gebruikers melden dat de bug niet werkt op de bèta van iOS 8.4.

Als de tekst wordt verzonden naar een iOS-gebruiker, crasht de Messages-app zodra hij wordt geopend. Dat melden onder meer 9to5Mac en The Verge. Volgens 9to5Mac kan de iPhone of iPad door de bug ook compleet crashen. The Verge meldt dat niet te kunnen verifiëren, maar dat een getroffen iPhone wel een stuk trager werd.

Het gecrashte Messages is relatief eenvoudig te herstellen. Getroffen gebruikers moeten daartoe een antwoord sturen naar de gebruiker die het malafide berichtje rondstuurde. Omdat de Messages-app niet kan worden geopend, moeten ze daarvoor een andere manier vinden. Dat kan bijvoorbeeld met behulp van OS X, als de gebruiker daartoe beschikking heeft, of door middel van de Siri-app. Ook de zogenoemde Share Sheet, waarmee bijvoorbeeld links naar andere apps kunnen worden gestuurd, kan daarvoor worden gebruikt.

Het is eerder gebeurd dat iOS werd getroffen door een 'sms-bericht des doods'. Apple weet die problemen vaak snel op te lossen, maar voor zover bekend is er nu nog geen definitieve oplossing voorhanden.

Update, 20:10: Ook notificaties uit andere apps kunnen zorgen voor crashes, meldt Maarten Boone van Fox-IT. Daarbij gaat het onder meer ook om Twitter, in het geval van een privébericht of als een gebruiker wordt gementioned in een tweet. Als gebruikers hebben ingesteld dat ze ongelezen notificaties opnieuw getoond krijgen, kan dat resulteren in een boot loop, omdat de notificatie telkens in het lockscreen wordt ingeladen.

Door Joost Schellevis

Redacteur

27-05-2015 • 09:58

120

Reacties (120)

120
102
58
4
0
0
Wijzig sortering
Reddit meld zelfs dat het iPhones kan laten herstarten, of dat ook zo is weet ik niet.
Zoals Smiba zegt zal het wel gewoon om een respring gaan.


En /r/jailbreak heeft al een bash script gemaakt om het tegen te gaan.


The sms only works when the message has to be abbreviated with "..."
This is usually on the lock screen and main menu of Messages.app.

The words effective and power can be anything as long as they're on two different lines, which forces the Arabic text farther down the message where some of the letters will be replaced with "..."

The crash happens when the first dot replaces part of one of the Arabic characters (they require more than one byte to store) Normally there are safety checks to make sure half characters aren't stored, but this replacement bypasses those checks for whatever reason.

[Reactie gewijzigd door [Remmes] op 22 juli 2024 15:13]

Waarschijnlijk wat ze zien is dat springboard restart, dit laat ook voor 20-30 seconde het bekende apple logo zien die ook bij het opstarten in beeld verschijnt. Als je geen ervaring met de achterliggende code hebt komt het al snel over als "Mijn telefoon restart"
Anoniem: 676178 @smiba30 mei 2015 11:51
Mijn dochter heeft zo'n berichtje via de whatsapp ontvangen en nu start de iPhone helemaal niet meer op. Blijft nu hangen bij het Apple logo en verspringt het schermpje daarna steeds van het logo naar paswoordschermpje binnen 1 seconde. Dus ik kan de telefoon helemaal niet meer opstarten. Wat kan ik hieraan doen?
Waarschijnlijk zijn er hondereden SMS'jes verstuurd en bij iedere die hij ontvangt doet hij dat. Even simkaart verwijderen, settings toepassen en daarna weer terugplaatsen.

[Reactie gewijzigd door smiba op 22 juli 2024 15:13]

Het is ook een respring... Want de tijd is te kort voor een volle reboot.
Vindt t alleen een beetje slordig dat de NOS z'n huiswerk niet heeft gedaan en ook gewoon voluit meld op het journaal dat het om een reboot van de telefoon gaat :-/
Net getest met een vriend, de exploit werkt enkel als de iPhone de notificatieoptie 'banner' heeft aanstaan. Als de SMSapp geen notificatie, of een popup geeft, is er geen probleem.

Blijkbaar is het dus een probleem, niet met de SMSapp, maar met het notificatiesysteem.

Verder is er ook geen probleem als je de tekst krijgt terwijl je in de sms conversatie zit: dan krijg je tenslotte ook geen notificatie.
Kijk, leuke interessante info! Dit maakte ik al deels op uit de replies op Reddit en omdat het zich ook voordoet bij Telegram en Whatsapp, maar dat je zo enkele scenarios hebt getest geeft toch meer concrete informatie waar we wat aan hebben.

Als we dan de informatie van Reddit erbij in acht nemen dan kunnen we concluderen dat de plaatsing van de karakters in combinatie met het speciaal zijn van de karakters die omgezet moeten worden naar een notificatie ervoor zorgen dat het probleem zich voordoet.

Op het moment dat een notificatie een bepaalde lengte heeft wordt hij namelijk afgekapt. Als de afkapping op het verkeerde moment gebeurd, in die speciale tekenreeks, zorgt dat ervoor dat er in die conversie naar "..." een buffer overflow plaatsvindt.

Wat nog leuk zou zijn om ook eens te testen is of het probleem zich wel voordoet bij de popup als de crash-string op een andere locatie staat. De popup is namelijk een iets groter veld, dus wordt waarschijnlijk op een andere locatie afgekapt tov een banner.

[Reactie gewijzigd door SidewalkSuper op 22 juli 2024 15:13]

Het schijnt ook te werken met apps zoals Telegram
De bug bevind zich dan ook niet in de Messages app, maar in de notifications app. Het is dan ook te voorkomen door simpelweg de notificaties voor de app in kwestie uit te zetten. Dat verklaard ook waarom het ook in Whatsapp, Telegram en Twitter DM werkt.
Ik snap niet helemaal hoe dit kan gebeuren, zo'n sms-bericht zou een iPhone toch gewoon moeten kunnen ontvangen en gewoon als tekst behandelen? Het feit dat de app (en zelfs het hele OS) kan crashen, suggereert dat er ook iets met de tekst wordt gedaan, dat er iets "uitgevoerd" wordt. Kan iemand uitleggen wat dat zou kunnen zijn? Of is het meer dat bepaalde tekens niet in de characterset van de betreffende iOS-versie zitten?

[Reactie gewijzigd door Grrrrrene op 22 juli 2024 15:13]

Anoniem: 382732 @Grrrrrene27 mei 2015 10:07
SMS wordt als 7 bit karakters verstuurd (waardoor er uiteindelijk 160 karakters in 140 bytes passen). De software moet dus altijd iets doen om het weer te kunnen geven. Daarbij kan natuurlijk altijd een bug optreden.

De problemen op zich zijn echter niks nieuws, ik heb het in het verleden ook bij andere merken gezien dat er bij speciale teksten crashes optraden. Er zijn ook toestellen die het niet leuk vinden als ze een class-0 of type-0 sms ontvangen.
Dit 8<>7 bits conversie moet je op het goede moment doen natuurlijk, Een binnenkomende 7-bits SMS direct interpreteren zonder controle of de interface dat wel lust is niet handig. Het hele OS werkt volgens mij met 8 bits per char dus de data die een reeks 7bits lange chars bevat mag nooit ergens door software geinterpreteerd worden alsof 8bit-chars zijn. Dat levert een vrijwel onvoorspelbare reeks op die chars uit de hele ASCII tabel kan bevatten.
Ik vind het vrij amateuristisch en kan me eigenlijk niet voorstellen dat dat toch gedaan wordt. Iets wat erop wijst dat er meer zaken met die SMS-data gedaan worden waar nooit over wordt gepraat en wat het allemaal complexer maakt dan nodig is.
Het hele OS werkt volgens mij met 8 bits per char
Het ligt nog iets complexer. Met 8 bits kun je maximaal 256 karakters weergeven. Arabisch, Cyrillisch, etc. kun je dan vergeten. Vermoedelijk wordt UTF gebruikt.

Hier een artikel over de achtergrond van character encoding in iOS.
http://www.galloway.me.uk...-for-ios-developers-utf8/

[Reactie gewijzigd door menke op 22 juli 2024 15:13]

Je kan best een eigen interpretatie toepassen op een reeks bits maar het moet altijd naar SMS geconverteerd worden, als laatste voor verzenden en als eerste na ontvangen.

Overigens ken ik iOS niet zo goed. Wat gebeurt er als je een SMS in Arabish naar een (Nl.) dumbphone stuurt?
Hoe dumb is die dumbphone? Ik had ooit eens een Nokia bestemd voor de, ik geloof Japanse markt, waar ik een NL SIM kaart in stopte, en toen geëxperienteerd met wat er gebeurde als ik Japanse tekens naar een standaard Europees model SMS'te, en ik kreeg blokjes te zien, (zoals Windows doet als hij een teken niet in zijn font heeft) Dit doet me vermoeden dat dumbfones, at least uit het dual-band-tijdperk, unicode aware zijn.
Anoniem: 175233 @Grrrrrene27 mei 2015 10:18
Wellicht het interpreteren van tekens om ze in smileys om te zetten, en links aan te maken?

Maar ik ben het met je eens... ongelooflijk dat we keer op keer met dit soort problemen zitten. Dat heeft denk ik ook veel te maken met de gebruikte programmeertaal. In low-level talen heb je veel sneller met dit soort bugs te maken, dan in hogere talen.
Het is onoverkomelijk dat er fouten gemaakt worden in software, het word namelijk gemaakt door mensen. Dat zal altijd het grootste probleem blijven. Zo ongelofelijk vind ik dat niet. Juist bij de simpele dingen gaan vaak dingen fout.

En welke programmeertaal is volgens jou gebruikt? Je suggereerd dat het een low level taal is, maar is dat wel zo?
Anoniem: 175233 @gjmi27 mei 2015 11:57
Natuurlijk is het onoverkomelijk dat er fouten gemaakt worden. Maar sommige veel voorkomende fouten zijn wel degelijk specifiek voor bepaalde talen. Buffer overflows bijvoorbeeld, zijn typisch een probleem bij C en C++, maar worden automatisch opgespoord en voorkomen in tal van andere talen. Dergelijke fouten zijn dus wel degelijk te voorkomen, door simpelweg een andere programmeer taal te gebruiken.
SMS berichten decoderen, wat toch een beetje bit schuiven is, doe je juist in lagere talen. Gewoonweg omdat de passende datatypen (7bit codering bijvoorbeeld) niet eens bestaan in hogere talen.
Of het goed of slecht is laat ik maar even in het midden, maar alle telefoons van de laatste 10 jaar ondersteunen 'data sms', waarmee bijvoorbeeld je provider de instellingen van je telefoon op afstand kan aanpassen (bijvoorbeeld als je belt dat je geen 4g signaal krijgt, maar wel 3g, ofzo)

Dus dan is het ergens best logisch dat je met de juiste string een telefoon behoorlijk in de war kunt schoppen.
Is dit niet de oorsponkelijke implementatie van SMS? Dat de gebruiker er leesbare berichten mee kan versturen is volgens mij pas later erbij bedacht.
Als een bepaald karakter, of een bepaalde groep karakters bijvoorbeeld niet goed afgekaderd zijn om te parsen kan het een bepaalde edge case veroorzaken waardoor er bijvoorbeeld een buffer overflow ontstaat die de service en met de service wellicht een andere service en zo zelfs tot aan het hele apparaat (domino-effect) kan doen crashen.

Het kan hetzelfde idee zijn als dat je al schetst, dat het apparaat een bepaalde characterset verwacht, dit niet goed of helemaal gecheckt is, en dus bij het ontvangen van een andere characterset over de flos gaat. Als deze bepaalde reeks niet goed afgevangen is, zou dat de oorzaak kunnen zijn.

[Reactie gewijzigd door SidewalkSuper op 22 juli 2024 15:13]

Lijkt me een geval van een buffer overflow:
https://en.wikipedia.org/wiki/Buffer_overflow

De tekst wordt op zijn minst ontvangen en opgeslagen, daarvoor moet het sowieso door het geheugen.

Met sms-berichten gebeurt nog waarschijnlijk wel iets meer, omdat het ook extra functies kan bieden, bijvoorbeeld dat je bepaalde instellingen krijgt, of om te telefoon te lokaliseren (zgn. stille sms). Waarschijnlijk zit daar ergens de buffer-overflow icm. hogere ASCII-tekens.

[Reactie gewijzigd door Keypunchie op 22 juli 2024 15:13]

Anoniem: 120539 @Grrrrrene27 mei 2015 14:10
Nu is het inmiddels wel duidelijk dat dít probleem niet direct met de afhandeling van SMS verkeer te maken heeft, maar 'gewoon behandelen' is er niet bij:

Er zijn verschillende typen SMS berichten, die ook onderverdeeld zijn in classificaties. Naast het simpele versturen van tekst van device A naar device B met als doel communicatie tussen 2 gebruikers is het ook mogelijk om een configuratie-sms naar een toestel te sturen. Afhankelijk van de werking van het toestel is dat wel of niet zichtbaar op het endpoint, maar de daadwerkelijke inhoud wordt sowieso al niet 1-op-1 doorgegeven aan de gebruiker.
Een bijzondere (beruchte) variant van een niet-tekst-SMS is de silent-SMS: een aangepast bericht dat wel zorgt voor activiteit op een device, maar in het geheel niet merkbaar voor de gebruiker. In het verleden werd dit mechanisme nog wel eens gebruikt door geheime diensten.
Bovendien kan een SMS als data meegeven of en zo ja waar deze opgeslagen moet worden.
M.a.w: het device (nu dus de iPhone) laat zijn gedrag dus afhangen van de aard van de binnenkomende SMS; er van uit gaan dat een SMS alleen maar getoond hoeft te worden is dus niet juist.
Anoniem: 601896 27 mei 2015 10:02
Ik vraag mij altijd af waarom sms-boxen, op sommige smsjes, 'anders reageren' dan het alleen tonen van het bericht. Het kunnen activeren van 'code' dmv sms lijkt mij gewoon niet meer van deze tijd. Als gebruiker is het ook geen prettig idee dat je telefoon dat doet.
een text word vermoedelijk geparsed om urls en telefoon nummers bijvoobeeld als "link" weer te geven.

tijdens het parsen zal er wel iets mis gaan. dan nog is het een rare bug.
vaak kunnen de sms-apps ook de urls in de sms'jes aanklikbaar maken en telefoonnummers etc, om dit mogelijk te maken moet de inhoud natuurlijk worden geparsed. Daarnaast moet voor het goed tonen in een tekstbox ook al naar de tekst gekeken worden en als er dan ergens een aantal tekens iets geks doen met het geheugen omdat ze uit verschillende characters sets komen, dan is een memory bug helemaal zo onwaarschijnlijk nog niet
Die 'code via sms' is een feature, al jaren beschikbaar in alle telefoons, en gaat voorlopig ook echt niet verdwijnen. Er zijn nou eenmaal nog steeds meer dan genoeg mensen die op afstand geholpen moeten worden met netwerk instellingen etc (als ze met de provider bellen over problemen bijv) en dat loopt nou eenmaal via die smsjes.

Het is juist meer van deze tijd dan dat het vroeger was, er zijn nu veel meer 'domme gebruikers' dan vroeger.
Het probleem hier lijkt alleen meer te zitten in de text zelf... Unicode is schijnbaar een soort van code op zichzelf : http://www.benfrederickson.com/unicode-insanity/

waarbij je dus kan spelen met het feit dat er codes in de text zelf zitten die de text beinvloeden en het feit dat een notification app de text ergens gaat afbreken (waardoor je dus een situatie kan creeeren dat er aan het einde code voor opmaak zit die niet meer compleet getoond gaat worden)
Welke versies worden hierdoor geraakt? Geen van de artikelen zeggen dat. Is dit alleen een iOS 8 probleem, of speelt het ook eerdere versies parten?

[Reactie gewijzigd door ATS op 22 juli 2024 15:13]

Het schijnt tot en met 8.3 te zijn maar opgelost in de beta van 8.4. Of het ook in iOS 7 voorkomt weet ik niet.

[Reactie gewijzigd door Maurits van Baerle op 22 juli 2024 15:13]

Ik heb zelf IOS 8.4 en ik heb het getest met mijn vriend via Imessage en mijn telefoon start zich zelf opnieuw op en die van hem niet.
Ik heb wat speculatie over het waarom gehoord:

Waarschijnlijk komt het door de preview in iMessage, waarbij de Arabische tekst, die onderliggend op een andere manier wordt opgeslagen (meerdere bytes, van rechts naar links, in ieder geval anders dan normale tekst). Bij de preview wordt de derde regel opgebroken en met de Arabische tekst verzoorzaakt dat een crash, het maakt daarom in principe ook niet uit wat er op de eerste twee regels staat, als de arabische tekst maar op de "goede" plek op de derde regel staat.

[Reactie gewijzigd door Jaahp op 22 juli 2024 15:13]

Vermoedelijk gaat het nog niet eens om de arabische tekst zelf, maar meer om specifieke arabische tekens in combinatie met andere unicode tekens die het probleem veroorzaken.

Ik neem tenminste aan dat er genoeg arabieren zijn die ook dagelijks sms'jes van 3 regels of meer ontvangen zonder dat het crashed.
Dus ik vermoed niet dat het enkel het arabische is, er is meer...
Ik vraag me toch af hoe je dit ondekt.
Per ongeluk?
of iemand die specefiek opzoek is naar dit zoort fouten in IOS.
"Per ongeluk" vermoed ik, het zal niet 100% per ongeluk zijn dat elke willekeurige arabier dit al tig jaar heeft op alle iphones, maar je doet bijv onderzoek naar unicode en ziet wat aparte dingen en probeert even een paar combinaties en dan zie je hem crashen.
Het lijkt erop dat Apple inmiddels al een patch heeft uitgebracht.
Geen idee of Apple het al officieel bevestigd heeft. Ik merkte alleen dat het op de IPhone van een vriend niet meer werkte (eerst wel).
Klopt, nu zelf ook.. Hij crasht niet meer.. het lijkt idd dat het gefixt is.

Hoe kan dat? kan iemand dat toelichten.. Hoe kan Apple dit op afstand fixen? Dit wil betekenen dat niks lokaal gebeurd?

Hoe kunnen ze een update uitvoeren waarbij de Messenger app een update krijgt? het is toch juist lokaal?
Nou hier crasht hij gewoon nog (En we hebben de grootste lol hier met collega's :+ )
Waarschijnlijk via een soort van silent OTA update die alleen de Messenger app beïnvloedt.
Of een ingreep in de iMessenger service die het probleem voorkomt voor berichten die daarmee uitgewisseld worden.

Edit: dat zou wel betekenen dat de berichten niet encrypted/te decrypten zouden zijn. Niet zo waarschijnlijk dus.

[Reactie gewijzigd door ATS op 22 juli 2024 15:13]

Het kan natuurlijk ook gewoon zijn dat Apple de problemen server-side heeft opgelost door bepaalde karakters af te vangen.
Toch niet alle sms-jes komen langs de server lijkt me.
Wel als het aan het notificatiecenter ligt
Is het dan constant verbinding met Apple servers? Komen allerlei vragen naar boven.
Telegram crasht ook als je het bericht er in kopieert, de iMessage client op OSX heeft er geen problemen mee trouwens

Op dit item kan niet meer gereageerd worden.