Recursos

En esta página comparto recursos sobre desarrollo seguro y auditorías de código. Puedes encontrar las guías de OWASP que definen el estándar a seguir y también otros recursos para usar a modo de consulta en una revisión de código concreta.

Guías


OWASP Code Review Guide

Guía de auditoría de código o análisis de estático de código (SAST). OWASP es el estándar y referencia internacional en lo que a desarrollo seguro y auditorías de código se refiere. Como cualquier estándar es muy extenso y puede hacerse pesado al principio, pero los conceptos base son lo importante y sin duda es la guia a seguir a largo plazo en la evolución del desarrollo seguro.

Tiene dos versiones, la v1.1 que es la oficial en versión final de 2008, y la v2.0 que actualmente está en desarrollo con su última actualización de 2017. En la práctica son muy diferentes entre sí y según el objetivo puede interesarte consultar una u otra.


OWASP Developer Guide

Guía de desarrollo seguro de software.

https://github.com/OWASP/DevGuide/tree/dc5a2977a4797d9b98486417a5527b9f15d8a251/DevGuide2.0.1


OWASP Testing Guide v4

Guía de auditoría dinámica o pentest de aplicaciones web (DAST).

https://www.owasp.org/images/1/19/OTGv4.pdf


OWASP Mobile Security Testing Guide (MSTG) – 1.1.3

Guía de auditoría dinámica o pentest de aplicaciones móviles (DAST).

https://owasp.org/www-project-mobile-security-testing-guide

Fuentes de consulta


CVE – Common Vulnerabilities and Exposures

Registro público de vulnerabilidades de software conocidas. Es la metodología de referencia para gestionar vulnerabilidades, estas quedan registradas con número identificativo, descripción, criticidad, referencias públicas, etc…

https://cve.mitre.org/

https://www.cvedetails.com/


CWE – Common Weakness Enumeration

Repositorio de debilidades del desarrollo de software. Este repositorio afronta las posibles debilidades y potenciales vulnerabilidades de forma genérica. No para un software en una versión concreta como CVE, si no para cualquier desarrollo de software.

https://cwe.mitre.org/

Este interesante repositorio define el estándar para organizar las debilidades del software. Para mi es la mejor herramienta para catalogar el trabajo en desarrollo seguro. Con el puedes catalogar con un código concreto cada vulnerabilidad o recomendación que redactes en un informe de resultados. Además puede servirte para coger como plantilla gran parte del texto a redactar. A continuación un ejemplo de debilidad muy común:

https://cwe.mitre.org/data/definitions/20.html


OWASP Cheat sheet series project

Conjunto de cheat sheet con información sobre cada aspecto concreto de la seguridad de aplicaciones.

https://cheatsheetseries.owasp.org/


OWASP Top Ten Project

Extracto con los diez riesgos considerados más graves en seguridad de aplicaciones web.

https://owasp.org/www-project-top-ten/


OWASP Mobile Security Top 10 project

Extracto con los diez riesgos considerados más graves en seguridad de aplicaciones móviles.

https://owasp.org/www-project-mobile-top-10/


OWASP API Security Top 10 project

Extracto con los diez riesgos considerados más graves en seguridad de interfaces de programación de aplicaciones.

https://owasp.org/www-project-api-security/


SonarSource rules (SonarQube)

Repositorio de reglas de análisis estático de código (SAST) que usa SonarQube. Puedes consultarlas por lenguaje de programación mediante un buscador. La mayoría son de control de calidad sin embargo también hay muchas de control de seguridad.

https://rules.sonarsource.com

Es muy práctico para encontrar rápidamente snippets de código, con el ejemplo de código no válido (Noncompliant Code Example) y su corrección (Compliant Solution). Tiene más de 3400 reglas en 27 lenguajes de programación lo que lo convierte en el mayor repositorio de este tipo. Las reglas que vienen son las básicas de SonarQube, no incluye las que pertenecen a plugins comerciales. A continuación un ejemplo de búsqueda:

https://rules.sonarsource.com/java/RSPEC-3649?search=sqli


OWASP Application Security Verification Standard Project

Lista de requisitos de seguridad principales a tener en cuenta en desarrollo de software. A tener en cuenta en análisis, diseño, desarrollo y auditorías.

https://github.com/OWASP/ASVS/raw/master/4.0/OWASP%20Application%20Security%20Verification%20Standard%204.0-en.pdf


OWASP Mobile Application Security Verification Standard (MASVS) version 1.1.4

Lista de requisitos de seguridad principales enfocada a seguridad móvil. A tener en cuenta en análisis, diseño, desarrollo y auditorías.

https://github.com/OWASP/owasp-masvs/releases/download/1.1.4/OWASP_Mobile_AppSec_Verification_Standard_1.1.4_Document.pdf


OWASP Security Knowledge Framework

Esta aplicación web a modo de framework, nos ofrece de forma interactiva: 

  • Revisar un checklist de cumplimiento de los requisitos descritos en ASVS
  • Consulta sobre la descripción y respuesta para muchos tipos de vulnerabilidad
  • Consultar snippets de código de ejemplo para fortificar la aplicación según el tipo de vulnerabilidad

Tiene apartado para los siguientes lenguajes de programación PHP, C#, Java, python (flask y django), Ruby y Go.

https://www.owasp.org/index.php/OWASP_Security_Knowledge_Framework

https://demo.securityknowledgeframework.org/dashboard (user: admin, pass: test-skf)


OWASP Proactive Controls

Lista con los diez controles de seguridad principales a tener en cuenta para garantizar seguridad de forma proactiva en un desarrollo de software.

https://www.owasp.org/images/b/bc/OWASP_Top_10_Proactive_Controls_V3.pdf


OWASP AppSensor Project

Metodología de fortificación de componentes software reforzando la trazabilidad de estos. Se basa en la temprana detección de incidentes de seguridad y la respuesta a estos.

https://www.owasp.org/images/0/02/Owasp-appsensor-guide-v2.pdf


OWASP SAMM Project

Aproximación a nivel estratégico para el desarrollo seguro de software en una organización. Se basa en tres niveles de madurez, enfocados en la garantía de seguridad del proceso de desarrollo de software.

https://www.owasp.org/index.php/OWASP_SAMM_Project

error: