No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Seguridad de aplicaciones

8/37
Recursos

¿Cómo podemos asegurar nuestras aplicaciones de software?

En la era digital, proteger nuestras aplicaciones es crucial. Las amenazas son constantes y evolucionan, por lo que es esencial implementar protocolos que nos aseguren contra ataques potenciales. La seguridad de aplicaciones es una ciencia en sí, preocupada por incorporar prácticas de seguridad a lo largo del ciclo de vida del software, evitando futuros incidentes de seguridad.

¿Qué es el ciclo de desarrollo seguro de software?

El ciclo de desarrollo seguro es un conjunto de pasos sistemáticos diseñados para crear software tanto seguro como funcional. A continuación, se detalla cada fase de este ciclo:

  1. Recopilación de requerimientos: Definir qué se espera de la aplicación, identificando los requerimientos funcionales y no funcionales.
  2. Diseño: Planificación de componentes, arquitectura y comunicación. Seleccionamos el lenguaje y frameworks que se adapten a las necesidades del proyecto.
  3. Desarrollo: Fase de codificación y programación efectiva.
  4. Pruebas: Realización de pruebas unitarias, funcionales, de integración y de seguridad contra ataques como inyección SQL o cross-site scripting.
  5. Despliegue: Publicación de la aplicación para su uso público.
  6. Operaciones: Mantenimiento, corrección de errores y agregación de nuevas funcionalidades.

Cada fase exige una consideración minuciosa sobre la seguridad para eliminar vulnerabilidades antes de que puedan ser explotadas.

¿Cuáles son los principales controles de seguridad?

Existen diversos controles de seguridad que nos permiten proteger las aplicaciones más eficazmente:

  • OWASP Top 10: Capacitación de desarrolladores en los errores de seguridad más comunes, ofreciendo soluciones para evitarlos.
  • Análisis estático de código: Evaluación del código sin compilar para detectar posibles fallas de seguridad. Herramientas como SonarQube y GitHub ayudan en esta tarea.
  • Análisis dinámico del código: Tras la compilación, probamos la aplicación bajo condiciones reales y posibles ataques para evaluar su resistencia.
  • Arquitectura segura: Diseño de un sistema donde todos los componentes y comunicaciones son seguros.
  • Modelo de madurez OWASP SAM: Un framework que permite a las organizaciones evaluar su nivel de seguridad e implementar estrategias para mitigar riesgos.

¿Cómo se implementan las prácticas de seguridad?

Incorporar seguridad en el proceso de desarrollo no es opcional si queremos un software robusto. Durante la recopilación de requerimientos, debemos especificar las amenazas de las que queremos protegernos. En la fase de diseño, aseguramos que la arquitectura y las comunicaciones sean blindadas. Utilizamos tecnologías y frameworks que nos brinden protección desde la fase de desarrollo en adelante. Todo este esfuerzo se traduce en la creación de un sistema seguro y eficiente.

¿Cuáles son los estándares de seguridad en el ámbito de software?

Para asegurar que nuestras aplicaciones cumplan con las mejores prácticas de seguridad, es esencial familiarizarnos con estándares reconocidos internacionalmente:

  • ISO: Conjunto de estándares que aseguran calidad y seguridad en diversas industrias.
  • NIST: Proporciona directrices precisas para manejar la seguridad de la información.
  • OWASP: Sus estándares son centrados en proteger aplicaciones web enfrentándose a amenazas comunes.

Al tomar estos estándares como referencia, podemos asegurar que nuestro software cumpla con las expectativas de seguridad del mercado. Incluir seguridad desde la concepción del proyecto hasta su ejecución es esencial para mitigar riesgos. Implementar controles y estándares reconocidos llevará a sus aplicaciones a un nivel superior de eficiencia y seguridad.

Aportes 23

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

OWASP top 10 da para un curso completo, ponganse las pilas Platzi…

Seguridad de aplicaciones:

Ciclo de desarrollo seguro:
Recopilación de los requerimientos de la aplicación (Funcionales y no funcionale) => Diseño (Componentes de la app, arquitectura, comunicacion de componentes, lenguajes, frameworks) => Desarrollo (programacion de la app) => Pruebas (unitarias, funcionales, de seguridad con ataques comunes como inyeccion de codigo, etc ) => Despliegue (Publicacion de la app ) => Operaciones (Mantenimiento continuo y agregar funcionalidades para los usuarios) … Y se vuelve a repetir el ciclo desde Recopilacion de los requerimientos.

