[LACNIC/Seguridad] Vulnerabilidades en la aplicación Samsung SNS Provider para Android [STIC-2014-0511]

Programa STIC stic en fundacionsadosky.org.ar
Vie Mar 13 16:58:43 BRT 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

	Fundación Dr. Manuel Sadosky - Programa STIC Advisory
		www.fundacionsadosky.org.ar

*Vulnerabilidades en la aplicación Samsung SNS Provider para Android*


1. *Información del reporte*

Título: Vulnerabilidades en la aplicación Samsung SNS Provider para
Android
Reporte ID: STIC-2014-0511
Reporte URL: http://www.fundacionsadosky.org.ar/publicaciones-2
Fecha de publicación: 2015-3-11
Fecha de última actualización: 2014-3-11
Fabricantes contactados: Samsung
Modo de publicación: Coordinado


2. *Información de vulnerabilidades*

Clase:  Incorrecta asignación de permiso para recurso crítico [CWE-732]
Impacto: Perdida de datos
Remotamente explotable: No
Localmente explotable: Si
Identificador CVE: N/A


3. *Descripción de vulnerabilidad*

    La aplicación Samsung Social Networking Service Provider (de ahora
en más "SNS Provider") es utilizada para manejar las cuentas de un
usuario en Facebook, Twitter, Google+, Linkedin o Foursquare; y actúa
como un servicio para que otras aplicaciones, como Calendar y
Gallery3D, puedan obtener información del perfil del usuario y su
contenido en esas redes sociales. Viene pre-instalada en varios
dispositivos Samsung. Por ejemplo, el proyecto de Android Census  [1]
identificó un subconjunto de los dispositivos en los que esta
aplicación viene pre-instalada. De acuerdo a estadísticas sobre
aplicaciones de Facebook publicadas por Factets.com [2], la aplicación
SNS Provider, que en Facebook figura bajo el nombre de "Samsung
Galaxy", tenía a 17 de Febrero de 2015, alrededor de 41 millones de
usuarios activos mensuales, 17 millones de usuarios activos semanales
y 5 millones de usuarios activos diarios.

    Cuando un usuario se logea en Facebook o Twitter, "SNS Provider"
inmediatamente le requiere que permita acceso completo a la cuenta del
la red social correspondiente. Si el usuario acepta, la aplicación
obtiene se guarda el token de acceso en un archivo local de tipo
Shared Preference para poder pasárselo a otras aplicaciones instaladas
en el dispositivo que lo pidan. En dispositivos corriendo Android
versión 4.4 o mayor, "SNS Provider" también permite gestionar cuentas
de Google+, LinkedIn y Foursquare.

    "SNS Provider" implementa varios servicios exportados utilizados
para el manejo y la sincronización de las cuentas del usuario en redes
sociales como Facebook y Twitter (más Foursquare y Google+ en
dispositivos más nuevos). Estos servicios no están protegidos por
ningún permiso, lo que posibilita que cualquier aplicación "maliciosa"
instalada en el dispositivo los utilice para obtener directamente
fotos, estados, noticias, ubicación y información de otro tipo de las
cuentas de Facebook o Twitter del usuario, así como para publicar
nuevo contenido en su nombre.

    Otros servicios exportados por "SNS Provider" permiten a una
aplicación instalada en el dispositivo requerir los tokens de acceso a
las cuentas de usuario en Twitter y Facebook. Si bien estos servicios
se encuentran protegidos por permisos propietarios definidos por
Samsung, el nivel de protección no es el adecuado. Debido a esto,
cualquier aplicación puede solicitar permiso para acceder a esos
servicios y, por defecto, el usuario no será notificado explícitamente
del pedido. Mas aún, en la definición de esos permisos propietarios no
se usan etiquetas ni textos descriptivos que expliquen de que se
tratan, de manera tal que incluso se si le requiriera explícitamente,
el usuario no podría discernir que se le esta pidiendo.

    Una aplicación maliciosa que obtenga estos permisos al instalarse,
