Computerbeveiliging - Hoe je bad guys buiten de deur houdt

SSID met format string crashed iPhone

19-06-2021, 23:43 door Anoniem, 13 reacties
https://twitter.com/vm_call/status/1405937492642123782

After joining my personal WiFi with the SSID “%p%s%s%s%s%n”, my iPhone permanently disabled it’s WiFi functionality. Neither rebooting nor changing SSID fixes it :~)
Reacties (13)
20-06-2021, 00:43 door Anoniem
You are using it wrong.
20-06-2021, 20:11 door Anoniem
Door Anoniem: https://twitter.com/vm_call/status/1405937492642123782

After joining my personal WiFi with the SSID “%p%s%s%s%s%n”, my iPhone permanently disabled it’s WiFi functionality. Neither rebooting nor changing SSID fixes it :~)

Eén van de followups :


Settings->General->Reset->Reset Network Settings

Werkt blijkbaar (een 'dank je' van de TS ).
21-06-2021, 10:45 door Anoniem
Kennelijk wordt er intern een (s)printf gedaan met de SSID als format string.
De vraag is nu natuurlijk of dat pure domheid van de programmeur is (je hebt ze die als ze een stringvariabele willen
afdrukken dit doen met printf(var) ipv puts(var) of printf("%s",var) !!!) of dat dit een of andere "nuttige functionaliteit" is
die een beetje naief geprogrammeerd is. Bijv dat %s vervangen wordt door je hostnaam of domeinnaam ofzo.
Niet dat ik het nut daarvan in dit geval inzie...

Die %n format string (had ik nog nooit van gehoord) klinkt ook niet als iets wat erg slim was om toe te voegen als optie...
21-06-2021, 14:03 door Anoniem
Goeie find
22-06-2021, 05:50 door Anoniem
Door Anoniem:Kennelijk wordt er intern een (s)printf gedaan met de SSID als format string.