Los principales controles de seguridad que se suelen aplicar son:

  • Entrenamiento OWASP Top 10: como protegernos del top 10 fallos de seguridad mas comunes
  • Análisis estatico de código: Analizar el codigo sin compilar linea por linea con herramientas como SonarQube y Git Hub
  • Análisis dinámico de código: Con el codigo ya compilado y corriendo. Intentar forzar fallos.
  • Arquitecturas seguras: Asegurarse que todos los componentes sean seguros y comunicacion correcta.
  • Modelo de Madurez (OWASP SAMM): Es un modelo que ayuda a formular e implementar una estrategia de mitigación de riesgos basandose en 5 pilares: Governance, Design, Implementation, Verification, Operations.

Estandares mas conocidos de seguridad:

  • CERT Secure Coding
  • ISO/IEC 27034-1:2011
  • ISO/IEC TR 24772:2013
  • NIST Special Publication 800-53
  • OWASP ASVS: Web Application Security Verification Standard

Seguridad de aplicaciones

Es la rama de la ciberseguridad que busca introducir buenas prácticas al ciclo de desarrollo del software. La idea es que si se siguen buenas prácticas en cada etapa (requerimientos, diseño, desarrollo, testing, etc) se reducirán los riesgos de seguridad.

Los controles de seguridad que pueden ser utilizados son:

  • Entrenamiento en OWASP Top 10: Brinda los conocimientos necesarios para protegerse de los 10 fallos de seguridad mas comunes.
  • Análisis estatico de código: Revisión de código línea a línea sin compilar. SonarQube y GitHub brindan herramientas para esto.
    Análisis dinámico de código: Revisión de la aplicación en ejecución, intentando generar fallos de seguridad como SQL Injection o Cross-Site Scripting.
    Arquitecturas seguras: Verificar que todas las comunicaciones entre componentes sea correcta y segura.

También pueden usarse frameworks como OWASP SAMM, el cual permite determinar el nivel de madurez de la seguridad de la organización y ayuda a implementar una estrategia para mitigar los riesgos. En pocas palabras, define 5 pilares a revisar mediante un cuestionario.

Estándares:

  • CERT Secure Coding
  • ISO/IEC 27034-1:2011
  • ISO/IEC TR 24772:2013
  • NIST Special Publication 800-53
  • OWASP ASVS: Web Application Security Verification Standard

La seguridad de aplicaciones está relacionada con cada fase del ciclo de vida del desarrollo seguro de software, ya que es importante tener en cuenta la seguridad a lo largo de todo el proceso de desarrollo de software.

  1. En la fase de análisis de requisitos o Requerimientos, es importante considerar cuáles son los requisitos de seguridad del software y cómo se pueden cumplir. Por ejemplo, es posible que sea necesario incluir autenticación de usuario o encriptación de datos para cumplir con los requisitos de seguridad.

  2. En la fase de diseño, es importante diseñar el software de manera segura, teniendo en cuenta factores como la arquitectura del sistema, la protección de datos y la protección contra ataques de inyección de código.

  3. En la fase de implementación o desarrollo, es importante asegurarse de que el código cumpla con los estándares de seguridad y de que se realicen pruebas de seguridad adecuadas.

  4. En la fase de pruebas, es importante realizar pruebas exhaustivas para asegurar que el software es seguro y está libre de vulnerabilidades.

  5. En la fase de despliegue, es importante asegurarse de que el software se instala y se configura de manera segura en los sistemas de producción.

  6. En la fase de operaciones o mantenimiento, es importante seguir monitoreando la seguridad del software y realizar actualizaciones y mejoras de seguridad según sea necesario. Esto puede incluir la instalación de parches de seguridad, la actualización de versiones del software y la realización de pruebas de seguridad periódicas para identificar vulnerabilidades.

Me parece excelente este punto, mucha veces no entienden que un dev debe saber de seguridad y tener un código limpio libre de amenazas

En que momento sugiere usar OWASP, es decir, para cualquier desarrollo sin importar la complejidad o cómo sería?

Actualmente la entidad donde trabajo debe gestionar plataformas de ciberseguridad con las cuales realiza actividades de control a través de una serie de herramientas que debe mantener actualizadas:
• Proxy: Mediante una adecuada configuración de Proxy, el WebMaster de la entidad establece los controles de filtros de navegación de cada empleado con el cual se restringe y limita el acceso a internet de los empleados.
• Antivirus: A través de herramientas como Windows Defender y Symantec EndPoint Protection se controla la base de datos de antivirus a los que la entidad puede verse expuesta.
• Boardgent: Se tiene un control establecido para que solo las áreas autorizadas para dar soporte a los usuarios puedan tener acceso a la BIOS de los PC de usuario final.

En la empresa en la cual trabajo se ha implementado un control de seguridad el, cual consiste en el monitoreo de posibles incidente de seguridad a través de conexiones a la red externa. También se cuenta con seguimientos a los hallazgos identificados en pruebas de vulnerabilidad y penetración en los sistemas de información e infraestructura tecnológica.

