SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
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
 
Jvmmx docker jvm
Jvmmx docker jvmJvmmx docker jvm
Jvmmx docker jvmsuperserch
 
40 Novedades de JavaSE 9
40 Novedades de JavaSE 940 Novedades de JavaSE 9
40 Novedades de JavaSE 9Alexis Lopez
 
Microservicios funcionales con Java 8, Java EE y Payara Micro
Microservicios funcionales con Java 8, Java EE y Payara MicroMicroservicios funcionales con Java 8, Java EE y Payara Micro
Microservicios funcionales con Java 8, Java EE y Payara MicroVí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
 
Webinar usando graylog para la gestión centralizada de logs
Webinar usando graylog para la gestión centralizada de logsWebinar usando graylog para la gestión centralizada de logs
Webinar usando graylog para la gestión centralizada de logsatSistemas
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandboxTensor
 
Apache, getting the best version
Apache, getting the best versionApache, getting the best version
Apache, getting the best versionIvan Ortega
 
Alternativas a Rails para sitios y servicios web ultraligeros
Alternativas a Rails para sitios y  servicios web ultraligerosAlternativas a Rails para sitios y  servicios web ultraligeros
Alternativas a Rails para sitios y servicios web ultraligeroshappywebcoder
 
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"Dani Adastra
 
HoneyCon 2020: Hacking con ZAP
HoneyCon 2020: Hacking con ZAPHoneyCon 2020: Hacking con ZAP
HoneyCon 2020: Hacking con ZAPDani Adastra
 
Alta disponibilidad con Replicas de MySQL en AWS
Alta disponibilidad con Replicas de MySQL en AWSAlta disponibilidad con Replicas de MySQL en AWS
Alta disponibilidad con Replicas de MySQL en AWSNicola Strappazzon C.
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónLuis Ruiz Pavón
 
Armitage pruebas
Armitage pruebasArmitage pruebas
Armitage pruebasTensor
 

Was ist angesagt? (20)

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
 
Java EE moderno, de monolitos a Payara Micro
Java EE moderno, de monolitos a Payara MicroJava EE moderno, de monolitos a Payara Micro
Java EE moderno, de monolitos a Payara Micro
 
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
 
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
 
Jvmmx docker jvm
Jvmmx docker jvmJvmmx docker jvm
Jvmmx docker jvm
 
40 Novedades de JavaSE 9
40 Novedades de JavaSE 940 Novedades de JavaSE 9
40 Novedades de JavaSE 9
 
Microservicios funcionales con Java 8, Java EE y Payara Micro
Microservicios funcionales con Java 8, Java EE y Payara MicroMicroservicios funcionales con Java 8, Java EE y Payara Micro
Microservicios funcionales con Java 8, Java EE y Payara Micro
 
Gestión de proyectos con Maven
Gestión de proyectos con MavenGestión de proyectos con Maven
Gestión de proyectos con Maven
 
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
 
Webinar usando graylog para la gestión centralizada de logs
Webinar usando graylog para la gestión centralizada de logsWebinar usando graylog para la gestión centralizada de logs
Webinar usando graylog para la gestión centralizada de logs
 
JVM Reactive Programming
JVM Reactive ProgrammingJVM Reactive Programming
JVM Reactive Programming
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Apache, getting the best version
Apache, getting the best versionApache, getting the best version
Apache, getting the best version
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Alternativas a Rails para sitios y servicios web ultraligeros
Alternativas a Rails para sitios y  servicios web ultraligerosAlternativas a Rails para sitios y  servicios web ultraligeros
Alternativas a Rails para sitios y servicios web ultraligeros
 
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
 
HoneyCon 2020: Hacking con ZAP
HoneyCon 2020: Hacking con ZAPHoneyCon 2020: Hacking con ZAP
HoneyCon 2020: Hacking con ZAP
 
Alta disponibilidad con Replicas de MySQL en AWS
Alta disponibilidad con Replicas de MySQL en AWSAlta disponibilidad con Replicas de MySQL en AWS
Alta disponibilidad con Replicas de MySQL en AWS
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
 
Armitage pruebas
Armitage pruebasArmitage pruebas
Armitage pruebas
 

Ähnlich wie Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10

Seguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPSeguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPMarcos Harasimowicz
 
[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
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slidesmundojava
 
Java 8, tópicos de estudio para el examen upgrade
Java 8, tópicos de estudio para el examen upgradeJava 8, tópicos de estudio para el examen upgrade
Java 8, tópicos de estudio para el examen upgradeSoftware Guru
 
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...Alejandro Ramos
 
Aplicaciones escalables en Azure
Aplicaciones escalables en AzureAplicaciones escalables en Azure
Aplicaciones escalables en AzureGermán Küber
 
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
 
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
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Eduardo Castro
 
OWASP Top 10 2017
OWASP Top 10 2017OWASP Top 10 2017
OWASP Top 10 2017superserch
 

Ähnlich wie Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10 (20)

OWASP Top 10 101 en Java EE
OWASP Top 10 101 en Java EEOWASP Top 10 101 en Java EE
OWASP Top 10 101 en Java EE
 
Web cryptography
Web cryptographyWeb cryptography
Web cryptography
 
Seguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPSeguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - 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
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slides
 
Azure API Management
Azure API ManagementAzure API Management
Azure API Management
 
Java 8, tópicos de estudio para el examen upgrade
Java 8, tópicos de estudio para el examen upgradeJava 8, tópicos de estudio para el examen upgrade
Java 8, tópicos de estudio para el examen upgrade
 
Temas owasp
Temas owaspTemas owasp
Temas owasp
 
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
 
Aplicaciones escalables en Azure
Aplicaciones escalables en AzureAplicaciones escalables en Azure
Aplicaciones escalables en Azure
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
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
 
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
 
Code Igniter
Code IgniterCode Igniter
Code Igniter
 
Gapand2017 rediscahe
Gapand2017 rediscaheGapand2017 rediscahe
Gapand2017 rediscahe
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos
 
OWASP Top 10 2017
OWASP Top 10 2017OWASP Top 10 2017
OWASP Top 10 2017
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 
Mitos y realidades de la seguridad en Java
Mitos y realidades de la seguridad en JavaMitos y realidades de la seguridad en Java
Mitos y realidades de la seguridad en Java
 

Mehr von Ví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
 
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
 
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
 
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguajeKotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguajeVíctor Leonel Orozco López
 
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem novaKotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem novaVíctor Leonel Orozco López
 
Eclipse MicroProfile para el desarrollador ocupado
Eclipse MicroProfile para el desarrollador ocupadoEclipse MicroProfile para el desarrollador ocupado
Eclipse MicroProfile para el desarrollador ocupadoVíctor Leonel Orozco López
 
Microservicios con Jakarta EE y Eclipse MicroProfile
Microservicios con Jakarta EE y Eclipse MicroProfileMicroservicios con Jakarta EE y Eclipse MicroProfile
Microservicios con Jakarta EE y Eclipse MicroProfileVíctor Leonel Orozco López
 

Mehr von Víctor Leonel Orozco López (18)

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
 
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...
 
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
 
MicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applicationsMicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applications
 
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
 
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
 
De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14
 
MicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applicationsMicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applications
 
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguajeKotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
 
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem novaKotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
 
Eclipse MicroProfile para el desarrollador ocupado
Eclipse MicroProfile para el desarrollador ocupadoEclipse MicroProfile para el desarrollador ocupado
Eclipse MicroProfile para el desarrollador ocupado
 
Eclipse MicroProfile para o desenvolvedor ocupado
Eclipse MicroProfile para o desenvolvedor ocupadoEclipse MicroProfile para o desenvolvedor ocupado
Eclipse MicroProfile para o desenvolvedor ocupado
 
Eclipse MicroProfile metrics: Practical use cases
Eclipse MicroProfile metrics: Practical use casesEclipse MicroProfile metrics: Practical use cases
Eclipse MicroProfile metrics: Practical use cases
 
Microservicios con Jakarta EE y Eclipse MicroProfile
Microservicios con Jakarta EE y Eclipse MicroProfileMicroservicios con Jakarta EE y Eclipse MicroProfile
Microservicios con Jakarta EE y Eclipse MicroProfile
 

Kürzlich hochgeladen

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Kürzlich hochgeladen (11)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

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