SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
Seguridad 101 JavaEE - OWASP Top 10
Víctor Orozco - @tuxtor
11 de mayo de 2018
Nabenik
1
Víctor Orozco
• Developer (JVM/Open Source
Advocate)
• Ex-becario OEA-GCUB
• Consultor @ Nabenik
• Speaker @ JavaOne,
DevNexus, FISL, etc.
• @tuxtor
• http://vorozco.com
• http://tuxtor.shekalug.org
2
Principios básicos
• No existe un framework generico para hacer ”seguridad
360”
• Seguridad = Balance entre necesidad de
negocio/tecnología
• En Java hay n formas de hacer lo mismo
• Requerimientos -> Cifrado, firmas digitales, autenticación,
autorización
• Herramientas
3
Definiciones básicas
4
¿Que es Java?
5
Lenguaje
6
Maquina virtual
7
Muchas plataformas
8
Seguridad en Java
Infosec
Seguridad
Confidencialidad
Integridad
Disponibilidad
9
Seguridad
Seguridad
JVM Lenguaje Bibliotecas
10
Seguridad
Seguridad
JVM
Escritorio Applets Invasión
Lenguaje Bibliotecas
11
Seguridad
Seguridad
JVM Lenguaje
Tipado Punteros Scopes
Bibliotecas
12
Seguridad
Seguridad
JVM Lenguaje Bibliotecas
Manual Frameworks Runtimes
13
Bibliotecas
¿Cual?
• Apache Shiro
• Spring Security
• OACC
• Picketlink
• Keycloak
• JGuard
• JACC
• SoteriaRI
. . .
14
Tecnologias Web
Render en servidor
• JSF (Icefaces,
Primefaces)
• GWT
• JSP
• Servlets
• Vaadin
• Struts
• Spring MVC
15
Tecnologias Web
Render en servidor
• JSF (Icefaces,
Primefaces)
• GWT
• JSP
• Servlets
• Vaadin
• Struts
• Spring MVC
Render en cliente
• Angular
• React
• Knockout (Oracle JET)
• Vue
15
Tecnologias Web
Render en servidor
• JSF (Icefaces,
Primefaces)
• GWT
• JSP
• Servlets
• Vaadin
• Struts
• Spring MVC
Render en cliente
• Angular
• React
• Knockout (Oracle JET)
• Vue
Servicios
• SOAP
• Rest
• RMI
15
Tecnología
16
JavaEE 7
• API Rest - JAX-RS 2.0
• WebSocket - WebSocket 1.0, Servlet 3.1
• JSON - JSON API 1.0
• SOA, Microservices
17
JavaEE 7
18
JavaEE 8
• Mejor integración de JSF con CDI
• Mejor integración de JMS con CDI
• HTTP/2
• JSON-B
• Security
• JAX-RS Reactivo
19
JavaEE 8
20
EE vs OWASP Top 10
Advertencia
• Visto en N desarrollos
• Un punto de inicio
• Informar
21
JavaEE
• A1-Injection
• A2-Broken Authentication and Session Management
• A3-Sensitive Data Exposure
• A4-XML External Entities
• A5-Broken Access Control
• A6-Security Misconfiguration
• A7-Cross-Site Scripting (XSS)
• A8-Insecure deserialization
• A9-Using Components with Known Vulnerabilities
• A10-Insufficient Logging y Monitoring
https:
//www.owasp.org/index.php/Top_10_2017-Top_10
22
JavaEE
• A1-Injection
• A2-Broken Authentication and Session Management
• A3-Sensitive Data Exposure
• A4-XML External Entities
• A5-Broken Access Control
• A6-Security Misconfiguration
• A7-Cross-Site Scripting (XSS)
• A8-Insecure deserialization
• A9-Using Components with Known Vulnerabilities
• A10-Insufficient Logging y Monitoring
https:
//www.owasp.org/index.php/Top_10_2017-Top_10
23
JavaEE - A1 - Injection
Problemas y causas comunes
• Concatenación de Strings en SQL
• Datos mal intencionados a aplicaciones
• Manipulación data stores
• Escalar privilegios
Sugerencias
• JAMAS y NUNCA concatenar parametros
• Siempre utilizar mecanismos de sanitizing
• Parchar con OWASP ESAPI
• JDBC y JPA soportan de serie sanitizing si no se concatena
• Bean Validation en parametros
24
JavaEE - A2-Broken Authentication and Session Management
Problemas y causas comunes
• Implementación de solución manual vs frameworks
• Falta de políticas
• Entrenamiento en la plataforma
• Comunicación y/o autenticación via http
Sugerencias
• Forzar https
• Utilizar adecuadamente los ciclos de vida de la
plataforma (singleton != stateless != statefull) y cache
• No implementar en base a interceptores
25
JavaEE - A3-Sensitive data exposure
Problemas y causas comunes
• Guardar datos sin cifrar
• Datos con cifrado ”debil”, AKA cifrado propio
• Transmitir credenciales via http
• Transmisión de excepciones completas a front-end
Sugerencias
• Identificar con un checklist los datos sensitivos
• Evitar cifrado de dos vías a menos que sea necesario
• Evitar transmisión de llaves
• Verificar código auto generado (excepciones)
26
JavaEE - A5-Broken Access Control
Problemas y causas comunes
• Implementación de solución manual vs frameworks
• Falta de políticas
• Escalar privilegios
• Comunicación y/o autenticación via http
Sugerencias
• Forzar https
• Implementación RBAC de application server
• Implementación RBAC de framework
• Entender el modelo de JAAS y SoteriaRI
27
JavaEE - A6-Security Misconfiguration
Problemas y causas comunes
• Configuración por defecto de applicaction server
• Configuración por defecto de SO
• Configuración relajada de capa de transporte
Sugerencias
• Configurar siempre el SO destino
• Proteger Glassfish
• Firewall
• RBAC
• Evitar certificados autofirmados en entornos no
controlados
• JVM tipo server
28
JavaEE - A8-Insecure deserialization
Problemas y causas comunes
• Self made frameworks
• No validation
Sugerencias
• Evaluar si no vale la pena utilizar un software listo
• Bean validation
29
JavaEE - A9-Using components with known vulnerabilities
Problemas y causas comunes
• Difícil dar seguimiento a los lanzamientos
• Frameworks muy nuevos o muy viejos
• No seguir las notas del lanzamiento
Sugerencias
• Actualizar el app server con el calendario de lanzamiento
• Suscripción a mailing list/foros
• Servicios tipo Bintray
• Servicios de análisis estático (Sonar)
30
JavaEE - Bonus-APIs sin proteger
Problemas y causas comunes
• Combinación de broken auth, broken access control o
security misconfiguration
• No hay nada
• Especialmente grave en rich clients
Sugerencias
• Verificar código auto generado
• Programar en modo deny all
31
Apache Shiro
32
Apache Shiro
• Java Authentication and Authorization Service - JAAS
• RBAC
• Autenticación
• Autorización
• Cifrado
33
Apache Shiro - Taxonomia
• Permission
• Principal (generic attribute)
• Subject (user)
• Credential
• Realm
• Role
• Session
34
Fin
Gracias
• me@vorozco.com vorozco@nabenik.com
• http://vorozco.com
• http://github.com/tuxtor/slides
This work is licensed under a Creative Commons
Attribution-ShareAlike 3.0 Guatemala License.
35