Zhi Zhou (a.k.a ChiChou, a.k.a. CodeColorist - met intussen een stel macOS-gerelateerde CVE's op diens naam) is aan de gang gegaan om te zien hoe het in elkaar steekt:

https://blog.chichou.me/2021/06/20/quick-analysis-wifid/

tl;dr:
So it’s really a format string bug!
22-06-2021, 11:18 door Anoniem
Die Chinees praat nogal in geheimtaal. Wat niet helemaal duidelijk wordt is waarom de SSID als format gebruikt wordt.
Het dichtst dat ik er bij kom is dat men kennelijk de SSID wil loggen. Maar dat doe je dan toch door deze in een string
variabele te zetten en die met een %s in het format van de logmessage op te vangen?

Als je zo iets doet: sprintf(buffer,"connected to SSID %s","%p%s%s%s%s%n")
dan gaat dat ECHT niet mis!
(ok je moet natuurlijk snprintf gebruiken)

Kortom dit moet broddelprogrammeerwerk zijn. Iemand die aan het iOS project gezet is maar het programmeren nog
niet helemaal snapte. Ben benieuwd hoe Apple dit gaat verklaren.
02-07-2021, 22:59 door Anoniem
Is dit inmiddels opgelost en voor welke iPhones vormt dit een probleem?
04-07-2021, 15:59 door Anoniem
Door Anoniem: Is dit inmiddels opgelost en voor welke iPhones vormt dit een probleem?
Voorlopig is de oplossing:
maak via WiFi geen verbinding met een station genaamd “%p%s%s%s%s%n” of andere SSIDs waar veel
% -karakters in voorkomen
.
(want SSID-strings met soortgelijke opbouw kunnen eventueel hetzelfde probleem geven)

Wanneer je toch verbinding hebt gezocht via WiFi met een station dat als SSID “%p%s%s%s%s%n” heeft,
kun je je netwerksettings resetten als volgt:
go to Settings > General > Reset and select Reset Network Settings.


Ik ga er voorlopig vanuit dat deze "oplossing" een zgn. workaround is,
en dat er in een toekomstige iOS versie een definitieve oplossing volgt. (als dat tenminste mogelijk is...)
05-07-2021, 07:33 door Anoniem
Door Anoniem: [... en dat er in een toekomstige iOS versie een definitieve oplossing volgt. (als dat tenminste mogelijk is...)
Natuurlijk is dat mogelijk. Het is duidelijk dat SSID's, volkomen ten onrechte, ergens als format string behandeld worden. Dat is een bug, die bug zit in software, software kan aangepast worden, en iOS in iPhones is niet opgeslagen in onveranderlijk ROM-geheugen maar in flash-geheugen dat met een upgrade bijgewerkt kan worden. Mogelijk is het zeker.
05-07-2021, 13:06 door Anoniem
Door Anoniem:
Door Anoniem: [... en dat er in een toekomstige iOS versie een definitieve oplossing volgt. (als dat tenminste mogelijk is...)
Natuurlijk is dat mogelijk. Het is duidelijk dat SSID's, volkomen ten onrechte, ergens als format string behandeld worden. Dat is een bug, die bug zit in software, software kan aangepast worden, en iOS in iPhones is niet opgeslagen in onveranderlijk ROM-geheugen maar in flash-geheugen dat met een upgrade bijgewerkt kan worden. Mogelijk is het zeker.
Technisch verwacht ik ook wel dat het mogelijk is, maar ik kan niet overzien hoeveel moeite het ze zal kosten om het te verhelpen.
Het kan een eenvoudige stomme bug zijn die heel gemakkelijk is te verhelpen, maar het kan ook heel erg lastig zijn.
Als het te lastig en te duur wordt, zou men bij Apple eventueel ook kunnen besluiten om het bij waarschuwen en de bekende workaround te laten. Niet dat ik die kans groot acht bij Apple, maar ik houd er in alle voorzichtigheid toch maar een ietsiepietsie rekening mee.
05-07-2021, 15:04 door Anoniem
Door Anoniem:
Technisch verwacht ik ook wel dat het mogelijk is, maar ik kan niet overzien hoeveel moeite het ze zal kosten om het te verhelpen.
Het kan een eenvoudige stomme bug zijn die heel gemakkelijk is te verhelpen, maar het kan ook heel erg lastig zijn.
Als het te lastig en te duur wordt, zou men bij Apple eventueel ook kunnen besluiten om het bij waarschuwen en de bekende workaround te laten. Niet dat ik die kans groot acht bij Apple, maar ik houd er in alle voorzichtigheid toch maar een ietsiepietsie rekening mee.
Dat zou ik dan wel een grote blamage vinden voor Apple, want dit is een "bug" die het gevolg is van "programmeren
zonder te snappen hoe die format functie werkt" en hoewel dat natuurlijk kan voorkomen, is de oplossing vrij simpel:
stuur de programmeur op cursus en laat hem (of iemand die al op cursus geweest is) de code herzien.
07-07-2021, 17:05 door Erik van Straten
Nieuwe aanval met grotere gevolgen: https://www.zdnet.com/article/serious-wi-fi-bug-can-break-your-iphone-but-heres-how-to-protect-yourself/

Carl Schou, de ontdekker van de vorige exploit die de TS meldt, heeft een nieuwe kwetsbaarheid ontdekt (https://twitter.com/vm_call/status/1411630091038203909). Door een WiFi access point de naam %secretclub%power te geven, kunnen "voorbijkomende" iPhones zo van slag raken dat zij niet meer via WiFi kunnen communiceren. In tegenstelling tot de eerdere kwetsbaarheid is het deze keer veel lastiger om WiFi weer aan de praat te krijgen.

Om zo'n situatie te voorkomen, is het advies van Adrian Kingsley-Hughes (de auteur van het ZDNet artikel) om in de WiFi instellingen van iPhones (en iPads) "Verbind met hotspot" te wijzigen van "Automatisch" in "Vraag om verbinding" of "Nooit".

Of het volgende verstandig is weet ik niet zeker, maar ik heb tevens "Vraag om verbinding" op mijn iPhone op "Uit" gezet. Er wordt dan nog steeds automatisch verbinding gemaakt met "bekende netwerken" (dus SSID's van WiFi access points waar het toestel eerder een geslaagde verbinding mee had, zoals je thuisrouter), maar als er alleen onbekende netwerken (of geen enkele) binnen bereik zijn, gebeurt er niets (geen meldingen of vragen dus; je moet dan, indien gewenst, handmatig naar je instellingen om een nieuw netwerk toe te voegen).
07-07-2021, 20:36 door Anoniem
Door Erik van Straten: Nieuwe aanval met grotere gevolgen: https://www.zdnet.com/article/serious-wi-fi-bug-can-break-your-iphone-but-heres-how-to-protect-yourself/

Carl Schou, de ontdekker van de vorige exploit die de TS meldt, heeft een nieuwe kwetsbaarheid ontdekt (https://twitter.com/vm_call/status/1411630091038203909). Door een WiFi access point de naam %secretclub%power te geven, kunnen "voorbijkomende" iPhones zo van slag raken dat zij niet meer via WiFi kunnen communiceren. In tegenstelling tot de eerdere kwetsbaarheid is het deze keer veel lastiger om WiFi weer aan de praat te krijgen.

Om zo'n situatie te voorkomen, is het advies van Adrian Kingsley-Hughes (de auteur van het ZDNet artikel) om in de WiFi instellingen van iPhones (en iPads) "Verbind met hotspot" te wijzigen van "Automatisch" in "Vraag om verbinding" of "Nooit".

Of het volgende verstandig is weet ik niet zeker, maar ik heb tevens "Vraag om verbinding" op mijn iPhone op "Uit" gezet. Er wordt dan nog steeds automatisch verbinding gemaakt met "bekende netwerken" (dus SSID's van WiFi access points waar het toestel eerder een geslaagde verbinding mee had, zoals je thuisrouter), maar als er alleen onbekende netwerken (of geen enkele) binnen bereik zijn, gebeurt er niets (geen meldingen of vragen dus; je moet dan, indien gewenst, handmatig naar je instellingen om een nieuw netwerk toe te voegen).

Inmiddels een "hardcore only" workaround gevonden om Wifi weer werkbaar te krijgen.
Handmatig editen van een iPhone backup om de probleem-netwerken uit de .plist file te halen.

Zie
https://gist.github.com/pieceofsummer/26dc10b4263945298407cdf2d55b9065

Via :

https://twitter.com/pieceofsummer


https://twitter.com/wr3nchsr/status/1411655236230451200

Daar lees ik ook - simpeler , maar ingrijpender :


After a couple of days of trial and error with @pieceofsummer
we found that the issue in this case is fixable using one of two methods. The simple one is to erase your device’s data. However, if you don’t prefer to erase your phone, you’ll have to backup your device… (6/n)
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.