podría luego conectarse a los servicios protegidos de SNS Provider y
obtener las credenciales (tokens de acceso) acceso permanente a las
cuentas del usuario en redes sociales. Por ejemplo, a partir del token
de acceso de Facebook se puede acceder a los mensajes privados del
usuario.

    En dispositivos con Android 4.3 o menor, la aplicación "SNS
Provider" también incluye componentes proveedores de contenido
(Content Providers) protegidos con permisos declarados como del tipo
"normal", por lo que cualquier aplicación que lo solicite puede leer
contenido almacenado en ellos.


4. *Paquetes vulnerables*

. Dispositivos Samsung con Android 4.1: SNS Provider versión < 1.1.1
. Dispositivos Samsung con Android 4.2: SNS Provider versión < 1.1.6
. Dispositivos Samsung con Android 4.3: SNS Provider versión < 1.2.1
. Dispositivos Samsung con Android 4.4: SNS Provider versión < 1.3.5
. Dispositivos Samsung con Android 5.0: SNS Provider versión < 1.3.5

5. *Información y soluciones del fabricante*

    Samsung deshabilitó el identificador de aplicación (App ID) de
"SNS Provider" en Facebook -donde la app figura como "Samsung Galaxy"-
y Twitter el 17 de Febrero de 2015. Esto protege automáticamente a los
usuarios de cualquier malware que hubiera obtenido, de versiones
vulnerables de SNS Provider, los tokens de accesso a sus cuentas en
redes sociales; pero no protege de aplicaciones que accedan a
contenido de redes sociales ya almacenado en su dispositivo móvil.

    Debido a que se deshabilitaron las versiones viejas de la
aplicación, es posible que los usuarios de dispositivos con versiones
vulnerables de SNS Provider instaladas vean en pantalla notificaciones
con textos como "Try Single Sign On again" o "Facebook/Twitter Session
Expired".

    Se recomienda a los usuarios que actualicen a la última versión de
"SNS Provider" en el mercado Galaxy Apps de Samsung, siguiendo las
pautas publicadas por el proveedor en [3]  y que borren todos los
datos ya almacenados por la aplicación.


6. *Créditos*

Las vulnerabilidades fueron descubiertas e investigadas por Joaquín
Manuel Rinaudo. La publicación de este reporte fue coordinada por
Programa de Seguridad en TIC.

7. *Descripción técnica*

    Todas las versiones de la aplicación "SNS Provider" tienen dos