Más contenido relacionado

Similar a OWASP Top 10 101 en Java EE

Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Víctor Leonel Orozco López
 
Consejos de seguridad con Alfresco
Consejos de seguridad con AlfrescoConsejos de seguridad con Alfresco
Consejos de seguridad con AlfrescoToni de la Fuente
 
Seguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPSeguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPMarcos Harasimowicz
 
Argentesting 2017 - Proyecto OWASP Top 10
Argentesting 2017 - Proyecto OWASP Top 10Argentesting 2017 - Proyecto OWASP Top 10
Argentesting 2017 - Proyecto OWASP Top 10Argentesting
 
OWASP Spain: Protection and Verification of Business Logic Flaws
OWASP Spain: Protection and Verification of Business Logic FlawsOWASP Spain: Protection and Verification of Business Logic Flaws
OWASP Spain: Protection and Verification of Business Logic FlawsHdiv Security
 
OWASP Top 10 2017
OWASP Top 10 2017OWASP Top 10 2017
OWASP Top 10 2017superserch
 
Seguridad, atributo crítico de un sistema
Seguridad, atributo crítico de un sistemaSeguridad, atributo crítico de un sistema
Seguridad, atributo crítico de un sistemaGeneXus
 
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP7th_Sign
 
Seguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHPSeguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHP7th_Sign
 
Introduccion a la OWASP Guatemala
Introduccion a la OWASP GuatemalaIntroduccion a la OWASP Guatemala
Introduccion a la OWASP GuatemalaCamilo Fernandez
 
