SlideShare una empresa de Scribd logo
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Víctor Orozco - @tuxtor
17 de mayo de 2020
Academik
1
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
2
¿Java?
• Lenguaje
• VM
• Bibliotecas/API
El conjunto es la plataforma Java
3
¿Java?
• Lenguaje
• VM
• Bibliotecas/API
El conjunto es la plataforma Java (TM)
3
Seguridad en Java
Infosec
Seguridad
Confidencialidad
Integridad
Disponibilidad
4
Seguridad
Seguridad
JVM Lenguaje Bibliotecas
5
Seguridad
Seguridad
JVM
Escritorio Applets Invasión
Lenguaje Bibliotecas
6
Seguridad
Seguridad
JVM Lenguaje
Tipado Punteros Scopes
Bibliotecas
7
Seguridad
Seguridad
JVM Lenguaje Bibliotecas
Manual Frameworks Runtimes
8
Bibliotecas
¿Cual?
• Apache Shiro
• Spring Security
• OACC
• Keycloak
• JGuard
• JACC
• SoteriaRI
• MicroProfile JWT
. . .
9
Tecnologias Web
Render en servidor
• JSF (Icefaces,
Primefaces)
• GWT
• JSP
• Servlets
• Vaadin
• Struts
• Spring MVC
10
Tecnologias Web
Render en servidor
• JSF (Icefaces,
Primefaces)
• GWT
• JSP
• Servlets
• Vaadin
• Struts
• Spring MVC
Render en cliente
• Angular
• React
• Knockout (Oracle JET)
• Vue
10
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
10
Tecnología
11
JavaEE 8
• Mejor integración de JSF con CDI
• Mejor integración de JMS con CDI
• HTTP/2
• JSON-B
• Security
• JAX-RS Reactivo
12
JavaEE 8
13
EE vs OWASP Top 10
Advertencia
• Visto en N desarrollos
• Un punto de inicio
• Informar
14
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://owasp.org/www-project-top-ten/
15
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
16
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
17
JavaEE - A1 - Injection
Peligro
1 String query = "SELECT p FROM AdmPhrase p " +
2 "where p.author LIKE " + autor +
3 "and p.phrase LIKE " + phrase;
Mejor
1 String query = "SELECT p FROM AdmPhrase p " +
2 "where p.author LIKE :author " +
3 "and p.phrase LIKE :phrase" ;
4
5 return em. createQuery ( query , AdmPhrase . class )
6 . setParameter ("author" , author )
7 . setParameter ("phrase" , phrase )
8 . getResultList ( ) ;
18
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 unicamente
19
JavaEE - A2-Broken Authentication and Session Management
App rest normal
1 public class DemoinfosecRestApplication extends Application {}
Activar mecanismo de autenticación (MicroProfile JWT)
1 @LoginConfig(authMethod = "MP-JWT")
2 @DeclareRoles({RolesEnum.Constants.MOBILE_VALUE, RolesEnum.
Constants.WEB_VALUE})
3 public class DemoinfosecRestApplication extends Application {}
20
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)
21
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, SoteriaRI y MicroProfile security
22
JavaEE - A5-Broken Access Control
Endpoint normal
1 @GET
2 @Path("/{id:[0-9][0-9]*}")
3 public AdmPhrase findById(@PathParam("id") Long id) {
4 return admPhraseRepository.findById(id);
5 }
Endpoint con RBAC
1 @GET
2 @Path("/{id:[0-9][0-9]*}")
3 @RolesAllowed({RolesEnum.Constants.MOBILE_VALUE, RolesEnum.
Constants.WEB_VALUE})
4 public AdmPhrase findById(@PathParam("id") Long id) {
5 return admPhraseRepository.findById(id);
6 } 23
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 y actualizar runtime
• Firewall
• RBAC
• Evitar certificados autofirmados en entornos no controlados
• JVM tipo server
24
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
• Sanitización
25
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, GitHub Security
• Servicios de análisis estático (Sonar)
26
JavaEE - A9-Using components with known vulnerabilities
27
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
28
Demo
Demo Payara 5
29
Demo Payara 5
• Proveedor de tokens https://github.com/tuxtor/microjwt-provider/
• API protegida https://github.com/tuxtor/demoinfosec-service-b/
30
Víctor Orozco
• vorozco@nabenik.com
• @tuxtor
• http://vorozco.com
• http://tuxtor.shekalug.org
This work is licensed under
Creative Commons Attribution-
NonCommercial-ShareAlike 3.0
Guatemala (CC BY-NC-SA 3.0 GT).
31
32

Más contenido relacionado

PDF
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
PDF
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
PDF
Introducción a Kotlin para desarrolladores Java
PDF
Tolerancia a fallas, service mesh y chassis
PDF
Configurar snmp en cisco
PDF
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
PDF
Java EE, Microprofile y Payara Micro
PDF
Introducción a JakartaEE 8
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Introducción a Kotlin para desarrolladores Java
Tolerancia a fallas, service mesh y chassis
Configurar snmp en cisco
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Java EE, Microprofile y Payara Micro
Introducción a JakartaEE 8