servicios exportados por los cuales otras aplicaciones pueden acceder
a información o interactuar con las redes sociales de Facebook y
Twitter, llamados 'SnsFbService' and 'SnsTwService' respectivamente.
Estos servicios permiten a una aplicación acceso a información del
usuario (como fotos, estados, eventos, likes, etc en Facebook u
obtener el token de acceso con el servicio relacionado a Twitter) e
incluso publicar contenido en nombre del usuario. Como no están
protegido por ningún permiso, cualquier aplicación puede acceder a ellos.

    Un tercer servicio exportado ('SnsFbServiceForAuthToken' permite a
otras aplicaciones obtener la credencial (token de acceso) usada para
acceder a la cuenta del usuario en Facebook. Este servico esta
protegido con un permiso definido por el fabricante (Samsung) llamado
'com.sec.android.app.sns3.permission.SNS_FB_ACCESS_TOKEN'. En
dispositivos con versión de Android mayor a 4.1 ocurre lo mismo con
Twitter, con un servicio llamado 'SnsTwServiceForAuthToken' protegido
por el permiso
'com.sec.android.app.sns3.permission.SNS_TW_ACCESS_TOKEN'. Estos
permisos fueron definidos con nivel de protección normal [4] por el
fabricante por lo que otras aplicaciones pueden pedirlos.

    Debido a como están definidos, los permisos no se piden
explícitamente al usuario cuando una aplicación los requiere. Al
momento de instalación de una aplicación -potencialmente maliciosa-
que acceda a los servicios protegidos de SNS Provider, la lista de
permisos requeridos presentada al usuario no incluye por defecto los
de SNS Provider. Los permisos solo aparecerán en pantalla si el
usuario toca el botón para ver la lista completa de permisos
requeridos. Incluso en este último caso, los permisos para acceder a
servicios protegidos de SNS Provider aparecerán sin un nombre
específico ("Default") y sin un texto descriptivo claro (la
descripción será simplemente "string resource").

    Para conectarse a estos servicios, un atacante necesitaría conocer
su interfaz. Esto se podría hacer por medio de actividades de
ingeniería inversa de la aplicación  con el propósito de reconstruir
los archivos de formato AIDL de los servicios requeridos. Las interfaz
para comunicarse con el servicio relacionado con Twitter se encuentra
en 'com.sec.android.app.sns3.svc.sp.twitter.api' y el de Facebook en
'com.sec.android.app.sns3.svc.sp.facebook.auth.api'.

    El código fuente y el correspondiente archivo binario formato APK
de una aplicación de prueba de concepto que demuestra como se pueden
explotar los problemas descriptos esta disponible en [5]. La
aplicación SNS-Thief, requiere los permisos propietarios definidos por
Samsung para comunicarse con los servicios protegidos de SNS Provider
y se conecta a los dos servicios exportados de acceso a Facebook (el
protegido por un permiso y el no protegido), al igual que a los
servicios protegidos de Twitter. La interfaz de usuario tiene 3
botones. Cuando se hace toca en el primero, la aplicación obtiene el
token de acceso a la cuenta de Twitter del usuario (si es que SNS
Provider tiene uno ya cargado) utilizando un método exportado vía AIDL
del servicio 'SnsTwServiceForAuthToken'. Este método funciona en
dispositivos corriendo versiones mayores a 1.1.1 de SNS Provider. Si
se toca el segundo botón, la aplicación hace lo mismo con Facebook
utilizando el servicio 'SnsFbServiceForAuthToken'. Finalmente, el
tercer botón llama a uno de los métodos del servicio desprotegido
'SnsFbService' (no es necesario ningún permiso) para publicar en el
muro del usuario con el texto "Hackers o dominados". Este último botón
no debería funcionar más debido a que Samsung deshabilitó la app de
Facebook.

   En dispositivos corriendo Android 4.4 o superior, LinkedIn, Google+
y Foursquare también se pueden conectar a "SNS Provider". Los últimos
dos tienen también servicios exportados y desprotegidos llamados
'SnsGpService' y 'SnsFsService' respectivamente. Sus interfaces pueden
encontrase en 'com.sec.android.app.sns3.svc.sp.googleplus.api' y
'com.sec.android.app.sns3.svc.sp.foursquare.api'. Sin embargo la API
de Google+ sólo permite acceso a contenido público [6] y los
componentes de Foursquare que permiten a la aplicación SNS Provider
manejar la cuenta del usuario se encuentran deshabilitados.

    En dispositivos con versiones de Android 4.3 o menor, la
información guardada en los ContentProviders podría ser exfiltrada por
una aplicación maliciosa que requiera el permiso
'com.sec.android.app.sns3.permission.READ_SNS_DB'[7] y luego haga una
consulta a la base donde se encuentran almacenadas las noticias y
fotos de la red social Facebook. Atacantes además podrían actualizar
la información contenida en estos proveedores enviando una señal de
broadcast tanto a 'SnsFbWidgetUpdatePhotoStreamReceiver' como a
'SnsFbTickerUpdateFeedsReceiver'.


8. *Cronología del reporte*

. 2014-11-20:
Programa de Seguridad en TIC notificó al equipo de seguridad móvil del
fabricante haber descubierto vulnerabilidades en una aplicación
pre-instalada en múltiples dispositivos móviles y pidió la clave
pública PGP del equipo para continuar la comunicación por un canal
cifrado a fín de coordinar el envio de datos técnicos y la publicación
del reporte.


. 2014-11-21:

          El equipo de seguridad móvil de Samsung envío su clave
pública PGP para poder establecer un canal de comunicación cifrado.


. 2014-11-25:
Programa de Seguridad en TIC envió un reporte preliminar acerca de los
problemas de seguridad en la aplicación de Samsung SNS Provider y
notificó que el 2 de diciembre de 2014 era la fecha estimada para la
publicación del reporte.


. 2014-11-26:

          El equipo de seguridad móvil de Samsung pidió de retrasar la
publicación del reporte y pidió una prueba de concepto de código de
explotación (exploit) de los problemas reportados.


. 2014-11-26:
Programa de Seguridad en TIC informó al fabricante que la fecha de
publicación era establecida en caso que el reporte no fuese reconocido
o no hubiese un plan para arreglar el problema. Dado que el fabricante
reconoció el reporte, la publicación sería pospuesta hasta el 16 de
diciembre de 2014. Además, Programa de Seguridad en TIC incluyó un APK
de prueba de concepto que abusaba de los servicios exportados por la
aplicación SNS Provider .


. 2014-11-29:

         El equipo de seguridad móvil de Samsung confirmó el problema
de seguridad y acordó contactarse de vuelta la semana que viene para
determinar la fecha de divulgación.


. 2014-12-02:
Programa de Seguridad en TIC preguntó por los modelos de dispositivos
y versiones de software vulnerables para darle a la población de
usuarios vulnerables información precisa y reiteró que pospuso la
publicación del reporte hasta el 16 de Diciembre.


. 2014-12-12:

         El equipo de seguridad móvil de Samsung comentó que publicar
una actualización de software para arreglar los problemas requeriría
coordinación entre Samsung, redes sociales y proveedores de
telecomunicaciones y solicitó permiso para divulgar a Facebook y
Twitter la identidad de los que encontraron el problema. También pidió
postergar la divulgación hasta la fecha de publicación de la
actualización que estimaban que sería dentro de 6 meses. Se informó
que tardarían en obtener información de los dispositivos y versiones
de software vulnerables.


. 2014-15-15:

          El equipo de seguridad móvil de Samsung pidió confirmar el
mail previo acerca de la fecha de divulgación de la vulnerabilidad.


. 2014-12-15:
Programa de Seguridad en TIC reconoció haber recibido el mail y acepto
posponer la divulgación pero informó al fabricante que los 6 meses
pedidos era demasiado tiempo. Una nueva fecha sería discutida
internamente con el grupo junto con soluciones alternativas.


. 2015-1-2:

           El equipo de seguridad móvil de Samsung concluyó que una
actualización tardaría mucho más de 6 meses debido a la complejidad
del ecosistema Android (Google, Fabricantes de dispositivos,
proveedores de telecomunicaciones) y a problemas en actualizar
software en algunos modelos debido a políticas de la prestadora.


. 2015-1-9:
 reconoció las complicaciones para proveer un parche para una
aplicacion pre-instalada que no dispone de capacidad de
auto-actualizarse. Propuso soluciones alternativas como 1) Informar a
los usuarios para que deshabiliten la aplicación y le saquen los
permisos otorgados en Facebook y Twitter, ó 2) Que Samsung, en virtud
de ser el proveedor de la aplicación, la invalide directamente en
Facebook y Twiter (invalidando su App ID), o 3) Que Samsung use algún
otra aplicación pre-instalada con capacidad de auto-actualización para
distribuir el parche para SNS Provider, requiriendo lso permisos
correspondientes al usuario, o 4) Que Samsung use componentes de su
tecnología de restricción al entorno de ejecución (sandboxing) de
aplicaciones para evitar que otras apps abusen de los servicios
exportados. Programa de Seguridad en TIC informó que posponía la
publicación d l boletín hasta el 17 de Febrero de 2015 para poder
analizar esas y otras alternativas de mitigación de riesgo.