Open Web Application Security Project OWASP
Open Web Application Security Project OWASPOpen Web Application Security Project OWASP
Open Web Application Security Project OWASPEdwardZarate2
 
Seguridad en el Ciclo de Vida del Software
Seguridad en el Ciclo de Vida del SoftwareSeguridad en el Ciclo de Vida del Software
Seguridad en el Ciclo de Vida del SoftwareDaniel Maldonado
 
La necesidad de construir software seguro. IBM Software Summit #Start013
La necesidad de construir software seguro. IBM Software Summit #Start013La necesidad de construir software seguro. IBM Software Summit #Start013
La necesidad de construir software seguro. IBM Software Summit #Start013Internet Security Auditors
 
Selenium como herramienta de Web Scraping
Selenium como herramienta de Web ScrapingSelenium como herramienta de Web Scraping
Selenium como herramienta de Web ScrapingDani Latorre
 
Aplicaciones escalables en Azure
Aplicaciones escalables en AzureAplicaciones escalables en Azure
Aplicaciones escalables en AzureGermán Küber
 
10 Claves para mejorar la seguridad de tu WP
10 Claves para mejorar la seguridad de tu WP10 Claves para mejorar la seguridad de tu WP
10 Claves para mejorar la seguridad de tu WPIñaki Arenaza
 

Similar a OWASP Top 10 101 en Java EE (20)

Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
 
Consejos de seguridad con Alfresco
Consejos de seguridad con AlfrescoConsejos de seguridad con Alfresco
Consejos de seguridad con Alfresco
 
Seguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPSeguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASP
 
Argentesting 2017 - Proyecto OWASP Top 10
Argentesting 2017 - Proyecto OWASP Top 10Argentesting 2017 - Proyecto OWASP Top 10
Argentesting 2017 - Proyecto OWASP Top 10
 
OWASP Spain: Protection and Verification of Business Logic Flaws
OWASP Spain: Protection and Verification of Business Logic FlawsOWASP Spain: Protection and Verification of Business Logic Flaws
OWASP Spain: Protection and Verification of Business Logic Flaws
 
OWASP Top 10 2017
OWASP Top 10 2017OWASP Top 10 2017
OWASP Top 10 2017
 
Seguridad, atributo crítico de un sistema
Seguridad, atributo crítico de un sistemaSeguridad, atributo crítico de un sistema
Seguridad, atributo crítico de un sistema
 
Temas owasp
Temas owaspTemas owasp
Temas owasp
 
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
 
Seguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHPSeguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHP
 
Frameworks JAVA EE 5 de marzo de 2.012
Frameworks JAVA EE 5 de marzo de 2.012Frameworks JAVA EE 5 de marzo de 2.012
Frameworks JAVA EE 5 de marzo de 2.012
 
Introduccion a la OWASP Guatemala
Introduccion a la OWASP GuatemalaIntroduccion a la OWASP Guatemala
Introduccion a la OWASP Guatemala
 
Open Web Application Security Project OWASP
Open Web Application Security Project OWASPOpen Web Application Security Project OWASP
Open Web Application Security Project OWASP
 
Web cryptography
Web cryptographyWeb cryptography
Web cryptography
 
"Cloudificación" de servicios: retos y oportunidades
"Cloudificación" de servicios: retos y oportunidades"Cloudificación" de servicios: retos y oportunidades
"Cloudificación" de servicios: retos y oportunidades
 
Seguridad en el Ciclo de Vida del Software
Seguridad en el Ciclo de Vida del SoftwareSeguridad en el Ciclo de Vida del Software
Seguridad en el Ciclo de Vida del Software
 
La necesidad de construir software seguro. IBM Software Summit #Start013
La necesidad de construir software seguro. IBM Software Summit #Start013La necesidad de construir software seguro. IBM Software Summit #Start013
La necesidad de construir software seguro. IBM Software Summit #Start013
 
Selenium como herramienta de Web Scraping
Selenium como herramienta de Web ScrapingSelenium como herramienta de Web Scraping
Selenium como herramienta de Web Scraping
 
Aplicaciones escalables en Azure
Aplicaciones escalables en AzureAplicaciones escalables en Azure
Aplicaciones escalables en Azure
 
10 Claves para mejorar la seguridad de tu WP
10 Claves para mejorar la seguridad de tu WP10 Claves para mejorar la seguridad de tu WP
10 Claves para mejorar la seguridad de tu WP
 

