miércoles, 27 de julio de 2011

Apple y el "sandboxing" - poniendo puertas al campo

En una simple línea de una de las transparencias que usó Steve Jobs cuando presentó por primera ver la versión Lion de su exitoso OS X pude leer la palabra "sandboxing" y los pelillos de mi cogote que se erizan cuando noto peligro simplemente saltaron escapando de mi piel.

¿Qué es el "sandboxing" y por qué activó todas mis alarmas?

Sandbox se utiliza en inglés para referirse a esos parterres que hay en los parques infantiles, llenos de tierra, donde puedes dejar al niño tranquilamente para que juegue con sus cosas sin peligro. Pero por mis severas carencias en la lengua de Shakespeare hace tiempo pensaba que "sandbox" era el nombre que se daba al cajón de arena de los gatos, allí donde dejan sus "regalitos". Eso en realidad se llama en inglés litter box, aunque también se puede usar la palabra sandbox para referirse a esto.

¿Conclusión? ¿Es el "sandboxing" un sitio seguro donde dejar a nuestros niños jugando tranquilos como propone Steve Jobs o es el sitio donde poner al gato a cagar que es lo que se me antoja a mí?

La primera vez que tuve contacto con el concepto de "sandboxing" de Apple fué, como todo el mundo, con el iOS en el iPhone. Según esta filosofía, cada aplicación en iOS es propietaria y tiene confinados en su ser los ficheros que puede usar. Esto quiere decir que si cargo un PDF por ejemplo en iBooks (la aplicación de lectura de libros) ese fichero solo es conocido y usado en el teléfono por esa aplicación. No hay forma de usar ese archivo sino es desde la aplicación donde reside, iBooks en este caso.

Si en el iPhone me pareció chocante no me molestó en exceso. Fue al adquirir el iPad, que por su idiosincrasia estaba más pensado para contener archivos, cuando me dí cuenta del molesto invento.

Si cargaba un PDF para leerlo cómodamente en el iPad en iBooks pero luego si quería accederlo desde GoodReader para subrayar algo... Oops sorpresa, gracias o por culpa del "sandboxing" no podía acceder al archivo desde esa aplicación.

Para hacer más funcional el iOS en este aspecto, los chicos de Cupertino parieron un API que implementaba la facilidad "Open with" o "Open in" de modo que en un programa podíamos indicar un archivo de su sandbox y decir con que aplicación queríamos abrirlo. Pero sorpresa número dos, lo que hacía esta opción era copiar el archivo desde el sandbox del programa A al del programa B con lo que al final te encontrabas con dos copias del archivo en el iPad.

En ocasiones en el día a día con mi iPad en un entorno laboral me he encontrado con hasta tres copias de un fichero. ¿Cual es la buena? En un artículo anterior comenté como vivir sin iTunes y como minimizar el impacto del "sandboxing" usando GoodReader y Dropbox, pero esto no son más que parches.

En serio que si queremos usar el iPad (o el iPhone) para algo serio el "sandboxing" nos terminará pareciendo más un sitio para que el gato haga caca que un sitio para que nuestros niños jueguen seguros.

Y llegamos a ese nefasto día donde ví la palabra "sandboxing" en la presentación del amigo Jobs.

Imaginen que en su Mac el Acrobat Reader es propietario de sus archivos PDF y no puede abrirlos sino es copiándolos a otra aplicación.

En una excelente revisión que hizo Ars Technica sobre OS X Lion y que ya recomendé (este artículo) nos cuentan en profundidad como funcionaría el "sandboxing" en Mac OS X Lion.

Básicamente el funcionamiento sería el mismo que con iOS. Cada aplicación sería propietaria de los archivos que usa. La realidad es que desde Snow Leopard muchos de los procesos del kernel funcionan en modo "snadboxing" y nadie se quejó, pero una cosa es el kernel, que pocos vemos y otra bien distinta una aplicación de usuario.