. 2015-1-26:

        El equipo de seguridad móvil de Samsung informó haber hablado
con Facebook y Twitter para solucionar el problema y pidió permiso
para enviarles información acerca de la institución a ellos, además
sugirió que tomaría otro mes aproximadamente para preparar la
invalidación del App ID debido a sus procesos de QA.


. 2015-1-27:
Programa de Seguridad en TIC dió permiso para  informar a Facebook y
Twitter acerca de su identidad y información de contacto y además
solicitó un estimado preciso de la solución para posponer la divulgación.


. 2015-2-4:

          El equipo de seguridad móvil de Samsung informó que la mejor
protección para proteger sus usuarios sería deshabilitar el App ID
utilizado desde el lado del servidor de las redes sociales (Facebook y
Twitter), dado que esta acción instantáneamente protegería a sus
usuarios pero notificó que las posibles consecuencias adversas de esta
acción se estaban probando. Indicó que se esperaba proceder el 13 de
Febrero de 2015 pero que requería 2 semanas adicionales de plazo para
que los departamentos de relaciones públicas de Samsung y de las redes
sociales revisaran los anuncios a hacerse.


. 2014-2-11:
Programa de Seguridad en TIC preguntó por el estado y si las apps de
las redes sociales serían invalidadas el 13 de Febrero.