Más de Víctor Leonel Orozco López

Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenVíctor Leonel Orozco López
 
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosDesde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosVíctor Leonel Orozco López
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Víctor Leonel Orozco López
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudVíctor Leonel Orozco López
 
Introducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMIntroducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMVíctor Leonel Orozco López
 
Design Patterns para Microsserviços com MicroProfile
 Design Patterns para Microsserviços com MicroProfile Design Patterns para Microsserviços com MicroProfile
Design Patterns para Microsserviços com MicroProfileVíctor Leonel Orozco López
 
MicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applicationsMicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applicationsVíctor Leonel Orozco López
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Víctor Leonel Orozco López
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Víctor Leonel Orozco López
 
Consejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de softwareConsejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de softwareVíctor Leonel Orozco López
 
Empaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y KubernetesEmpaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y KubernetesVíctor Leonel Orozco López
 

Más de Víctor Leonel Orozco López (20)

Introducción al análisis de datos
Introducción al análisis de datosIntroducción al análisis de datos
Introducción al análisis de datos
 
From traditional to GitOps
From traditional to GitOpsFrom traditional to GitOps
From traditional to GitOps
 
De Java 8 a Java 17
De Java 8 a Java 17De Java 8 a Java 17
De Java 8 a Java 17
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
 
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosDesde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
 
Tolerancia a fallas, service mesh y chassis
Tolerancia a fallas, service mesh y chassisTolerancia a fallas, service mesh y chassis
Tolerancia a fallas, service mesh y chassis
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle Cloud
 
Introducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMIntroducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVM
 
Desarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud NativeDesarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud Native
 
Design Patterns para Microsserviços com MicroProfile
 Design Patterns para Microsserviços com MicroProfile Design Patterns para Microsserviços com MicroProfile
Design Patterns para Microsserviços com MicroProfile
 
Gestión de proyectos con Maven
Gestión de proyectos con MavenGestión de proyectos con Maven
Gestión de proyectos con Maven
 
MicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applicationsMicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applications
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
 
Consejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de softwareConsejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de software
 
Introducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores JavaIntroducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores Java
 
De Java 8 ate Java 14
De Java 8 ate Java 14De Java 8 ate Java 14
De Java 8 ate Java 14
 
Programación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScriptProgramación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScript
 
Empaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y KubernetesEmpaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y Kubernetes
 