El motivo por el que Apple fomenta el "sandboxing" en Mac OS X es para, según ellos, mejorar la seguridad. Si una aplicación es propietaria de sus archivos, y estos se ven comprometidos, pueden llegar a dañar la aplicación, pero no podrán salir de ella y dañar el sistema. Se pone como ejemplo los problemas por buffer overflow de los archivos PDF que permiten ejecutar código arbitrario. Un PDF de estas características al estar encerrado en la aplicación ejecutaría código solo con las autorizaciones de la aplicación y por tanto solo dañaría a la aplicación y a otros archivos controlados por ella, pero no a todo el sistema.

Pero claro, esta forma de trabajar en un PC de sobremesa es inviable. Puede ser tolerada (quien lo tolere, no yo) en un equipo de movilidad y de uso reducido, pero no en un PC. Por ello Apple ha establecido un mecanismo que supone abrir un pequeño agujero en esa caja de arena para que otras aplicaciones puedan usar esos archivos.

Lo que hace Apple es que cada aplicación registre como servicios para otras el abrir esos archivos. Si su programa B quiere usar un archivo en el "sandboxing" del programa A, podrá hacerlo gracias a que A publica servicios sobre ese archivo para que puedan ser usados por B, pero en definitiva el archivo sigue siendo abierto solo por A y es propiedad de A.


¿Lioso? Lo es. En el artículo de Ars Technica lo explican mejor pero en inglés. Hay un proceso en el Lion llamado Powerbox que es el que se encarga de gestionar las peticiones de apertura y salvado de archivos en nombre de las aplicaciones con "sandboxing". Cuando el usuario elige el sitio donde va a grabar el fichero, Powerbox abre un agujero en el sandboxing de la aplicación propietaria del archivo para proceder a realizar la acción.

Además Apple ha copiado las autorizaciones de Android/Honeycomb. Cada aplicación puede registrar varios de los 30 permisos que se definen en Lion de modo que cuando instalamos la aplicación autorizamos a que por ejemplo pueda acceder a una red, o ver los contactos, o cualquier otra acción.

Si es usuario de Android y se baja apliaciones del Market estará acostumbrado a que le muestren las autorizaciones que le concede a la aplicación.

Para terminarlo de rematar Lion exige que las aplicaciones con "sandboxing" vengan firmadas. ¿Averiguan donde lo exige? Si, en la Mac App Store. Si usted desarrollador quiere hacer una aplicación Mac y distribuirla por la Mac App Store deberá hacerla en "sandboxing" y firmarla.

¿Cuanto tardará Apple en que solo se puedan instalar aplicaciones con "sandboxing" y firmadas en el Mac? ¿En la siguiente versión? De verdad ve correcto que en nombre de la seguridad usted no pueda instalar lo que le de la gana en su Mac. Si la respuesta es afirmativa seguramente es usted uno de los pocos que están felices con tenerse que literalmente despelotarse para pasar el control de un aeropuerto antes de subir al avión. Pero a mi me revienta lo uno y lo otro. Mi PC es mio y asumo los riesgos que desee pero quiero poder usar programas que me baje de Internet sin que intervenga en ello Apple y su "negocio" de cobrar al desarrollador el 30% de sus ganancias.

¿De verdad esto es necesario para mejorar la seguridad de los equipos? Windows 7 hoy por hoy es un sistema infinitamente más seguro que lo que era XP, y no ha necesitado de estos artificios. ¿Y Linux?

No, digan que es por seguridad o no la realidad es que Jobs quiere controlar el desarrollo en "sus" máquinas. ¿Sus? ¿No pagué casi 800 euros por mi iPad2? ¿No pagué más de 1000 euros por mi iMac?

Ya estoy usando en el día a día un Samsung Galaxy S2 en vez del iPhone4 y uno de los motivos de más peso es el "sandboxing"; ya estoy mirando cual será el tablet Honeycomb que sustituirá a mi iPad2 y en este caso el principal motivo es el "sandboxing". ¿Me veré en la necesidad de buscar un sistema operativo alternativo para sustituir a mi hasta ahora amado OS X? ¿Ubuntu? Es posible.

Para más información y si saben inglés lean esto.

