¿Cómo es posible que un mensaje de texto pueda reiniciar un dispositivo Apple?

2

Estaba leyendo mi infosec newsfeed y encontré este artículo:

enlace

Básicamente se trata de un error que iOS tiene al analizar los caracteres árabes, específicamente en las notificaciones.

Al leer un poco más sobre el tema, aprendí que el error se ejecuta exclusivamente cuando la notificación se abrevia con puntos suspensivos (...) y que los puntos suspensivos se encuentran en el medio del carácter árabe.

Por supuesto, justo cuando comenzó a ser una lectura más interesante (y orientada a la información), el autor se detiene simplemente diciendo "hace que el sistema se bloquee". La búsqueda adicional tampoco me ha llevado a ninguna explicación técnica.

¿Cómo es posible que una simple operación como analizar un personaje pueda tener un defecto tan importante?

    
pregunta Daniel Zendejas 27.05.2015 - 19:11
fuente

2 respuestas

5

Acabo de hacer una pregunta similar ; el mío fue sobre cómo Apple solucionará esto, no necesariamente lo que hace el error que hace que el teléfono se bloquee.

Como sugirió @LvB, parece ser un error en el procesamiento de texto de notificación de SpringBoard, donde el programa lee infinitamente la cadena Unicode en la memoria, ocupando toda la memoria disponible. Luego, el SpringBoard lanza un fallo de segmentación cuando intenta asignar la memoria que posee el kernel. Parece un reinicio 'rápido' porque solo se reinicia el SpringBoard.

Apple no ha publicado ningún detalle, pero esta es mi salida de 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

Esto es solo a través del subproceso 0 (el que se estrelló) porque el resto no es realmente importante.

Desde el registro de fallos puede ver que la aplicación que se bloqueó fue SpringBoard, y la causa es un SIGSEGV (falla de segmentación). Luego, el seguimiento de la pila (ignorar la llamada al sistema en la línea 34) sugiere que fue causado por:

33  SpringBoard                     0x000908b4 0x89000 + 30900

Toma esto con un grano de sal. Ya que no sé cuál es el código fuente, y Apple ocultó sus registros de bloqueo con direcciones en lugar de nombres de función (que solía dar nombres de función), solo se puede adivinar por el seguimiento de la pila y el comportamiento del bloqueo.

También podría ser un problema con la forma en que CoreText procesa la cadena antes y la pasa a SpringBoard, no lo sabemos porque no diseñamos las aplicaciones internas en CoreServices.

    
respondido por el Chris Cirefice 27.05.2015 - 20:17
fuente
0

De los muchos, muchos artículos, parece que el sistema de mensajes de banner en stock iOS (sin jailbreak) tiene problemas para procesar el Unicode y se bloquea. ¿Cuáles son los problemas internos exactos? Apple no lo ha explicado todavía.

Los teléfonos con jailbreak recurren al 'modo seguro' en lugar de a un problema.

Esto no es un nuevo bug .

    
respondido por el schroeder 27.05.2015 - 19:26
fuente

Lea otras preguntas en las etiquetas