Académique Documents
Professionnel Documents
Culture Documents
6-6-2018
¿Qué es OWASP?
En el año 2001 se creó la fundación OWASP (Open Web Application Security Project), cuyo
objetivo es descubrir y evitar las causas por las que un software es inseguro. Es una organización
sin ánimo de lucro formada por empresas y organizaciones de todo el mundo. Su tarea es la de
trabajar juntos para crear documentos, artículos y herramientas de uso público para combatir las
vulnerabilidades en el mundo del software.
Al ser una empresa sin ánimo de lucro, su financiación depende básicamente de aportaciones de
la Comunidad y sus donaciones. Actualmente es el referente en el mundo de la seguridad web a
hora de tomar decisiones para hacer las aplicaciones web más seguras.
OWASP (Open Web Application Security Project) nos provee de una serie de recursos basados
sobre todo en guías y herramientas para que nuestros proyectos web sean lo más seguros posibles,
tanto desde el punto de vista de desarrollo seguro como de la evaluación de la seguridad de éstos.
Para los desarrolladores ofrece una gran cantidad de recursos para ayudar a llevar a cabo un ciclo
de vida de desarrollo de software seguro (S-SDLC, Secure Software Development Life Cycle).
Para los auditores de seguridad ofrece una gran cantidad de recursos como guías y herramientas
para evaluar la seguridad de las aplicaciones móviles.
HERRAMIENTA OWASP MOBILE
6-6-2018
Top 10 Mobile Risks: Tal y como podemos encontrar con el Top 10 de riesgos en
aplicaciones web, también tenemos este recurso disponible en el proyecto MSP.
Developer Cheat Sheet: Consejos para el desarrollador para evitar errores que puedan dar
lugar a vulnerabilidades en su aplicación.
App Security Testing Cheat Sheet: Una “chuleta” para el auditor con información
interesante para llevar a cabo la evaluación de la seguridad de la aplicación.
Secure Mobile Development: Recurso para el desarrollador que le ayudará durante el
ciclo de desarrollo de software seguro (S-SDLC).
Security Tesing Guide: Similar a la Testing Guide para aplicaciones web, también
podemos encontrar una guía de test para ayudar al auditor durante sus tareas de
evaluación de los controles de seguridad de la aplicación.
Tools: OWASP nos propone un arsenal de herramientas que nos ayudarán tanto para el
desarrollo seguro así como para testear los distintos controles de seguridad. Disponibles
para las diferentes plataformas (Android, iOS o Windows Phone).
Top 10 Mobile Controls: Definidos conjuntamente por la ENISA y OWASP, nos indica el
top 10 de los controles de seguridad a evaluar.
Aplicación /
Aplicación Explotabilidad Prevalencia Detectabilidad Impacto
específico del
específica FÁCIL COMÚN PROMEDIO SEVERO
negocio
La característica definitoria de los riesgos en esta categoría es que la plataforma (iOS, Android,
Windows Phone, etc.) proporciona una característica o una capacidad que está documentada y
bien entendida. La aplicación no puede usar esa capacidad o la usa incorrectamente. Esto difiere
de otros 10 principales riesgos móviles porque el diseño y la implementación no son estrictamente
el problema del desarrollador de la aplicación.
Hay varias formas en que las aplicaciones móviles pueden experimentar este riesgo.
1. Violación de las pautas publicadas. Todas las plataformas tienen pautas de desarrollo
para la seguridad (cf, ((Android)), ((iOS)), ((Windows Phone))). Si una aplicación contradice
las mejores prácticas recomendadas por el fabricante, estará expuesta a este riesgo. Por
ejemplo, hay pautas sobre cómo usar iOS Keychain o cómo proteger los servicios
exportados en Android. Las aplicaciones que no sigan estas pautas experimentarán este
riesgo.
2. Violación de la convención o práctica común. No todas las mejores prácticas están
codificadas en la guía del fabricante. En algunos casos, existen las mejores prácticas de
facto que son comunes en las aplicaciones móviles.
3. Uso indebido involuntario. Algunas aplicaciones tienen la intención de hacer lo correcto,
pero en realidad obtienen una parte de la implementación incorrecta. Esto podría ser un
error simple, como configurar el indicador incorrecto en una llamada API, o podría ser un
malentendido sobre cómo funcionan las protecciones.
Las fallas en los modelos de permiso de la plataforma caen en esta categoría. Por ejemplo, si la
aplicación solicita demasiados permisos o los permisos incorrectos, es mejor categorizarlos aquí.
Las prácticas seguras de codificación y configuración se deben utilizar en el lado del servidor de la
aplicación móvil. Para obtener información específica sobre vulnerabilidades, consulte los
proyectos OWASP Web Top Ten o Cloud Top Ten.
obtenido un físicamente el suponen que los usuarios mejor de los nto de datos
dispositivo móvil dispositivo móvil, o el malware no tendrán casos para un inseguros
perdido / el adversario acceso al sistema de usuario y, en el generalmente
robado; malware u conecta el archivos de un dispositivo peor de los conducen a
otra aplicación dispositivo móvil móvil y a la información casos, para los siguientes
reempaquetada a una sensible subsiguiente en muchos riesgos
que actúe en computadora con las tiendas de datos en el usuarios. Tamb comerciales
nombre del software dispositivo. Los sistemas ién puede para la
adversario y se disponible de archivos son de fácil provocar los organización
ejecute en el libremente. Estas acceso. Las siguientes propietaria de
dispositivo móvil. herramientas le organizaciones deben impactos la aplicación
permiten al esperar que un usuario o técnicos: de riesgo:
adversario ver malware malicioso extracción de
todos los inspeccione los almacenes la información El robo de
directorios de de datos sensible de la identidad
aplicaciones de confidenciales. Se debe aplicación a Fraude
terceros que a evitar el uso de bibliotecas través de Daño de
menudo de cifrado malware móvil, reputación
contienen deficientes. Rootear o aplicaciones Violación
información jailbreaking un dispositivo modificadas o de política
personal móvil evita cualquier herramientas externa
identificable (PII) protección de forenses. (PCI); o
almacenada u cifrado. Cuando los datos
La naturaleza Pérdida
otros activos de no están protegidos de m
del impacto del
información adecuadamente, las negocio
confidencial. Un herramientas depende en
adversario puede especializadas son todo lo gran medida
construir que se necesita para ver de la
malware o los datos de la aplicación. naturaleza de
modificar una la información
aplicación robada. Los
legítima para datos
robar dichos inseguros
activos de pueden
información. generar los
siguientes
impactos
comerciales:
El robo de
identidad;
Violación
de la
privacidad;
Fraude;
HERRAMIENTA OWASP MOBILE
6-6-2018
Daño a la
reputación;
Violación
de política
externa
(PCI); o
Pérdida de
material
El sistema operativo;
Marcos;
Entorno del compilador;
Nuevo hardware
Dispositivos rooteados o Jailbreak
Esto es obviamente sin el conocimiento de un desarrollador. En el desarrollo móvil
específicamente, esto se ve más en procesos internos no documentados o poco documentados,
como:
móvil, los una red para durante la autenticación pero no usuario confidenciales a
datos se rangos de en otro lugar. Esta incoherencia individual y través de un
intercambia comunicacion conduce al riesgo de exponer los puede canal de
n es datos y las identificaciones de conducir al comunicación
habitualmen inseguras. Mo sesión a la interceptación. El uso robo de la dará lugar a una
te de forma nitorear el de la seguridad del transporte no cuenta. Si el violación de la
cliente- tráfico a significa que la aplicación lo haya adversario privacidad.
servidor. Cu través de la implementado intercepta una La violación de la
ando la red de un correctamente. Para detectar cuenta de confidencialidad
solución operador es fallas básicas, observe el tráfico administrador, del usuario puede
transmite más difícil que de red del teléfono. Los defectos todo el sitio
resultar en:
sus datos, monitorear el más sutiles requieren podría estar
debe tráfico de una inspeccionar el diseño de la expuesto. La
El robo de
atravesar la cafetería aplicación y la configuración de mala
identidad;
red de local. En las aplicaciones. configuración
Fraude, o
operadores general, los de SSL
Daño r
del ataques también
dispositivo dirigidos son puede facilitar
móvil e más fáciles de ataques de
Internet.Los realizar. phishing y
agentes de MITM.
amenazas
podrían
explotar
vulnerabilid
ades para
interceptar
datos
confidencial
es mientras
viaja a
través del
cable. Los
siguientes
agentes de
amenaza
existen:
Un
adversar
io que
compart
e su red
local
(Wi-Fi
compro
metido o
HERRAMIENTA OWASP MOBILE
6-6-2018
monitore
ado);
Dispositi
vos de
portador
a o de
red
(enrutad
ores,
torres de
telefonía
móvil,
proxy,
etc.); o
Malware
en su
dispositi
vo móvil.
¿Soy vulnerable a la "comunicación insegura"?
Este riesgo cubre todos los aspectos de obtener datos del punto A al punto B, pero hacerlo
inseguramente. Incluye comunicaciones entre dispositivos móviles, comunicaciones de aplicación
a servidor o comunicaciones entre dispositivos móviles. Este riesgo incluye todas las tecnologías
de comunicación que un dispositivo móvil podría usar: TCP / IP, WiFi, Bluetooth / Bluetooth-LE,
NFC, audio, infrarrojos, GSM, 3G, SMS, etc.
Todos los problemas de comunicaciones TLS van aquí. Todos los problemas de NFC, Bluetooth y
WiFi van aquí.
Las características destacadas incluyen empaquetar algún tipo de datos confidenciales y
transmitirlo dentro o fuera del dispositivo. Algunos ejemplos de datos confidenciales incluyen
claves de cifrado, contraseñas, información privada del usuario, detalles de la cuenta, tokens de
sesión, documentos, metadatos y binarios. Los datos confidenciales pueden llegar al dispositivo
desde un servidor, pueden ir de una aplicación a un servidor o pueden ir entre el dispositivo y otra
cosa local (por ejemplo, un terminal NFC o una tarjeta NFC). La característica definitoria de este
riesgo es la existencia de dos dispositivos y algunos datos que pasan entre ellos.
Si los datos se almacenan localmente en el dispositivo, eso es #Insecure Data. Si los detalles de
la sesión se comunican de forma segura (por ejemplo, a través de una fuerte conexión TLS) pero
el identificador de sesión mismo es malo (tal vez es predecible, baja entropía, etc.), entonces se
trata de un problema de Autenticación no segura, no de comunicación.
Los riesgos habituales de la comunicación insegura son la integridad de los datos, la
confidencialidad de los datos y la integridad del origen. Si los datos pueden cambiarse durante el
tránsito, sin que el cambio sea detectable (por ejemplo, a través de un ataque de hombre en el
medio), ese es un buen ejemplo de este riesgo. Si los datos confidenciales pueden ser expuestos,
aprendidos o derivados observando las comunicaciones tal como suceden (es decir, escuchando)
o grabando la conversación como sucede y atacándola más tarde (ataque fuera de línea), ese
también es un problema de comunicación inseguro. Fallar en configurar y validar correctamente
HERRAMIENTA OWASP MOBILE
6-6-2018
una conexión TLS (por ejemplo, comprobación de certificados, cifras débiles, otros problemas de
configuración de TLS) está aquí en una comunicación insegura.
Cuando use CFNetwork, considere usar la API de transporte seguro para designar certificados
de clientes de confianza. En casi todas las situaciones, NSStreamSocketSecurityLevelTLSv1
se debe usar para mayor nivel de cifrado estándar.
Después del desarrollo, asegúrese de que todas las llamadas NSURL (o envoltorios de
NSURL) no permitan certificados autofirmados o no válidos, como el método de clase NSURL
setAllowsAnyHTTPSCertificate.
Considere el uso de fijación de certificados haciendo lo siguiente: exporte su certificado,
inclúyalo en su paquete de aplicaciones y fíjelo a su objeto de confianza. Usando la conexión
del método NSURL: willSendRequestForAuthenticationChallenge: ahora aceptará su
certificado.
Mejores prácticas específicas de Android
Elimine todo el código después del ciclo de desarrollo que pueda permitir que la aplicación
acepte todos los certificados, como org.apache.http.conn.ssl.AllowAllHostnameVerifier o
SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER. Estos son equivalentes a confiar en
todos los certificados.
Si utiliza una clase que amplíe SSLSocketFactory, asegúrese de que el método
checkServerTrusted esté implementado correctamente para que el certificado del servidor esté
correctamente verificado.
M4 - Autenticación no segura. Esta categoría capta nociones de autenticación del usuario final o
gestión de sesión incorrecta. Esto puede incluir:
autenticación sin
conexión. Este requisito
fuera de línea puede
tener profundas
ramificaciones en cosas
que los desarrolladores
deben considerar al
implementar la
autenticación móvil.
Para detectar esquemas
de autenticación
deficientes, los
probadores pueden
realizar ataques binarios
contra la aplicación móvil
mientras está en modo
'fuera de línea'. A través
del ataque, el probador
forzará a la aplicación a
omitir la autenticación
fuera de línea y luego
ejecutará la funcionalidad
que debería requerir
autenticación fuera de
línea (para más
información sobre
ataques binarios, vea
M10). Además, los
probadores deberían
intentar ejecutar
cualquier funcionalidad
de servidor back-end de
forma anónima mediante
la eliminación de
cualquier token de sesión
de cualquier solicitud
POST / GET para la
funcionalidad de la
aplicación móvil.
¿Soy vulnerable a la "autenticación insegura"?
Hay muchas formas diferentes en que una aplicación móvil puede sufrir una autenticación
insegura:
Si la aplicación móvil puede ejecutar anónimamente una solicitud de servicio API de back-end
sin proporcionar un token de acceso, esta aplicación adolece de una autenticación insegura;
HERRAMIENTA OWASP MOBILE
6-6-2018
Si transfiere una aplicación web a su equivalente móvil, los requisitos de autenticación de las
aplicaciones móviles deben coincidir con los del componente de la aplicación web. Por lo tanto,
no debería ser posible autenticarse con menos factores de autenticación que el navegador
web;
Siempre que sea posible, asegúrese de que todas las solicitudes de autenticación se realicen
en el servidor. Tras la autenticación exitosa, los datos de la aplicación se cargarán en el
dispositivo móvil. Esto asegurará que los datos de la aplicación solo estarán disponibles
después de la autenticación exitosa;
Si se requiere el almacenamiento de datos del lado del cliente, los datos deberán cifrarse
utilizando una clave de cifrado que se deriva de forma segura de las credenciales de inicio de
sesión del usuario. Esto asegurará que los datos almacenados de la aplicación solo serán
accesibles al ingresar exitosamente las credenciales correctas. Existen riesgos adicionales de
que los datos se descifrarán a través de ataques binarios. Consulte M9 para obtener
orientación adicional sobre la prevención de ataques binarios que conducen al robo de datos
locales;
Idealmente, las aplicaciones móviles deberían utilizar un token de autenticación específico del
dispositivo que el usuario puede revocar dentro de la aplicación móvil. Esto asegurará que la
aplicación pueda mitigar el acceso no autorizado desde un dispositivo robado / perdido;
No use ningún valor spoof-able para autenticar a un usuario. Esto incluye identificadores de
dispositivos o geolocalización;
HERRAMIENTA OWASP MOBILE
6-6-2018
La autenticación persistente dentro de las aplicaciones móviles debe implementarse como opt-
in y no habilitarse por defecto;
Si es posible, no permita que los usuarios proporcionen números PIN de 4 dígitos para las
contraseñas de autenticación.
Reforzar la autenticación
Los desarrolladores deben asumir toda la autorización del lado del cliente y los usuarios
malintencionados pueden pasar por alto los controles de autenticación. Los controles de
autorización y autenticación deben volver a aplicarse en el lado del servidor siempre que sea
posible.
Debido a los requisitos de uso fuera de línea, es posible que se requiera que las aplicaciones
móviles realicen comprobaciones locales de autenticación o autorización dentro del código de
la aplicación móvil. Si este es el caso, los desarrolladores deben instrumentar comprobaciones
de integridad local dentro de su código para detectar cualquier cambio de código no
autorizado. Consulte M9 para obtener más información sobre cómo detectar y reaccionar ante
ataques binarios.
Incluir las claves en el mismo directorio legible por el atacante que el contenido encriptado;
HERRAMIENTA OWASP MOBILE
6-6-2018
RC2
MD4
MD5
SHA1
¿Cómo evito la "criptografía insuficiente"?
Lo mejor es hacer lo siguiente al manejar datos confidenciales:
Los agentes de Una vez que el Para probar esquemas de El impacto En el caso de
amenazas que adversario autorización deficientes, técnico de una que un usuario
explotan las comprende cómo el los probadores pueden autorización (anónimo o
vulnerabilidades esquema de realizar ataques binarios deficiente es verificado) pueda
de autorización autorización es contra la aplicación móvil de naturaleza ejecutar una
suelen hacerlo a vulnerable, inicia e intentar ejecutar similar al funcionalidad
través de sesión en la funciones privilegiadas impacto con exceso de
ataques aplicación como un que solo deberían ser técnico de la privilegios, la
automatizados usuario ejecutables con un usuario autenticación empresa puede
que utilizan legítimo. Pasaron de mayor privilegio deficiente. El experimentar los
herramientas con éxito el control mientras la aplicación impacto siguientes
disponibles o de móvil está en modo 'fuera técnico puede impactos:
personalizadas. autenticación. Una de línea' (para obtener ser de gran
vez que se ha más información sobre alcance en Daño
pasado la ataques binarios, ver M9 y naturaleza y reputacional;
autenticación, por M10). Además, los depende de la Fraude; o
lo general, fuerzan probadores deberían naturaleza de Robo de
la búsqueda a un intentar ejecutar cualquier la información
punto vulnerable funcionalidad privilegiada funcionalidad
para ejecutar la usando un token de sesión sobreexcitada
funcionalidad de bajo privilegio dentro que se
administrativa. Este de las correspondientes ejecuta. Por
proceso de envío solicitudes POST / GET ejemplo, la
generalmente se para la funcionalidad ejecución con
realiza a través de sensible al servidor privilegios
malware móvil backend. Los esquemas excesivos de
dentro del de autorización escasos o la
dispositivo o faltantes permiten a un funcionalidad
botnets propiedad adversario ejecutar de
del atacante. funcionalidades a las que administración
no deberían tener remota o local
derecho. a usar un usuario puede
autenticado pero con provocar la
privilegios inferiores de la destrucción de
aplicación móvil. Los sistemas o el
requisitos de autorización acceso a
son más vulnerables al información
tomar decisiones de confidencial.
autorización dentro del
dispositivo móvil en lugar
de a través de un servidor
remoto.
¿Soy vulnerable a la "autorización insegura"?
Es importante reconocer la diferencia entre autenticación y autorización. Autenticación es el acto
de identificar a un individuo. La autorización es el acto de verificar que la persona identificada
tenga los permisos necesarios para realizar el acto. Los dos están estrechamente relacionados ya
HERRAMIENTA OWASP MOBILE
6-6-2018
Verifique los roles y permisos del usuario autenticado usando solo la información contenida en
los sistemas back-end. Evite confiar en cualquier rol o información de permiso que provenga
del dispositivo móvil en sí mismo;
El código de back-end debe verificar de forma independiente que los identificadores entrantes
asociados con una solicitud (operandos de una operación solicitada) que aparezcan junto con
la identificación coincidan y pertenezcan a la identidad entrante
o M7 - Calidad del código cliente. Esta fue la "Decisiones de seguridad a través de insumos
no confiables", una de nuestras categorías menos utilizadas. Esta sería la solución para los
problemas de implementación a nivel de código en el cliente móvil. Eso es distinto de los
errores de codificación del lado del servidor. Esto capturaría cosas como desbordamientos de
búfer, vulnerabilidades de cadena de formato y varios otros errores de nivel de código donde la
solución es reescribir algún código que se ejecuta en el dispositivo móvil.
Aplicación /
Aplicación Explotabilidad Prevalencia Detectabilidad Impacto
específico del
específica DIFICIL COMÚN DIFÍCIL MODERADO
negocio
Los Agentes de Un atacante Los problemas de calidad La mayoría de El impacto
amenaza típicamente del código son bastante las explotaciones comercial de
incluyen explotará las frecuentes en la mayoría que entran en esta categoría
entidades que vulnerabilidades de los códigos móviles. La esta categoría de
pueden pasar en esta buena noticia es que la dan como vulnerabilidades
entradas no categoría mayoría de los problemas resultado la varía mucho,
confiables a mediante el de calidad del código son ejecución de dependiendo de
llamadas de suministro de bastante benignos y dan código extraño o la naturaleza del
método entradas como resultado una mala la denegación de exploit. Los
realizadas dentro cuidadosamente práctica de servicio en los problemas de
del código diseñadas a la programación. Por lo puntos finales calidad de
móvil. Este tipo víctima. Estas general, es difícil detectar del servidor código deficiente
de problemas no entradas se este tipo de problemas remoto (y no en que dan como
son pasan al código mediante la revisión el dispositivo resultado la
necesariamente que reside manual del código. En móvil en sí). Sin ejecución
problemas de dentro del cambio, los atacantes embargo, en remota de
seguridad en sí dispositivo móvil utilizarán herramientas de caso de que código podrían
mismos, sino donde se lleva a terceros que realizan existan generar los
que generan cabo la análisis estáticos o desbordamientos siguientes
vulnerabilidades explotación. Los realizan fuzzing. Este tipo / impactos
de tipos típicos de de herramientas desbordamientos comerciales:
seguridad. Por ataques típicamente identificará del búfer dentro
ejemplo, los explotarán fugas fugas de memoria, del dispositivo Robo de
desbordamientos de memoria y desbordamientos de búfer móvil y la información;
de búfer en las desbordamientos y otros problemas menos entrada se Daño
versiones de búfer. graves que dan como puede derivar de reputacional;
anteriores de resultado una mala un tercero Robo de
Safari (una práctica de externo, esto Propiedad
vulnerabilidad de programación. Los piratas podría tener un Intelectual
calidad de informáticos con un nivel impacto técnico
código extremadamente bajo de gravemente alto Otros problemas
deficiente) conocimiento y y debería técnicos menos
provocaron experiencia son capaces remediarse. graves que
ataques de explotar con eficacia entran en esta
Jailbreak de alto este tipo de problemas. El categoría
riesgo y paso a objetivo principal típico es pueden provocar
paso. Los ejecutar código extraño degradaciones
problemas dentro del espacio de en el
deficientes en la direcciones del código rendimiento, el
calidad del móvil. uso de memoria
código suelen o una
explotarse a arquitectura de
través de estafas front-end pobre.
HERRAMIENTA OWASP MOBILE
6-6-2018
de malware o
phishing.
¿Soy vulnerable a la "calidad de código deficiente"?
Esta es la solución general para los problemas de implementación a nivel de código en el cliente
móvil. Eso es distinto de los errores de codificación del lado del servidor. Esto captura los riesgos
que provienen de vulnerabilidades como desbordamientos de búfer, vulnerabilidades de cadena
de formato y varios otros errores de nivel de código donde la solución es reescribir algún código
que se ejecuta en el dispositivo móvil.
Esto es distinto del uso inadecuado de la plataforma porque generalmente se refiere al lenguaje
de programación en sí (p. Ej., Java, Swift, Objective C, JavaScript). Un desbordamiento de búfer
en C o un XSS basado en DOM en una aplicación móvil Webview sería problemas de calidad del
código.
La característica clave de este riesgo es que se trata de un código que se ejecuta en el dispositivo
móvil y el código debe cambiarse de manera bastante localizada. La reparación de la mayoría de
los riesgos requiere cambios de código, pero en el caso de la calidad del código, el riesgo
proviene de usar la API incorrecta, utilizar una API de forma insegura, usar construcciones de
lenguaje inseguro o algún otro problema de nivel de código. Es importante destacar que no se
trata de un código que se ejecuta en el servidor. Este es un riesgo que captura el código incorrecto
que se ejecuta en el dispositivo móvil.
¿Cómo evito la 'mala calidad del código'?
En general, los problemas de calidad del código pueden evitarse haciendo lo siguiente:
Aplicación /
Aplicación Explotabilidad Prevalencia Detectabilidad Impacto
específico del
específica FÁCIL COMÚN PROMEDIO SEVERO
negocio
Normalmente, Normalmente, Las formas modificadas de El impacto de laEl impacto
un atacante un atacante las aplicaciones son modificación delcomercial de la
aprovechará hará lo sorprendentemente más código puede modificación del
la siguiente para comunes de lo que ser de amplio código
modificación explotar esta piensas.Existe toda una alcance, generalmente
del código a categoría: industria de seguridad creada dependiendo de resulta en lo
través de para detectar y eliminar la naturaleza desiguiente:
formas Realice versiones no autorizadas de la modificación
maliciosas de cambios aplicaciones móviles dentro en sí misma.Los Pérdida de
las binarios de las tiendas de tipos típicos de ingresos
aplicaciones directos en aplicaciones. Dependiendo impactos debido a la
alojadas en el binario del enfoque adoptado para incluyen los piratería; o
tiendas de del núcleo resolver el problema de la siguientes: Daño
aplicaciones de la detección de modificación de reputacional
de terceros. El aplicación código, las organizaciones Nuevas
atacante Realice pueden tener formas limitadas funciones no
también cambios a altamente exitosas de autorizadas;
puede binarios detectar versiones no El robo de
engañar al directos a autorizadas de código en la identidad; o
usuario para los naturaleza. Fraude.
que instale la recursos Esta categoría cubre el
aplicación a dentro del parche binario, la
través de paquete del modificación de recursos
ataques de aplicativo locales, el enganche de
phishing. Redirige o métodos, el swizzling de
reemplaza métodos y la modificación de
las API del memoria dinámica.
sistema
para Una vez que la aplicación se
interceptar entrega al dispositivo móvil, el
y ejecutar código y los recursos de
código datos residen allí. Un
extraño que atacante puede modificar
es directamente el código,
malicioso cambiar los contenidos de la
memoria de forma dinámica,
cambiar o reemplazar las API
del sistema que utiliza la
aplicación o modificar los
datos y recursos de la
aplicación. Esto puede
proporcionar al atacante un
método directo para subvertir
el uso previsto del software
HERRAMIENTA OWASP MOBILE
6-6-2018
Compruebe si build.prop incluye la línea ro.build.tags = test-keys que indica una compilación
del desarrollador o una ROM no oficial
Verificar certificados OTA
com.noshufou.android.su
com.thirdparty.superuser
eu.chainfire.supersu
com.koushikdutta.superuser
Verifique los binarios de SU
HERRAMIENTA OWASP MOBILE
6-6-2018
/ system / bin / su
/ system / xbin / su
/ sbin / su
/ system / su
/system/bin/.ext/.su
Intento de comando SU directamente
o M9 - Ingeniería inversa. Esta categoría incluye el análisis del núcleo binario final para
determinar su código fuente, bibliotecas, algoritmos y otros activos. Software como IDA Pro,
Hopper, otool y otras herramientas de inspección binaria le dan al atacante una idea del
funcionamiento interno de la aplicación. Esto se puede usar para explotar otras
vulnerabilidades incipientes en la aplicación, así como también para revelar información acerca
de los servidores back-end, las constantes y cifrados criptográficos y la propiedad intelectual.
o M10 – Funcionalidad Extraña. Esta categoría incluye el análisis del núcleo binario final para
determinar su código fuente, bibliotecas, algoritmos y otros activos. Software como IDA Pro,
Hopper, otool y otras herramientas de inspección binaria le dan al atacante una idea del
funcionamiento interno de la aplicación. Esto se puede usar para explotar otras
vulnerabilidades incipientes en la aplicación, así como también para revelar información acerca
de los servidores back-end, las constantes y cifrados criptográficos y la propiedad intelectual.
la puntos finales
participación administrativos API o
de los puntos finales no oficiales
usuarios no deberían incluirse en
finales. las construcciones finales
de producción. Detectar
una funcionalidad extraña
puede ser
complicado. Las
herramientas automáticas
de análisis estático y
dinámico pueden recoger
fruta de bajo costo
(declaraciones de
registro). Sin embargo,
algunas puertas traseras
son difíciles de detectar
de manera
automatizada.Como tal,
¿Soy vulnerable a la "funcionalidad extraña"?
A menudo, los desarrolladores incluyen funciones ocultas de puerta trasera u otros controles
internos de seguridad de desarrollo que no están destinados a ser lanzados a un entorno de
producción. Por ejemplo, un desarrollador puede incluir accidentalmente una contraseña como
comentario en una aplicación híbrida. Otro ejemplo incluye la desactivación de la autenticación de
2 factores durante la prueba.
La característica definitoria de este riesgo es dejar la funcionalidad habilitada en la aplicación que
no estaba destinada a ser lanzada.
¿Cómo evito la "funcionalidad extraña"?
La mejor forma de prevenir esta vulnerabilidad es llevar a cabo una revisión manual del código de
seguridad usando los campeones de seguridad o los expertos en la materia más conocedores de
este código. Deberían hacer lo siguiente:
una carga adicional para el usuario final. También hace que los datos almacenados sean más seguros en
caso de pérdida o robo. Sin embargo, debe tenerse en cuenta que incluso cuando está protegido por la
llave de desbloqueo del dispositivo, si los datos están almacenados en el dispositivo, su seguridad depende
de la seguridad del código de desbloqueo del dispositivo si la eliminación remota de la clave es por alguna
razón imposible .
1.4 No almacene / almacene datos confidenciales (incluidas las claves) a menos que estén encriptados y si
es posible almacenados en un área a prueba de manipulaciones (vea el control 2).
1.5 Considere restringir el acceso a datos confidenciales basados en información contextual, como la
ubicación (por ejemplo, la aplicación de billetera no se puede usar si los datos del GPS muestran que el
teléfono está fuera de Europa, la llave del auto no se puede usar a menos que estén dentro de 100m de
auto, etc.).
1.6 No almacene el GPS histórico / rastreo u otra información confidencial en el dispositivo más allá del
período requerido por la aplicación (ver controles 1.7, 1.8).
1.7 Suponga que el almacenamiento compartido no es de confianza: la información puede filtrarse
fácilmente de forma inesperada a través de cualquier almacenamiento compartido. En particular:
Tenga en cuenta las cachés y el almacenamiento temporal como un posible canal de fuga, cuando se
comparte con otras aplicaciones.
Tenga en cuenta que el almacenamiento compartido público, como la libreta de direcciones, la galería
multimedia y los archivos de audio, es un posible canal de fuga. Por ejemplo, el almacenamiento de
imágenes con metadatos de ubicación en la galería multimedia permite que esa información se comparta
de forma involuntaria.
No almacene datos temporales / en caché en un directorio legible por todo el mundo.
1.8 Para datos personales confidenciales, la eliminación debe programarse de acuerdo con un período de
retención máximo (para evitar, por ejemplo, que los datos permanezcan en cachés indefinidamente).
1.9 Actualmente no existe un procedimiento estándar de eliminación segura para la memoria flash (a
menos que se limpie todo el medio / tarjeta). Por lo tanto, el cifrado de datos y la administración segura de
claves son especialmente importantes.
1.10 Considere la seguridad de todo el ciclo de vida de los datos al escribir su aplicación (recopilación por
cable, almacenamiento temporal, almacenamiento en caché, copia de seguridad, eliminación, etc.)
1.11 Aplicar el principio de divulgación mínima: solo recopilar y divulgar los datos que se requieren para el
uso empresarial de la aplicación. Identifique en la fase de diseño qué datos se necesitan, su sensibilidad y
si es apropiado recopilar, almacenar y usar cada tipo de datos.
1.12 Utilice identificadores no persistentes que no se compartan con otras aplicaciones siempre que sea
posible; por ejemplo, no use el número de identificación del dispositivo como identificador a menos que
haya una buena razón para hacerlo (use un número generado aleatoriamente, consulte 4.3). Aplique los
mismos principios de minimización de datos a las sesiones de la aplicación que a las sesiones de http /
cookies, etc.
1.13 Las aplicaciones en los dispositivos administrados deben utilizar las API de conmutación de borrado y
eliminación remotas para eliminar información confidencial del dispositivo en caso de robo o pérdida. (Un
HERRAMIENTA OWASP MOBILE
6-6-2018
kill-switch es el término utilizado para un nivel OS o un medio creado especialmente para eliminar
remotamente aplicaciones y / o datos).
1.14 Los desarrolladores de aplicaciones pueden desear incorporar un "interruptor de eliminación de datos"
específico de la aplicación en sus productos, para permitir la eliminación por aplicación de los datos
confidenciales de la aplicación cuando sea necesario (se requiere una autenticación fuerte para proteger el
uso indebido de dicha característica).
2.7 Las contraseñas visuales basadas en deslizamiento son vulnerables a los ataques de manchas (usando
depósitos de grasa en la pantalla táctil para adivinar la contraseña). Se deben introducir medidas tales
como permitir patrones repetidos para frustrar los ataques de borrones. (8)
2.8 Compruebe la entropía de todas las contraseñas, incluidas las visuales (ver 4.1 a continuación).
2.9 Asegúrese de que las contraseñas y las claves no estén visibles en la caché o los registros.
2.10 No almacene contraseñas ni secretos en el binario de la aplicación. No utilice un secreto compartido
genérico para la integración con el servidor (como la contraseña incrustada en el código). Los archivos
binarios de aplicaciones móviles se pueden descargar fácilmente y realizar ingeniería inversa.
4.1 Requerir autenticación de usuario de fuerza apropiada a la aplicación. Puede ser útil proporcionar
comentarios sobre la fortaleza de la contraseña cuando se ingresa por primera vez. La solidez del
mecanismo de autenticación utilizado depende de la sensibilidad de los datos procesados por la aplicación
y su acceso a recursos valiosos (por ejemplo, costos de dinero).
4.2 Es importante asegurarse de que la administración de la sesión se maneje correctamente después de
la autenticación inicial, utilizando los protocolos de seguridad apropiados. Por ejemplo, se requieren
credenciales de autenticación o tokens para pasar con cualquier solicitud posterior (especialmente aquellas
que otorgan acceso o modificación privilegiada).
4.3 Usa identificadores de sesión impredecibles con alta entropía. Tenga en cuenta que los generadores de
números aleatorios generalmente producen resultados aleatorios pero predecibles para una semilla
determinada (es decir, se produce la misma secuencia de números aleatorios para cada semilla). Por lo
tanto, es importante proporcionar una semilla impredecible para el generador de números aleatorios. El
método estándar para usar la fecha y la hora no es seguro. Se puede mejorar, por ejemplo, usando una
combinación de fecha y hora, el sensor de temperatura del teléfono y los campos magnéticos actuales x, y
y z. Al usar y combinar estos valores, se deben elegir algoritmos bien probados que maximicen la entropía
(p. Ej., La aplicación repetida de SHA1 puede usarse para combinar variables aleatorias mientras se
mantiene la máxima entropía, suponiendo una longitud de semilla máxima constante).
4.4 Usar contexto para agregar seguridad a la autenticación, por ejemplo, ubicación de IP, etc.
4.5 Siempre que sea posible, considere utilizar factores de autenticación adicionales para las aplicaciones
que brindan acceso a datos o interfaces confidenciales cuando sea posible, por ejemplo, voz, huella dactilar
(si está disponible), quién sabe, comportamiento, etc.
4.6 Usar autenticación que vincule a la identidad del usuario final (en lugar de la identidad del dispositivo).
5. Mantenga seguras las API de backend (servicios) y la plataforma (servidor)
Riesgos: ataques a sistemas de back-end y pérdida de datos a través del almacenamiento en la nube. La
mayoría de las aplicaciones móviles interactúan con las API de fondo mediante REST / Servicios web o
protocolos propietarios. La implementación insegura de API o servicios de back-end, y no mantener la
plataforma back-end reforzada / parcheada permitirá a los atacantes poner en peligro los datos en el
dispositivo móvil cuando se transfieren al backend, o atacar el backend a través de la aplicación móvil. (14)
5.1 Realice una verificación específica de su código para datos confidenciales transferidos
involuntariamente, cualquier información transferida entre el dispositivo móvil y el servidor web y otras
interfaces externas (por ejemplo, la ubicación u otra información incluida en los metadatos de archivos).
5.2 Todos los servicios de back-end (servicios web / REST) para aplicaciones móviles deberían someterse
a pruebas de vulnerabilidades periódicamente, por ejemplo, utilizando herramientas analíticas de códigos
estáticos y herramientas de fuzzing para probar y encontrar fallas de seguridad.
5.3 Asegúrese de que la plataforma de backend (servidor) se esté ejecutando con una configuración
reforzada con los últimos parches de seguridad aplicados al sistema operativo, el servidor web y otros
componentes de la aplicación.
5.4 Asegurar que los registros adecuados se retengan en el back-end para detectar y responder a
incidentes y realizar análisis forenses (dentro de los límites de la ley de protección de datos).
5.5 Emplear limitación de velocidad y aceleración por usuario / IP (si la identificación del usuario está
disponible) para reducir el riesgo de ataque DDoS.
HERRAMIENTA OWASP MOBILE
6-6-2018
5.6 Prueba de vulnerabilidades de DoS donde el servidor puede verse abrumado por ciertas llamadas a la
aplicación que consumen muchos recursos.
5.7 Los servicios web, REST y API pueden tener vulnerabilidades similares a las aplicaciones web:
Realizar pruebas de casos de abuso, además de las pruebas de casos de uso
Realice pruebas del servicio web back-end, REST o API para determinar las vulnerabilidades.
7.5 Mantener un registro de consentimiento para la transferencia de PII. Este registro debe estar disponible
para el usuario (considere también el valor de mantener registros del lado del servidor adjuntos a los datos
del usuario almacenados). Tales registros en sí mismos deberían minimizar la cantidad de datos
personales que almacenan (p. Ej., Usar hash).
7.6 Compruebe si su mecanismo de recolección de consentimiento se superpone o entra en conflicto (por
ejemplo, en las prácticas de manejo de datos indicadas) con cualquier otra colección de consentimiento
dentro de la misma pila (por ejemplo, APP-native + HTML de webkit) y resuelva cualquier conflicto.
8. Implementar controles para evitar el acceso no autorizado a recursos pagados (billetera, SMS,
llamadas telefónicas, etc.)
Riesgos: las aplicaciones para teléfonos inteligentes brindan acceso programático (automático) a llamadas
telefónicas de tarifa premium, SMS, datos de itinerancia, pagos NFC, etc. con acceso privilegiado a tales
API, se debe tener especial cuidado para evitar abusos, teniendo en cuenta el impacto financiero de las
vulnerabilidades que dan acceso a los atacantes a los recursos financieros del usuario.
8.1 Mantener registros de acceso a los recursos pagados en un formato no repudiable (por ejemplo, un
recibo firmado enviado a un servidor confiable - con el consentimiento del usuario) y ponerlos a disposición
del usuario final para su supervisión. Los registros deben estar protegidos del acceso no autorizado.
8.2 Comprobar patrones de uso anómalos en el uso de recursos pagados y desencadenar la
reautorización. Por ejemplo, cuando ocurre un cambio significativo en la ubicación, cambios en el idioma
del usuario, etc.
8.3 Considere el uso de un modelo de lista blanca por defecto para el direccionamiento de recursos
pagados, por ejemplo, la libreta de direcciones solo a menos que esté específicamente autorizado para
llamadas telefónicas.
8.4 Autenticar todas las llamadas API a los recursos pagados (por ejemplo, utilizando un certificado de
desarrollador de la aplicación).
8.5 Asegurarse de que las devoluciones de llamada API de billetera no pasen la información de cuenta /
precios / facturación / artículo sin formato.
8.6 Advertir al usuario y obtener el consentimiento para cualquier implicancia de costos para el
comportamiento de la aplicación.
8.7 Implemente las mejores prácticas, como la latencia rápida (una especificación 3GPP), el
almacenamiento en caché, etc. para minimizar la carga de señalización en las estaciones base.
9. Garantizar la distribución / provisión segura de aplicaciones móviles
Riesgos: El uso de prácticas seguras de distribución es importante para mitigar todos los riesgos descritos
en los 10 principales riesgos de OWASP Mobile y en los 10 principales riesgos de ENISA.
9.1 Las aplicaciones deben diseñarse y aprovisionarse para permitir actualizaciones de parches de
seguridad, teniendo en cuenta los requisitos de aprobación por parte de las tiendas de aplicaciones y la
demora adicional que esto pueda implicar.
HERRAMIENTA OWASP MOBILE
6-6-2018
9.2 La mayoría de las tiendas de aplicaciones monitorean las aplicaciones en busca de códigos inseguros y
pueden eliminar aplicaciones de forma remota con poca anticipación en caso de un incidente. La
distribución de aplicaciones a través de tiendas de aplicaciones oficiales, por lo tanto, proporciona una red
de seguridad en caso de serias vulnerabilidades en su aplicación.
9.3 Proporcione canales de retroalimentación para que los usuarios informen sobre problemas de
seguridad con las aplicaciones, por ejemplo, una dirección de correo electrónico de seguridad @.
10. Compruebe cuidadosamente cualquier interpretación en tiempo de ejecución del código para
errores
Riesgos: la interpretación en tiempo de ejecución del código puede dar la oportunidad a las partes que no
son de confianza de proporcionar una entrada no verificada que se interpreta como código. Por ejemplo,
niveles extra en un juego, scripts, encabezados de SMS interpretados. Esto brinda la oportunidad al
malware de eludir los controles de jardín amurallados proporcionados por las tiendas de aplicaciones.
Puede conducir a ataques de inyección que conducen a fuga de datos, vigilancia, spyware y software de
marcación.
Tenga en cuenta que no siempre es obvio que su código contiene un intérprete. Busque cualquier
capacidad accesible a través de datos de entrada del usuario y el uso de API de terceros que pueden
interpretar la entrada del usuario, por ejemplo, intérpretes de JavaScript.
10.1 Minimice la interpretación del tiempo de ejecución y las capacidades ofrecidas a los intérpretes en
tiempo de ejecución: ejecute intérpretes con niveles mínimos de privilegio.
10.2 Defina la sintaxis de escape completa según corresponda.
10.3 Intérpretes de prueba de Fuzz.
10.4 Intérpretes de Sandbox.
Conclusión
Los móviles han ocupado una parte muy importante en nuestra sociedad. Ya hace mucho tiempo
que se superó el tráfico de red por móvil que por ordenador. Como desarrolladores, tenemos la
obligación de intentar hacer el acceso desde estos dispositivos lo más seguro posible.
BIBLIOFRAFIA
https://www.owasp.org/index.php/Mobile_Top_10_2016-Top_10