Querido Jobs tus usuarios, por mucho que te guste pensarlo, no somos niños así que no nos vendas el "sandboxing" como un sitio tranquilo y apacible donde quedarnos sentaditos haciendo castillitos de arena. Creo que mi gato prefiere hacer sus necesidades en esa arena.

8 comentarios:

Fco Morant dijo...

Estos enfados pasan, por que nadie analiza que tipo de usuario es y para que va a necesitar o usar sus aparatos antes de comprarlo.

MatterHorn dijo...

Es curioso esta implementación del concepto del "sandbox" que cuentas, ya que no corresponde con lo que yo conocía al respecto en otros entornos, como Java, por ejemplo, que desde siempre ha hecho uso del concepto de "sandbox". Lo que pasa es que en Java, y en algunos sistemas operativos, el sandbox afecta a los procesos, no a los sistemas de ficheros. Si mal no recuerdo, la idea, en el caso de Java, es que a cada proceso (o aplicación), se le ofrece un entorno seguro para su ejecución (de ahí lo de sandbox), de manera que la aplicación se ejecuta, o al menos así lo ve ella, en un ordenador entero para ella. De esta manera, si se produce un fallo, bien por error en la aplicación o bien como consecuencia de un código malicioso, ese fallo no afectaría al resto de procesos en ejecución y no debería poder colgar en un momento dado el ordenador entero.
Lo que cuentas de cómo implementa Apple el sandbox en iOS desde luego suena mucho más a control de los datos que manejas, algo muy en línea con el ferreo control que ponen tanto a las aplicaciones que se ejecutan en su iOS, como a la dificultad de compartir datos entre usuarios (nada de intentar pasarse una canción por Bluetooth, por ejemplo).
De esta manera, a mí no me gusta ni un pelo la seguridad de su sandbox. Seguiré usando Windows 7 en el ordenador familiar (más que nada para que los peques puedan jugar si así lo quieren) y mi Ubuntu en mi portátil.
Un saludo.

Javier Fernandez dijo...

Al comprar el iPad yo era perfectamente consciente del problema y me adapté a él. Mi enfado viene porque este cambio en OS X es a peor y por motivos falsos; no es por mi seguridad, es por su afán de controlar el desarrollo.

No niego que haya mucho desinformado por ahí, pero ese no es uno de mis pecados.

Javier Fernandez dijo...

MatterHorn, ese sandbox del que hablas en java es el que usan en los procesos de kernell de SnowLeopard y posteriores. No hay problema con eso, pero coincidimos que el sandbox con archivos es injustificable.

MatterHorn dijo...

Mahjong, el sandbox a nivel de ficheros de datos (el que describes en iOS y parece que ahora quieren llevar a Mac OS X) me parece injustificable del todo.
Hasta ahora, lo único que me parecía medianamente configurable de Apple (no voy a decir abierto, pero sí configurable) era precisamente Mac OS X, que al fin y al cabo te permite instalar cualquier aplicación que hayas podido localizar a tu gusto o que tus habilidades te hayan permitido desarrollar. Si ahora las aplic. van a tener que estar firmadas, el siguiente paso es que para desarrollar para Mac OS X haya que pasar por caja al igual que ahora mismo ya se hace para programar para iOS (si mal no recuerdo 99$ al año).

Raul Montero dijo...

Ya se que no es partidario del jailbreak y que le gusta usar los aparatos tal y como los concibe el fabricante, pero en el caso del "sandbox" en el iPad todo se resuelve con jailbreak+iFile; vamos que solucion existe.

Javier Fernandez dijo...

Como tú mismo indicas no hago jailbreak. tengo muy buenas referencias de esa solución de jailbreak más iFile en cualquier caso.

Unknown dijo...

He caído por aquí intentando entender qué es el sandboxig (a cuento de las quejas del desarrollador de BetterTouchTool) y he acabado agregando el blog a mi lista de lectura habitual.

Gracias por compartir inquietudes y recursos (como la entrada más reciente del turismo por Londres).

Un saludo :)