OWASP Top 10 101 en Java EE

  • 1. Seguridad 101 JavaEE - OWASP Top 10 Víctor Orozco - @tuxtor 11 de mayo de 2018 Nabenik 1
  • 2. Víctor Orozco • Developer (JVM/Open Source Advocate) • Ex-becario OEA-GCUB • Consultor @ Nabenik • Speaker @ JavaOne, DevNexus, FISL, etc. • @tuxtor • http://vorozco.com • http://tuxtor.shekalug.org 2
  • 3. Principios básicos • No existe un framework generico para hacer ”seguridad 360” • Seguridad = Balance entre necesidad de negocio/tecnología • En Java hay n formas de hacer lo mismo • Requerimientos -> Cifrado, firmas digitales, autenticación, autorización • Herramientas 3
  • 5. 4
  • 16. Bibliotecas ¿Cual? • Apache Shiro • Spring Security • OACC • Picketlink • Keycloak • JGuard • JACC • SoteriaRI . . . 14
  • 17. Tecnologias Web Render en servidor • JSF (Icefaces, Primefaces) • GWT • JSP • Servlets • Vaadin • Struts • Spring MVC 15
  • 18. Tecnologias Web Render en servidor • JSF (Icefaces, Primefaces) • GWT • JSP • Servlets • Vaadin • Struts • Spring MVC Render en cliente • Angular • React • Knockout (Oracle JET) • Vue 15
  • 19. Tecnologias Web Render en servidor • JSF (Icefaces, Primefaces) • GWT • JSP • Servlets • Vaadin • Struts • Spring MVC Render en cliente • Angular • React • Knockout (Oracle JET) • Vue Servicios • SOAP • Rest • RMI 15
  • 21. JavaEE 7 • API Rest - JAX-RS 2.0 • WebSocket - WebSocket 1.0, Servlet 3.1 • JSON - JSON API 1.0 • SOA, Microservices 17
  • 23. JavaEE 8 • Mejor integración de JSF con CDI • Mejor integración de JMS con CDI • HTTP/2 • JSON-B • Security • JAX-RS Reactivo 19
  • 25. EE vs OWASP Top 10
  • 26. Advertencia • Visto en N desarrollos • Un punto de inicio • Informar 21
  • 27. JavaEE • A1-Injection • A2-Broken Authentication and Session Management • A3-Sensitive Data Exposure • A4-XML External Entities • A5-Broken Access Control • A6-Security Misconfiguration • A7-Cross-Site Scripting (XSS) • A8-Insecure deserialization • A9-Using Components with Known Vulnerabilities • A10-Insufficient Logging y Monitoring https: //www.owasp.org/index.php/Top_10_2017-Top_10 22
  • 28. JavaEE • A1-Injection • A2-Broken Authentication and Session Management • A3-Sensitive Data Exposure • A4-XML External Entities • A5-Broken Access Control • A6-Security Misconfiguration • A7-Cross-Site Scripting (XSS) • A8-Insecure deserialization • A9-Using Components with Known Vulnerabilities • A10-Insufficient Logging y Monitoring https: //www.owasp.org/index.php/Top_10_2017-Top_10 23
  • 29. JavaEE - A1 - Injection Problemas y causas comunes • Concatenación de Strings en SQL • Datos mal intencionados a aplicaciones • Manipulación data stores • Escalar privilegios Sugerencias • JAMAS y NUNCA concatenar parametros • Siempre utilizar mecanismos de sanitizing • Parchar con OWASP ESAPI • JDBC y JPA soportan de serie sanitizing si no se concatena • Bean Validation en parametros 24
  • 30. JavaEE - A2-Broken Authentication and Session Management Problemas y causas comunes • Implementación de solución manual vs frameworks • Falta de políticas • Entrenamiento en la plataforma • Comunicación y/o autenticación via http Sugerencias • Forzar https • Utilizar adecuadamente los ciclos de vida de la plataforma (singleton != stateless != statefull) y cache • No implementar en base a interceptores 25
  • 31. JavaEE - A3-Sensitive data exposure Problemas y causas comunes • Guardar datos sin cifrar • Datos con cifrado ”debil”, AKA cifrado propio • Transmitir credenciales via http • Transmisión de excepciones completas a front-end Sugerencias • Identificar con un checklist los datos sensitivos • Evitar cifrado de dos vías a menos que sea necesario • Evitar transmisión de llaves • Verificar código auto generado (excepciones) 26
  • 32. JavaEE - A5-Broken Access Control Problemas y causas comunes • Implementación de solución manual vs frameworks • Falta de políticas • Escalar privilegios • Comunicación y/o autenticación via http Sugerencias • Forzar https • Implementación RBAC de application server • Implementación RBAC de framework • Entender el modelo de JAAS y SoteriaRI 27
  • 33. JavaEE - A6-Security Misconfiguration Problemas y causas comunes • Configuración por defecto de applicaction server • Configuración por defecto de SO • Configuración relajada de capa de transporte Sugerencias • Configurar siempre el SO destino • Proteger Glassfish • Firewall • RBAC • Evitar certificados autofirmados en entornos no controlados • JVM tipo server 28
  • 34. JavaEE - A8-Insecure deserialization Problemas y causas comunes • Self made frameworks • No validation Sugerencias • Evaluar si no vale la pena utilizar un software listo • Bean validation 29
  • 35. JavaEE - A9-Using components with known vulnerabilities Problemas y causas comunes • Difícil dar seguimiento a los lanzamientos • Frameworks muy nuevos o muy viejos • No seguir las notas del lanzamiento Sugerencias • Actualizar el app server con el calendario de lanzamiento • Suscripción a mailing list/foros • Servicios tipo Bintray • Servicios de análisis estático (Sonar) 30
  • 36. JavaEE - Bonus-APIs sin proteger Problemas y causas comunes • Combinación de broken auth, broken access control o security misconfiguration • No hay nada • Especialmente grave en rich clients Sugerencias • Verificar código auto generado • Programar en modo deny all 31
  • 38. Apache Shiro • Java Authentication and Authorization Service - JAAS • RBAC • Autenticación • Autorización • Cifrado 33
  • 39. Apache Shiro - Taxonomia • Permission • Principal (generic attribute) • Subject (user) • Credential • Realm • Role • Session 34
  • 40. Fin
  • 41. Gracias • me@vorozco.com vorozco@nabenik.com • http://vorozco.com • http://github.com/tuxtor/slides This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Guatemala License. 35