. 2015-2-11:

          El equipo de seguridad móvil de Samsung notificó que estaban
esperando que el equipo de QA termine las pruebas.


. 2015-2-13:

          El equipo de seguridad móvil de Samsung dijo que esperaba
terminar las pruebas el 17 de Febrero de 2015 e invalidar las
aplicaciones den Facebook y Twitter en ese fecha.


. 2015-2-14:
Programa de Seguridad en TIC reprogramar la publicación para Febrero
19 y hizo un pedido de la declaración oficial para incluir en el reporte.


. 2015-2-16:

          El equipo de seguridad móvil de Samsung solicitó retrasar la
publicación hasta el 10 de Marzo de 2015 dado a las celebraciones de
año nuevo durante el 18~22 de Febrero y la necesidad de monitorear la
experiencia de los usuarios por una semana y permitir al sector de
Relaciones Públicas preparar una declaración para incluir en el reporte.


. 2015-2-26:

          Equipo de seguridad móvil de Samsung informó que una
actualización fue publicada el 17 de Febrero y que el app ID antiguo
de Twitter había sido deshabilitado y que el 20 de Febrero se
restringió la API de Facebook para sincronización. Además pidió un
borrador del reporte.


. 2015-3-3:
 envió el reporte y confirmó las mitigaciones para los app IDs
anteriores de Facebook y Twitter. Dado que el contenido descargado
todavía sería accesible utilizando el content provider, se le
recomendaría a los usuarios actualizar la aplicación o eliminar los
datos y deshabilitarla. Además, se preguntó a Samsung si se habían
implementado arreglos para los servicios de Google+ y Foursquare de
SNS en nuevos dispositivos.


. 2015-3-3:

          Equipo de seguridad móvil de Samsung aseguró que los
componentes de Foursquare estaban deshabilitados en todas las
versiones y que ahora los componentes de Google+ y Foursquare eran
protegidos por permisos de "signatureOrSystem". Además dado que la API
de Google+ tenía restricciones para sólo poder acceder a contenido
público, versiones anteriores no obtendrían información privada desde
el servicio exportado. Aunque la actividad de LinkedIn era lanzada,
SNS o tiene la capacidad para agregar esa cuenta y o almacena ninguno
de esos datos.


. 2015-3-10:
Programa de Seguridad en TIC envió la versión final de este boletín a
Samsung.


. 2015-3-11:

          Samsung respondió con un mail solicitando que se utilice un
único nombre ("SNS Prpvider") para referirse a la aplicación a fin de
evitar confusión. Dijo además que el boletín incorrectamente hacía
referencia a la aplicación "Samsung Galaxy App" que no tiene relación
alguna con SNS PRovider ya que es la aplicación del mercado de apps de
Samsung. Indicó que las estadísticas citadas no era correctas ya que
correspondían al mercado de app y no a SNS Provider. Solicitó que se
corrijan esos errores.


