I Meetup OWASP - Seguridad en NodeJS
-
Upload
raul-requero-garcia -
Category
Software
-
view
350 -
download
0
Transcript of I Meetup OWASP - Seguridad en NodeJS
![Page 1: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/1.jpg)
Seguridad en NodeJSOWASP Top 10 Vulnerabilities
![Page 2: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/2.jpg)
Acerca de míRaúl Requero
Arquitecto en Vizzuality
Coorganizador de OWASP Madrid
https://github.com/rrequero
@rrequero
![Page 3: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/3.jpg)
OWASP Top 10 aplicado a NodeJS
Acerca de la charla de hoy…
![Page 4: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/4.jpg)
OWASP Top 102013
![Page 5: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/5.jpg)
A1-InjectionA2-Broken Authentication and Session Management
A3 - XSS
A4-Insecure Direct Object References
A5-Security Misconfiguration
A6-Sensitive Data Exposure
A7-Access Control A8-Cross-Site Request Forgery (CSRF)
A9-Using Components with Known Vulnerabilities
A10-Unvalidated Redirects and Forwards
![Page 6: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/6.jpg)
https://www.owasp.org/index.php/Top_10_2013-Top_10
![Page 7: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/7.jpg)
OWASP Node Goat Project
https://github.com/OWASP/NodeGoat
![Page 8: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/8.jpg)
A1-Injection
![Page 9: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/9.jpg)
A1 - Injection
Nunca ejecutar querys con parámetros del front sin comprobarlos
Utilizar los sistemas de generación de querys de los orm’s
![Page 10: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/10.jpg)
A1 - Injection
![Page 11: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/11.jpg)
A1 - Injection
![Page 12: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/12.jpg)
A2-Broken Authentication and Session Management
![Page 13: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/13.jpg)
A2 - Broken Authentication and Session Management
No guardar las password en claro en la bbdd
No enviar el session id en la url
![Page 14: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/14.jpg)
Usar bcrypt y guardar las password encriptada
A2 - Broken Authentication and Session Management
![Page 15: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/15.jpg)
A2 - Broken Authentication and Session Management
![Page 16: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/16.jpg)
A3 - XSS
![Page 17: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/17.jpg)
A3-Cross-Site Scripting (XSS)
Escapar siempre el texto que envía el usuario, al guardarlo y al mostrarlo en el html
![Page 18: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/18.jpg)
![Page 19: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/19.jpg)
Plantillas en servidor
React y Angular escapan todo el contenido que pintan por defecto para prevenir un XSS
A3-Cross-Site Scripting (XSS)
![Page 20: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/20.jpg)
A4-Insecure Direct Object References
![Page 21: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/21.jpg)
A4-Insecure Direct Object References
No expongas información sensible de la implementación al usuario.
Ejemplo: No envíes el id del usuario logado en la url para utilizarlo después.
![Page 22: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/22.jpg)
A4-Insecure Direct Object References
Solución: Obtén de la sesión el dato que necesitas (en el caso de datos del usuario logado)
![Page 23: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/23.jpg)
A5-Security Misconfiguration
![Page 24: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/24.jpg)
A5 - Security Misconfiguration
No expongas más información de tu aplicación de la estrictamente necesaria
Ejemplo: http://www.mrlooquer.com/list?q=%22X-Powered-By:%20Express%22&page=2
![Page 25: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/25.jpg)
A5-Security Misconfiguration
https://github.com/helmetjs
![Page 26: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/26.jpg)
A6-Sensitive Data Exposure
![Page 27: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/27.jpg)
A6 - Sensitive Data Exposure
Encripta todas las comunicaciones con tu aplicación para evitar robos de información
Guarda unicamente lo estrictamente necesario y la información necesaria y sensible guardala encriptada.
![Page 28: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/28.jpg)
A6 - Sensitive Data Exposure
![Page 29: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/29.jpg)
A7 - Access Control
![Page 30: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/30.jpg)
A7 - Access Control
Securiza el acceso a los endpoints de la aplicación según el rol que puede acceder
![Page 31: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/31.jpg)
A7 - Access Control
![Page 32: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/32.jpg)
A8-Cross-Site Request Forgery (CSRF)
![Page 33: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/33.jpg)
A8 - Cross-Site Request Forgery (CSRF)
Agrega un token a todas tus llamadas POST, PUT y PATCH que identifican el origen de la llamada.
De este modo evitaras que un código malicioso pueda hacer llamadas a tus endpoints que tu no controles.
![Page 34: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/34.jpg)
A8 - Cross-Site Request Forgery (CSRF)
https://github.com/expressjs/csurf
![Page 35: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/35.jpg)
A9-Using Components with Known Vulnerabilities
![Page 36: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/36.jpg)
A9 - Using Components with Known Vulnerabilities
No ejecutes el servidor con permisos de root
Usa JSHint/JSLint
Intenta utilizar librerías que estén suficientemente testadas
Mantén actualizadas las librerías que utilizas para evitar posibles vulnerabilidades en las librerías
Utiliza el paquete nsp y chequea regularmente las librerías que utilizas en busca de posibles vulnerabilidades
https://nodesecurity.io/opensource
![Page 37: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/37.jpg)
A10-Unvalidated Redirects and Forwards
![Page 38: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/38.jpg)
A10 - Unvalidated Redirects and Forwards
No hagas un redirect al usuario a urls que vienen definidas en query params, etc sin chequear el destino
Intenta siempre que las urls donde redirigas no se estén definidas en un entorno donde puedan ser cambiadas por un código malicioso
![Page 39: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/39.jpg)
¿Preguntas?
![Page 40: I Meetup OWASP - Seguridad en NodeJS](https://reader035.fdocuments.net/reader035/viewer/2022062503/588336201a28abaf6f8b601f/html5/thumbnails/40.jpg)