La ciberseguridad tiene muchas aplicaciones prácticas en la vida real, y en las organizaciones debería de ser una de las ramas que mayor cuidado.
En las empresas de desarrollo implementar las buenas prácticas para tener un mejor código y sobre todo, para proteger la aplicación que se esta desarrollando de posibles ataques, eso es fundamentar, cada día aumentan los atacantes y los niveles de protección deben de aumentar mucho más.
Las empresas deben de tener controles rigurosos para mejorar los sistemas y así brindar soluciones eficientes. Es fundamentar proteger los pilares de seguridad de la información, y aquí hablamos de la disponibilidad, integridad y confidencialidad.
Disponibilidad: qué la información esté disponible en todo momento y cuando sea requerida.
Integridad: Qué la información no sea manipulada sin autorización de las personas propietarias o autorizadas. La información se debe preservar tal como se encuentra, y solo puede ser modificada por personas autorizadas.
Confidencialidad: La información solo debe de estar disponible para las personas con autorización para ver o disponer de dicha información, protegiendo que las personas que no tiene interés en la misma tengan acceso y aquí es donde se deben de aplicar los pilares de seguridad y las buenas prácticas.

Recomiendo Veracode para análisis estáticos y dinámicos

Ataques comunes que se pueden detectar en la fase de Pruebas: * Inyección SQL * Inyección de código * Cross-site scripting
Gracias
soy freelnace y no llevo mucho, entonces de momento no tengo un claro control de seguridad, pero esperar que depronto e este curso, se pueda tratar de aplicar. disculpen Nunca pares de aprender y que Dios olos bendiga
Les dejo la versión más reciente (2021) de OWASP Top 10 <https://owasp.org/Top10/es/>

Seguridad de aplicaciones

Es la rama de la seguridad que se preocupa por introducir prácticas seguras al ciclo de desarrollo de software. Busca mejorar las prácticas de seguridad y así prevenir incidentes de seguridad en las aplicaciones.

En cada una de las fases, es importante tener la seguridad en mente.

Controles de seguridad

  • Entrenamiento OWASP Top 10: Es una organización que se preocupa por capacitar a desarrolladores en la seguridad de aplicaciones. Tiene muchos productos, el mas reconocido es el TOP 10 (fallas de seguridad más comunes)
  • Análisis estático de código: Se trata de analizar el código antes de ejecutarlo. Existen herramientas para probarlo.
  • Análisis dinámico de código: Se trata de probar el código en ejecución.
  • Arquitectura seguras: Verificar que todos los componentes sean seguros y que funcionen correctamente en conjunto.

OWASP SAMM

Modelo de madurez de aseguramiento de software (SAMM): Es un framework abierto que ayuda a las organizaciones a formular e implementar una estrategia para la seguridad del software que se ajuste a los riesgos que enfrente la organización.

  • Este framework tiene 5 pilares que llaman funciones de negocio. Cada uno tiene 3 prácticas de seguridad y cada práctica, tienes 2 streams.
  • Es un cuestionario en donde nos hacen preguntas para medir que tanto estamos cumpliendo con las normativas o las prácticas de seguridad.

Ciclo de vida del desarrollo seguro del Software (SDLC):
Un ciclo de desarrollo seguro es un marco para que todo el proceso de construcción de un sistema, o aplicación, se realice de forma segura. Para ello, se realizan pruebas de seguridad durante todas las fases de desarrollo.

La seguridad de aplicaciones se enfoca en introducir prácticas seguras en el ciclo de desarrollo de software para prevenir incidentes de seguridad. Los controles de seguridad incluyen entrenamiento OWASP Top 10, análisis estático y dinámico de código, arquitecturas seguras y el modelo de madurez OWASP SAMM. Los estándares incluyen CERT Secure Coding, ISO/IEC 27034-1:2011, ISO/IEC TR 24772:2013, NIST Special Publication 800-53 y OWASP ASVS.

Modelo de madurez
(OWASP SAMM)

El modelo de madurez de aseguramiento de Sofware (SAMM) es un framework abierto que ayuda a las organizaciones a formular e implementar una estrategia para la seguridad del software que se ajuste a los riesgos que enfrente la organización

Ciclo de vida del desarrollo seguro de software

• Requerimientos.
• Diseño.
• Desarrollo.
• Pruebas
• Despliegue
• Operaciones

¿Qué control de seguridad te gustaría aplicar en tu empresa?
Respuesta:

  1. Entrenamiento para los desarrolladores de la Empresa en OWASP TOP10.
  2. Análisis estático de código
  3. Análisis dinámico de código
  4. Arquitecturas Seguras
  5. El modelo de madurez de aseguramiento de software SAMM