La actualidad más candente (19)

PDF
Introducción a GraalVM Native para aplicaciones JVM
PDF
Java EE moderno, de monolitos a Payara Micro
PDF
Empaquetando aplicaciones Java con Docker y Kubernetes
PDF
Desarrollo moderno con DevOps y Cloud Native
PDF
Jvmmx docker jvm
ODP
40 Novedades de JavaSE 9
PDF
Microservicios funcionales con Java 8, Java EE y Payara Micro
PDF
Gestión de proyectos con Maven
PDF
Explorando los objetos centrales de Kubernetes con Oracle Cloud
PPTX
Webinar usando graylog para la gestión centralizada de logs
PDF
JVM Reactive Programming
PPTX
Cuckoo sandbox
PPTX
Apache, getting the best version
PPTX
Overview atlas (1)
PDF
Alternativas a Rails para sitios y servicios web ultraligeros
PDF
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
PDF
HoneyCon 2020: Hacking con ZAP
PPTX
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
PPTX
Armitage pruebas
Introducción a GraalVM Native para aplicaciones JVM
Java EE moderno, de monolitos a Payara Micro
Empaquetando aplicaciones Java con Docker y Kubernetes
Desarrollo moderno con DevOps y Cloud Native
Jvmmx docker jvm
40 Novedades de JavaSE 9
Microservicios funcionales con Java 8, Java EE y Payara Micro
Gestión de proyectos con Maven
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Webinar usando graylog para la gestión centralizada de logs
JVM Reactive Programming
Cuckoo sandbox
Apache, getting the best version
Overview atlas (1)
Alternativas a Rails para sitios y servicios web ultraligeros
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
HoneyCon 2020: Hacking con ZAP
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
Armitage pruebas
Publicidad

Similar a Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10 (20)

PDF
OWASP Top 10 101 en Java EE
PDF
Web cryptography
PPTX
Seguridad web para desarrolladores - OWASP
ODP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
PPT
Seguridad en el Desarrollo de Aplicaciones Web PHP
PPT
J2 Ee Para Seres Humanos Slides
PPTX
POO Y CONFIGURACION API REST FRAMEWORK DJANGO.pptx
PPTX
Azure API Management
PDF
Java 8, tópicos de estudio para el examen upgrade
PPTX
Temas owasp
PPTX
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
PPTX
Aplicaciones escalables en Azure
PPTX
ASP.NET MVC
PDF
OWASP Spain: Protection and Verification of Business Logic Flaws
PDF
Seguridad en el Ciclo de Vida del Software
PDF
Code Igniter
PPTX
Gapand2017 rediscahe
PPTX
Mejores prácticas desarrollo de base de datos
PDF
OWASP Top 10 2017
PPT
Arquitectura
OWASP Top 10 101 en Java EE
Web cryptography
Seguridad web para desarrolladores - OWASP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHP
J2 Ee Para Seres Humanos Slides
POO Y CONFIGURACION API REST FRAMEWORK DJANGO.pptx
Azure API Management
Java 8, tópicos de estudio para el examen upgrade
Temas owasp
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
Aplicaciones escalables en Azure
ASP.NET MVC
OWASP Spain: Protection and Verification of Business Logic Flaws
Seguridad en el Ciclo de Vida del Software
Code Igniter
Gapand2017 rediscahe
Mejores prácticas desarrollo de base de datos
OWASP Top 10 2017
Arquitectura
Publicidad

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

PDF
Introducción al análisis de datos
PDF
From traditional to GitOps
PDF
De Java 8 a Java 17
PDF
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
PDF
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
PDF
Design Patterns para Microsserviços com MicroProfile
PDF
MicroProfile benefits for your monolithic applications
PDF
Consejos y el camino del desarrollador de software
PDF
De Java 8 ate Java 14
PDF
Programación con ECMA6 y TypeScript
PDF
De Java 8 a Java 11 y 14
PDF
MicroProfile benefits for monolitic applications
PDF
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
PDF
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
PDF
Eclipse MicroProfile para el desarrollador ocupado
PDF
Eclipse MicroProfile para o desenvolvedor ocupado
PDF
Eclipse MicroProfile metrics: Practical use cases
PDF
Microservicios con Jakarta EE y Eclipse MicroProfile
Introducción al análisis de datos
From traditional to GitOps
De Java 8 a Java 17
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Design Patterns para Microsserviços com MicroProfile
MicroProfile benefits for your monolithic applications
Consejos y el camino del desarrollador de software
De Java 8 ate Java 14
Programación con ECMA6 y TypeScript
De Java 8 a Java 11 y 14
MicroProfile benefits for monolitic applications
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Eclipse MicroProfile para el desarrollador ocupado
Eclipse MicroProfile para o desenvolvedor ocupado
Eclipse MicroProfile metrics: Practical use cases
Microservicios con Jakarta EE y Eclipse MicroProfile

Último (20)

PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PDF
capacitación de aire acondicionado Bgh r 410
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
DOCX
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
PPTX
modulo seguimiento 1 para iniciantes del
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
PPTX
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
DOCX
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
PPTX
Uso responsable de la tecnología - EEST N°1
PPTX
ccna: redes de nat ipv4 stharlling cande
PDF
Distribucion de frecuencia exel (1).pdf
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PDF
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PDF
Taller tecnológico Michelle lobo Velasquez
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
DOCX
Guía 5. Test de orientación Vocacional 2.docx
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
capacitación de aire acondicionado Bgh r 410
Presentacion de Alba Curso Auditores Internos ISO 19011
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
modulo seguimiento 1 para iniciantes del
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
Uso responsable de la tecnología - EEST N°1
ccna: redes de nat ipv4 stharlling cande
Distribucion de frecuencia exel (1).pdf
informe_fichas1y2_corregido.docx (2) (1).pdf
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
Taller tecnológico Michelle lobo Velasquez
Documental Beyond the Code (Dossier Presentación - 2.0)
Guía 5. Test de orientación Vocacional 2.docx

Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10

  • 1. Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10 Víctor Orozco - @tuxtor 17 de mayo de 2020 Academik 1
  • 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 2
  • 3. ¿Java? • Lenguaje • VM • Bibliotecas/API El conjunto es la plataforma Java 3
  • 4. ¿Java? • Lenguaje • VM • Bibliotecas/API El conjunto es la plataforma Java (TM) 3
  • 11. Bibliotecas ¿Cual? • Apache Shiro • Spring Security • OACC • Keycloak • JGuard • JACC • SoteriaRI • MicroProfile JWT . . . 9
  • 12. Tecnologias Web Render en servidor • JSF (Icefaces, Primefaces) • GWT • JSP • Servlets • Vaadin • Struts • Spring MVC 10
  • 13. Tecnologias Web Render en servidor • JSF (Icefaces, Primefaces) • GWT • JSP • Servlets • Vaadin • Struts • Spring MVC Render en cliente • Angular • React • Knockout (Oracle JET) • Vue 10
  • 14. 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 10
  • 16. JavaEE 8 • Mejor integración de JSF con CDI • Mejor integración de JMS con CDI • HTTP/2 • JSON-B • Security • JAX-RS Reactivo 12
  • 18. EE vs OWASP Top 10
  • 19. Advertencia • Visto en N desarrollos • Un punto de inicio • Informar 14
  • 20. 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://owasp.org/www-project-top-ten/ 15
  • 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 16
  • 22. 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 17
  • 23. JavaEE - A1 - Injection Peligro 1 String query = "SELECT p FROM AdmPhrase p " + 2 "where p.author LIKE " + autor + 3 "and p.phrase LIKE " + phrase; Mejor 1 String query = "SELECT p FROM AdmPhrase p " + 2 "where p.author LIKE :author " + 3 "and p.phrase LIKE :phrase" ; 4 5 return em. createQuery ( query , AdmPhrase . class ) 6 . setParameter ("author" , author ) 7 . setParameter ("phrase" , phrase ) 8 . getResultList ( ) ; 18
  • 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 unicamente 19
  • 25. JavaEE - A2-Broken Authentication and Session Management App rest normal 1 public class DemoinfosecRestApplication extends Application {} Activar mecanismo de autenticación (MicroProfile JWT) 1 @LoginConfig(authMethod = "MP-JWT") 2 @DeclareRoles({RolesEnum.Constants.MOBILE_VALUE, RolesEnum. Constants.WEB_VALUE}) 3 public class DemoinfosecRestApplication extends Application {} 20
  • 26. 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) 21
  • 27. 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, SoteriaRI y MicroProfile security 22
  • 28. JavaEE - A5-Broken Access Control Endpoint normal 1 @GET 2 @Path("/{id:[0-9][0-9]*}") 3 public AdmPhrase findById(@PathParam("id") Long id) { 4 return admPhraseRepository.findById(id); 5 } Endpoint con RBAC 1 @GET 2 @Path("/{id:[0-9][0-9]*}") 3 @RolesAllowed({RolesEnum.Constants.MOBILE_VALUE, RolesEnum. Constants.WEB_VALUE}) 4 public AdmPhrase findById(@PathParam("id") Long id) { 5 return admPhraseRepository.findById(id); 6 } 23
  • 29. 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 y actualizar runtime • Firewall • RBAC • Evitar certificados autofirmados en entornos no controlados • JVM tipo server 24
  • 30. 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 • Sanitización 25
  • 31. 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, GitHub Security • Servicios de análisis estático (Sonar) 26
  • 32. JavaEE - A9-Using components with known vulnerabilities 27
  • 33. 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 28
  • 34. Demo
  • 36. Demo Payara 5 • Proveedor de tokens https://github.com/tuxtor/microjwt-provider/ • API protegida https://github.com/tuxtor/demoinfosec-service-b/ 30
  • 37. Víctor Orozco • vorozco@nabenik.com • @tuxtor • http://vorozco.com • http://tuxtor.shekalug.org This work is licensed under Creative Commons Attribution- NonCommercial-ShareAlike 3.0 Guatemala (CC BY-NC-SA 3.0 GT). 31
  • 38. 32