Come è possibile che un messaggio di testo possa riavviare un dispositivo Apple?

2

Stavo leggendo il mio infosec newsfeed e ho trovato questo articolo:

link

In pratica parla di un bug che iOS ha mentre analizza i caratteri arabi, in particolare nelle notifiche.

Leggendo un po 'più a fondo nell'argomento ho appreso che il bug viene eseguito esclusivamente quando la notifica è abbreviata con un'ellissi (...) e che l'ellissi cade nel mezzo del carattere arabo.

Ovviamente, proprio quando ha iniziato a essere una lettura più interessante (e infosec oriented), l'autore si ferma semplicemente dicendo "fa sì che il sistema si blocchi". L'ulteriore ricerca non mi ha portato a nessuna spiegazione tecnica.

Come è possibile che una semplice operazione come l'analisi di un personaggio possa avere un difetto così importante?

    
posta Daniel Zendejas 27.05.2015 - 19:11
fonte

2 risposte

5

Ho appena chiesto una domanda simile ; il mio riguardava il modo in cui Apple risolverà questo problema, non necessariamente quello che fa il bug che causa il crash del telefono.

Come suggerito da @LvB, sembra essere un bug nell'elaborazione del testo di notifica SpringBoard, in cui il programma legge in modo infinito la stringa Unicode in memoria, occupando tutta la memoria disponibile. Quindi, SpringBoard genera un errore di segmentazione nel tentativo di allocare la memoria di proprietà del kernel. Sembra un riavvio "veloce" perché viene riavviato solo SpringBoard.

Apple non ha rilasciato alcun dettaglio, ma questo è il mio output da Settings/Privacy/Diagnostics & Usage/Diagnostics & Usages Data/LatestCrash.ips :

Hardware Model:      iPhone4,1
Process:             SpringBoard [395]
Path:                /System/Library/CoreServices/SpringBoard.app/SpringBoard
Identifier:          com.apple.springboard
Version:             50 (1.0)
Code Type:           ARM (Native)
Parent Process:      launchd [1]

Date/Time:           2015-05-27 13:59:33.737 -0400
Launch Time:         2015-05-27 13:36:16.197 -0400
OS Version:          iOS 8.3 (12F70)
Report Version:      104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x403c0a40
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   CoreText                        0x28bf2264 0x28b54000 + 647780
1   CoreText                        0x28bc2e64 0x28b54000 + 454244
2   CoreText                        0x28bc37f8 0x28b54000 + 456696
3   CoreText                        0x28b8fb9c 0x28b54000 + 244636
4   CoreText                        0x28b91350 0x28b54000 + 250704
5   CoreText                        0x28b64716 0x28b54000 + 67350
6   CoreText                        0x28b644f6 0x28b54000 + 66806
7   CoreText                        0x28b64372 0x28b54000 + 66418
8   UIFoundation                    0x332561ca 0x331fb000 + 373194
9   UIFoundation                    0x332585ec 0x331fb000 + 382444
10  SpringBoard                     0x00320f9c 0x89000 + 2719644
11  SpringBoard                     0x00321084 0x89000 + 2719876
12  SpringBoard                     0x003212e0 0x89000 + 2720480
13  SpringBoard                     0x002bbb6c 0x89000 + 2304876
14  SpringBoard                     0x003020a8 0x89000 + 2592936
15  SpringBoard                     0x00301052 0x89000 + 2588754
16  SpringBoard                     0x0025d472 0x89000 + 1918066
17  SpringBoard                     0x0025d374 0x89000 + 1917812
18  SpringBoard                     0x0025d3e6 0x89000 + 1917926
19  SpringBoard                     0x0025d724 0x89000 + 1918756
20  SpringBoard                     0x0025d52a 0x89000 + 1918250
21  SpringBoard                     0x0025c2ba 0x89000 + 1913530
22  CoreFoundation                  0x2823b850 0x2812d000 + 1108048
23  CoreFoundation                  0x28165fe8 0x2812d000 + 233448
24  libdispatch.dylib               0x36831c80 0x36830000 + 7296
25  libdispatch.dylib               0x36831c6c 0x36830000 + 7276
26  libdispatch.dylib               0x3683d54e 0x36830000 + 54606
27  CoreFoundation                  0x281fc884 0x2812d000 + 850052
28  CoreFoundation                  0x281fafa4 0x2812d000 + 843684
29  CoreFoundation                  0x2814699c 0x2812d000 + 104860
30  CoreFoundation                  0x281467ae 0x2812d000 + 104366
31  GraphicsServices                0x2f91f1a4 0x2f916000 + 37284
32  UIKit                           0x2b8d1690 0x2b862000 + 456336
33  SpringBoard                     0x000908b4 0x89000 + 30900
34  libdyld.dylib                   0x3686faac 0x3686e000 + 6828

Questo è solo attraverso il thread 0 (quello che si è arrestato in modo anomalo) perché il resto non è molto importante.

Dal registro degli arresti anomali si può vedere che l'app che si è arrestata in modo anomalo era SpringBoard e la causa è un SIGSEGV (errore di segmentazione). Quindi, la traccia di stack (ignorare la chiamata di sistema sulla linea 34) suggerisce che è stata causata da:

33  SpringBoard                     0x000908b4 0x89000 + 30900

Prendi questo con un granello di sale. Poiché non so quale sia il codice sorgente e Apple ha oscurato i registri degli arresti anomali con gli indirizzi anziché i nomi delle funzioni (era solito fornire i nomi delle funzioni), è possibile solo supporre dalla traccia dello stack e dal comportamento dello schianto.

Potrebbe anche esserci un problema con il modo in cui CoreText elabora la stringa prima passandola a SpringBoard, non lo sappiamo perché non abbiamo progettato le app interne in CoreServices.

    
risposta data 27.05.2015 - 20:17
fonte
0

Dai molti, molti articoli, sembra che il sistema di messaggistica banner su iOS di serie (non jailbroken) abbia problemi nell'elaborazione di unicode e arresti anomali. Quali sono i problemi interni esatti? Apple non l'ha ancora spiegato.

I telefoni jailbroken ricorrono alla "modalità sicura" invece di un arresto anomalo.

Questo non è un nuovo bug .

    
risposta data 27.05.2015 - 19:26
fonte

Leggi altre domande sui tag