. 2015-3-11:
Programa de Seguridad en TIC contestó que adoptaría la convención
propuesta y utilizaría el nombre "SNS Provider" para todas las
referencias a  la aplicación vulnerable. Aclaró que el "Samsung
Galaxy" es el nombre bajo el cual la aplicación aparece en la sección
de configuración de permisos a aplicaciones de Facebook y que las
estadísticas de Factests.com citadas corresponden a la aplicación de
FB con ese nombre y que las aclaraciones sobre la aplicación de
mercado de apps de Samsung no son pertinentes. Solicitó al fabricante
que ratifique o rectifique lo arriba descripto.



9. *Referencias*

[1]
http://census.tsyrklevich.net/content_providers/com.sec.android.SNS3.sp.facebook
[2] http://www.factets.com/application/samsung-galaxy-dfNWi8eIS
[3] http://www.samsung.com/levant/support/skp/faq/1072595
[4]
http://developer.android.com/guide/topics/manifest/permission-element.html
[5] https://github.com/programa-stic/SNS-thief/
[6] https://developers.google.com/+/api/
[7]
http://census.tsyrklevich.net/permissions/com.sec.android.SNS3.permission.READ_SNS_DB

10. *Acerca Fundación Dr. Manuel Sadosky*

La Fundación Dr. Manuel Sadosky es una institución público privada
cuyo objetivo es favorecer la articulación entre el sistema científico
– tecnológico y la estructura productiva en todo lo referido a la
temática de las Tecnologías de la Información y la Comunicación (TIC).
Creada a través del Decreto Nro. 678/09 del Poder Ejecutivo Nacional,
la Fundación es presidida por el ministro de Ciencia, Tecnología e
Innovación Productiva. Sus vicepresidentes son los presidentes de las
cámaras más importantes del sector TIC: CESSI (Cámara de Empresas de
Software y Servicios Informáticos) y CICOMRA (Cámara de Informática y
Comunicaciones de la República Argentina). Para más información
visitar: http://www.fundacionsadosky.org.ar

11. *Derechos de autor*

El contenido de este reporte tiene copyright (c) 2014 Fundación
Sadosky y se publica bajo la licencia Creative Commons Attribution
Non-Commercial Share-Alike 4.0:
http://creativecommons.org/licenses/by-nc-sa/4.0/
- -- 
Programa de Seguridad en TIC
Fundación Dr. Manuel Sadosky
Av. Córdoba 744 Piso 5 Oficina I
TE/FAX: 4328-5164
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org

iQIcBAEBAgAGBQJVA0FyAAoJEOAj8IJkRx2rTs4P/1XNwW7kn2vwt5vVhvzvUEhl
10wnveSkWHidssdIZekpIqG8wIQVkSVcMvIou667EuoB7sdVG8L5K2Z7ejJRJBwC
AjpAA9x2B6AqWpgFFASUAKUlpHBuZDE3H9I1g8AspWc4bnp1O2rUGPkC0ssZut5o
byQ+/bjmeXVc30ruzpdztNYYo4+xdK7FwNurWWAU5h7Out3xt0ltsMv0e6PsXSZ/
iD4tLUpAdtn540XsBlDEv8rahjex45vZ/WGFha/WO2UmeJ+mzmoFsOnN8kK3A2t2
EuqkMgvV8ummoGQygMNp+MzoUUmk07H2ri3eVGarPt6ftEpnmJRI9n6zaJRgD5XK
HT2oiGoZ91T5mG4OstffXKqPmbIAFV8Labed6IgiqsUhFKUfLNdqGxLNwe3YMySH
b+6YnfIIMxz0Z7fpilPxBsD4RWYCAv4CkNs4KvjACJU7580C46fFXtgNKHflW169
6Q6YuerZ57nPFGx7zV4JdM3qV/TsbBcLY5LRv6hc/CSqzu/uvjAkHVaY21zGg68R
+Trez0A+EItDFwmL2SxXKACOpL0oBqnBep+8BZs2o5bTvSMJpPU/2ulFyLfGL1aF
itmzWmW8S4cAruSn6WYrD+xpc4ZHNal3gNbLVg28kNDLZkZWBLlRl1R+WRKMjxyQ
iatDNEBBqJUithkFu5yl
=wBpC
-----END PGP SIGNATURE-----



Más información sobre la lista de distribución Seguridad