A tu propio ritmo

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Bootcamp

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Buscar en lecciones


IngresarEmpezar
← Regresar a lecciones
Editar en Github

Seguridad en aplicaciones

Conceptos de la seguridad en aplicaciones

Conceptos de la seguridad en aplicaciones

La seguridad de las aplicaciones se refiere a las medidas de seguridad, a nivel de aplicación, cuyo propósito es impedir el robo o el secuestro de datos o códigos dentro de la aplicación. Abarca las consideraciones de seguridad que se deben tener en cuenta al desarrollar y diseñar aplicaciones, además de los sistemas y los enfoques para proteger las aplicaciones después de distribuirlas.

La seguridad de las aplicaciones puede incluir hardware, software y procedimientos que identifican o minimizan las vulnerabilidades de seguridad. Un enrutador que impide que se vea la dirección IP de un ordenador desde Internet se puede considerar una forma de seguridad de las aplicaciones mediante hardware. Pero las medidas de seguridad que se implementan a nivel de aplicación también se suelen integrar en el software. Es el caso de un cortafuegos de aplicación que defina estrictamente qué actividades están permitidas y cuáles prohibidas. Los procedimientos pueden implicar tareas como una rutina de seguridad de aplicaciones que incluya protocolos como pruebas periódicas.

La seguridad de las aplicaciones se refiere al proceso de desarrollar, añadir y probar características de seguridad dentro de las aplicaciones para evitar vulnerabilidades de seguridad contra amenazas, tales como la modificación y el acceso no autorizados.

¿Por qué es tan importante la seguridad de las aplicaciones?

La seguridad de las aplicaciones es importante porque las aplicaciones actuales suelen estar disponibles a través de varias redes y conectadas a la cloud, lo que aumenta las vulnerabilidades a los peligros y las amenazas a la seguridad. Cada vez hay más presión y más alicientes para garantizar la seguridad no solo a nivel de la red, sino también dentro de las propias aplicaciones. Uno de los motivos es que los hackers están más interesados que antes en atacar aplicaciones. Al realizar pruebas de la seguridad de las aplicaciones, se pueden desvelar puntos débiles de las aplicaciones y ayudar a evitar este tipo de ataques.

La seguridad de aplicaciones no es una tecnología única, sino un conjunto de mejores prácticas, funciones y/o características añadidas al software de una empresa para ayudar a prevenir y resolver las amenazas de cibercriminales, brechas de datos y otros peligros.

Hay varios tipos de programas, servicios y dispositivos de seguridad de aplicaciones que puede utilizar una empresa. Firewalls, antivirus y cifrado de datos son sólo algunos ejemplos para evitar que usuarios no autorizados entren en un sistema. Si una empresa desea predecir conjuntos de datos específicos y confidenciales, puede establecer políticas de seguridad de aplicaciones únicas para esos recursos.

La seguridad de aplicaciones puede producirse en varias etapas, pero el establecimiento de mejores prácticas se hace con mayor frecuencia en las fases de desarrollo de aplicaciones. Sin embargo, las empresas también pueden aprovechar diferentes herramientas y servicios posteriores al desarrollo. En general, hay cientos de herramientas de seguridad a disposición de las empresas, cada una de las cuales sirve para propósitos únicos. Algunas refuerzan los cambios en el código, otras vigilan la aparición de amenazas en el código, mientras que otras establecen el cifrado de datos. Además, las empresas pueden elegir herramientas más especializadas para diferentes tipos de aplicaciones.

Beneficios de la seguridad de aplicaciones

Las empresas dependen de las aplicaciones para prácticamente todo lo que hacen, así que mantenerlas seguras es algo no negociable. A continuación se exponen varias razones por las que las empresas deberían invertir en la seguridad de aplicaciones:

  • Reduce el riesgo que provenga tanto de fuentes internas como de terceros.
  • Protege la imagen de marca, al mantener a la empresa lejos de los titulares.
  • Mantiene la seguridad de los datos del cliente y aumenta su confianza.
  • Protege los datos sensibles de fugas.
  • Mejora la confianza de inversores y entidades de préstamo cruciales.

Amenazas y vulnerabilidades de la seguridad en aplicaciones

¿Por qué las empresas necesitan seguridad de aplicaciones?

Las empresas saben que la seguridad de los centros de datos en general es importante, pero pocas tienen políticas de seguridad de aplicaciones bien definidas para seguirles el ritmo a los cibercriminales e incluso ir un paso adelante. De hecho, el informe sobre el estado de la seguridad de software de Veracode demuestra que el 83% de todas las aplicaciones probadas (unas 85,000) presentaban al menos una falla de seguridad. En total, Veracode encontró 10 millones de fallas, lo cual indica que la mayoría de las aplicaciones presentaban una gran cantidad de brechas de seguridad.

La existencia de estas fallas de seguridad es bastante preocupante, pero lo que es todavía más preocupante es cuando las empresas no cuentan con las herramientas necesarias para evitar que estas fallas den lugar a brechas de seguridad. Para que una herramienta de seguridad de aplicaciones tenga éxito, necesita tanto identificar las vulnerabilidades como resolverlas rápidamente, antes de que se conviertan en un problema.

Pero los gerentes de TI tienen que ir mucho más allá de esas dos tareas principales. Identificar y solucionar las brechas de seguridad es el día a día del personal de seguridad de aplicaciones, pero a medida que los cibercriminales desarrollan técnicas más sofisticadas, las empresas tienen que ir varios pasos adelante con herramientas de seguridad modernas. Las amenazas son cada vez más difíciles de detectar y más perjudiciales para las empresas, que no se pueden permitir estrategias de seguridad obsoletas.

Entender los tipos de herramientas de seguridad de aplicaciones

Actualmente, las empresas tienen varias opciones en cuanto a productos de seguridad de aplicaciones, la mayoría de las cuales entran en una de las dos categorías siguientes: herramientas de pruebas de seguridad (un mercado consolidado que tiene la intención de analizar el estado de la seguridad de sus aplicaciones) y herramientas de "blindaje" de seguridad, que protegen y refuerzan las aplicaciones para que las brechas sean mucho más difíciles de ejecutar.

Dentro de los productos de pruebas de seguridad, hay categorías todavía más concretas. En primer lugar, están las pruebas estáticas de seguridad de aplicaciones, que supervisan puntos específicos del código durante el proceso de desarrollo de la aplicación, lo cual ayuda a los desarrolladores a asegurarse de que no estén creando involuntariamente lagunas de seguridad durante el proceso de desarrollo.

En segundo lugar, están las pruebas dinámicas de seguridad de aplicaciones, que detectan brechas de seguridad en código en ejecución. Este método puede imitar un ataque a un sistema de producción y ayudar a los desarrolladores e ingenieros a defenderse de estrategias de ataque más sofisticadas. Tanto las pruebas estáticas y dinámicas son interesantes, así que el nacimiento de un tercer tipo no es ninguna sorpresa, las pruebas interactivas, que combinan los beneficios de ambas.

Por último, las pruebas de seguridad de aplicaciones móviles, como su nombre indica, detectan lagunas en los entornos móviles. Este método es único porque puede estudiar la forma en la que un atacante utiliza el sistema operativo móvil para provocar una brecha en el sistema y las aplicaciones que se ejecutan en él.

Pasemos al "blindaje" de aplicaciones. Como se ha mencionado, las herramientas de esta categoría están destinadas a blindar aplicaciones contra ataques. Aunque suena ideal, es una práctica menos establecida, especialmente en comparación con las herramientas de prueba. No obstante, a continuación se presentan las principales subcategorías dentro de este tipo de herramientas.

En primer lugar tenemos la autoprotección de aplicación en tiempo de ejecución (RASP), que combina estrategias de prueba y protección. Estas herramientas monitorean el comportamiento de las aplicaciones en ambientes tanto de escritorio como móviles. Los servicios RASP permiten a los desarrolladores mantenerse al día sobre el estado de la seguridad de aplicaciones mediante alertas frecuentes, e incluso puede cerrar una aplicación si el sistema entero se encuentra en peligro.

En segundo y tercer lugar, la ofuscación de código/aplicación y el software de cifrado/anti-manipulación son dos categorías que sirven esencialmente para el mismo propósito: evitar que los cibercriminales lleven a cabo una brecha en el código de una aplicación.

Por último, las herramientas de detección de amenazas se encargan de analizar el entorno en el que se ejecutan las aplicaciones. Esta categoría de herramientas puede evaluar el estado de dicho entorno, detectar posibles amenazas e incluso puede comprobar si un dispositivo móvil se ha puesto en peligro debido a "huellas digitales" únicas del dispositivo.

Las principales amenazas a la seguridad de las aplicaciones a las que debe prestar atención

Las principales vulnerabilidades en aplicaciones son: inyección de código, autenticación y autorización incorrectas, exposición de datos sensibles, desbordamiento de búfer, vulnerabilidades de seguridad de configuración y problemas de criptografía. A continuación, explicamos más a detalle qué implicaciones tienen para las aplicaciones de tu empresa.

A pesar de su conveniencia, existen inconvenientes cuando se trata de confiar en aplicaciones web para empresas. Una cosa que todos los propietarios de empresas tendrán que reconocer y protegerse es la presencia de vulnerabilidades de software y amenazas a las aplicaciones web.

Si bien no hay 100% garantía de seguridad, hay algunos pasos que se pueden tomar para evitar sufrir daños. Si está utilizando CMS, entonces el informe pirateado por SUCURI muestra más de El 50% de los sitios web están infectados con una o más vulnerabilidades.

Si es nuevo en las aplicaciones web, aquí hay algunas amenazas comunes que debe tener en cuenta y evitar:

  • Inyección de código: Esta vulnerabilidad permite a un atacante inyectar código malicioso en una aplicación, lo que le da control sobre la misma. Puede realizarse este hackeo, tanto de manera física por una persona como de manera remota, si se logra tener acceso de manera perniciosa.
  • Autenticación y gestión de sesiones: Un atacante puede explotar debilidades en el sistema de autenticación y gestión de sesiones para acceder a cuentas de usuario o robar información confidencial. Por ejemplo, si se usa una aplicación de terceros para proteger la información de acceso de tus clientes y colaboradores o si se realiza un hackeo de sus cuentas.
  • Cross-Site Scripting (XSS): Esta vulnerabilidad permite a un atacante inyectar código malicioso en una página web, lo que puede comprometer la seguridad de los usuarios que visitan dicha página. Este potencial ataque es bastante preocupante para aplicaciones web que requieren de una constante conexión a internet para poder funcionar. Para prevenir ataques XSS, es importante asegurarse de que se utilice codificación de caracteres en la entrada de usuario y evitar el uso de funciones de evaluación de JavaScript en la aplicación. Puede que esta manera de prevención no sea aplicable a todos los desarrollos de aplicaciones.

Lee más sobre Cross-Site Scripting (XSS).

  • Referencias no seguras: Si un programador no maneja adecuadamente las referencias a objetos, puede dar lugar a vulnerabilidades en el acceso a los mismos. Por lo tanto, es necesario realizar un análisis en el código fuente para prevenir la explotación de esta vulnerabilidad.
  • Malas prácticas de codificación: El uso de malas prácticas de codificación es una de las principales vulnerabilidades en aplicaciones, como la falta de validación de entrada, puede permitir a un atacante explotar vulnerabilidades en el código. En la próxima sección veremos cómo te puedes defender contra esta, una de las principales vulnerabilidades en aplicaciones, con herramientas de análisis como SAST, DAST y SCA de Veracode.
  • Problemas en el control de acceso: Si se implementa incorrectamente el control de acceso a ciertos recursos o funciones, un atacante puede acceder a ellos sin autorización.

Formas de prevenir a las principales vulnerabilidades en aplicaciones

Como hemos visto, las principales vulnerabilidades en aplicaciones pueden comprometer la seguridad de tus clientes, así como impedir el crecimiento de tu empresa al carecer del marco legal normativo tanto local como internacional. A continuación, te mencionamos algunas herramientas y maneras en que puedes prevenir ataques de ciber atacantes:

  • Inyección de SQL: Una de las principales formas de prevenir la inyección de SQL es utilizar parámetros de consulta preparados y validación de entradas de usuario para asegurarse de que no se puedan introducir comandos maliciosos en la consulta. Esta herramienta de prevención es útil y necesaria para un correcto desarrollo.
  • Ataques CSRF: Para prevenir ataques CSRF, es necesario implementar tokens CSRF y validar siempre los tokens al procesar solicitudes.

Medidas de seguridad para la seguridad en aplicaciones

Hay diferentes tipos de características de seguridad de las aplicaciones, como la autenticación, la autorización, el cifrado, el registro y las pruebas de seguridad de las aplicaciones. Los desarrolladores también pueden codificar las aplicaciones para reducir las vulnerabilidades de seguridad.

Los desarrolladores de software pueden integrar procedimientos de autenticación y autorización en las aplicaciones para asegurarse de que solo accedan los usuarios autorizados. Los procedimientos de autenticación garantizan la identidad de los usuarios. Se consigue obligando a los usuarios a proporcionar un nombre de usuario y una contraseña para iniciar la sesión en una aplicación. La autenticación multifactor requiere más de una forma de autenticación. Por ejemplo, algo que el usuario sabe (una contraseña), algo que tiene (un dispositivo móvil) y algo que le caracteriza (una huella dactilar o el reconocimiento facial).

Una vez autenticado, puede autorizarse al usuario para acceder a la aplicación y a utilizarla. El sistema puede validar que el usuario tenga permiso para acceder a la aplicación comparando su identidad con una lista de usuarios autorizados. La autenticación se debe efectuar antes que la autorización para que la aplicación solo contraste las credenciales de usuario validadas con la lista de usuarios autorizados.

Cuando el usuario esté autenticado y esté usando la aplicación, se pueden proteger los datos confidenciales con otras medidas de seguridad para que los ciberdelincuentes no los vean ni los usen. En las aplicaciones basadas en la cloud, en las que el tráfico que contiene datos confidenciales circula entre el usuario final y la cloud, ese tráfico se puede cifrar para proteger los datos.

Por último, si se vulnera la seguridad de una aplicación, el registro puede ayudar a identificar quién ha accedido a los datos y cómo. Los archivos de registro de la aplicación ofrecen un control con marcas de tiempo de los aspectos de la aplicación a los que se ha accedido y de la persona implicada. Es necesario probar la seguridad de las aplicaciones para asegurarse de que todos estos controles de seguridad funcionen correctamente.

Seguridad de las aplicaciones en la cloud

La seguridad de las aplicaciones en la cloud plantea desafíos adicionales. Dado que los entornos de cloud ofrecen recursos compartidos, se debe comprobar con especial atención que los usuarios solo tengan acceso a los datos que están autorizados a consultar en las aplicaciones basadas en la cloud. Los datos confidenciales también son más vulnerables en las aplicaciones basadas en la cloud, puesto que los datos se transmiten por Internet del usuario a la aplicación y viceversa.

Seguridad de las aplicaciones móviles

Los dispositivos móviles también transmiten y reciben información por Internet, no por una red privada, de modo que son vulnerables a ataques. Las empresas pueden utilizar redes privadas virtuales (VPN) para añadir una capa de seguridad a las aplicaciones móviles que proteja a los empleados que inicien sesión en las aplicaciones de forma remota. Los departamentos de TI también pueden optar por revisar las aplicaciones móviles y asegurarse de que cumplan las políticas de seguridad de la empresa antes de permitir que los empleados las usen en los dispositivos móviles que se conecten con la red empresarial.

Seguridad de las aplicaciones web

Aplicaciones o servicios a los que los usuarios acceden a través de una interfaz de navegador por Internet. Como las aplicaciones web no se encuentran en las máquinas de los usuarios, sino en servidores remotos, la información de entrada y de salida se tiene que transmitir por Internet. La seguridad de las aplicaciones web preocupa en especial a las empresas que alojan aplicaciones web o proporcionan servicios web. Dichas empresas suelen optar por proteger su red contra intrusiones con un cortafuegos para aplicaciones web. Un cortafuegos para aplicaciones web inspecciona los paquetes de datos que considera perjudiciales y, si es necesario, los bloquea.

¿Qué son los controles de seguridad de las aplicaciones?

Los controles de seguridad de las aplicaciones son técnicas que mejoran la seguridad de una aplicación a nivel de codificación para que sea menos vulnerable a las amenazas. Muchos de estos controles afectan a cómo responde la aplicación a entradas inesperadas que un ciberdelincuente podría utilizar para aprovecharse de una debilidad. Un programador puede escribir código para una aplicación que le otorgue más control sobre el resultado de estas entradas inesperadas. El «fuzzing» es un tipo de prueba de seguridad de las aplicaciones en la que los desarrolladores examinan los resultados de valores o entradas inesperados para determinar cuáles hacen que la aplicación funcione de una forma imprevista que podría suponer una deficiencia de seguridad.

¿Qué son las pruebas de seguridad de las aplicaciones?

Los desarrolladores de aplicaciones realizan pruebas de seguridad de las aplicaciones dentro del proceso de desarrollo de software para asegurarse de que no haya vulnerabilidades de seguridad en una versión nueva o actualizada de una aplicación de software. Las auditorías de seguridad pueden garantizar que la aplicación cumpla una serie específica de criterios de seguridad. Una vez que una aplicación supera la auditoría, los desarrolladores deben asegurarse de que solo puedan acceder a ellas los usuarios autorizados. En las pruebas de intrusión, los desarrolladores piensan como un ciberdelincuente y buscan formas de irrumpir en la aplicación. Las pruebas de intrusión pueden incluir ingeniería social o intentos de engañar a los usuarios para que permitan el acceso no autorizado. Por lo general, los verificadores llevan a cabo análisis de seguridad tanto sin autenticar como autenticados (como usuarios con la sesión iniciada) para detectar vulnerabilidades de seguridad que quizás no se den en ambos estados.

Cómo activar la seguridad de aplicaciones

Sin duda, la seguridad de aplicaciones más sólida y efectiva empieza en el código. Este enfoque, conocido como seguridad por diseño, es crucial para hacer las cosas bien. En muchos casos, las vulnerabilidades de las aplicaciones empiezan con una arquitectura vulnerable plagada de defectos de diseño. Esto significa que la seguridad de la aplicación debe fundarse en el proceso de desarrollo, es decir, en el código.

Un enfoque de seguridad por diseño significa que sus aplicaciones empiezan con una base limpia y bien protegida. Pero más allá de este método, hay otras mejores prácticas de seguridad de aplicaciones que las empresas deben tener en cuenta a la hora de perfeccionar su estrategia.

  1. Trate su arquitectura de nube, ya sea pública u on-premise, como insegura. Con esta mentalidad como punto de partida, se elimina la complacencia de asumir que la nube es lo suficientemente segura.
  2. Aplique medidas de seguridad a cada componente de su aplicación y durante cada fase del proceso de desarrollo. Asegúrese de incluir las medidas apropiadas para cada componente en concreto.
  3. Una estrategia crucial, pero que requiere mucho tiempo, es automatizar los procesos de instalación y configuración. Aunque ya haya completado estos procesos anteriormente, tendrá que rehacerlos para sus aplicaciones de próxima generación.
  4. No basta con establecer medidas de seguridad. Asegúrese de realizar pruebas frecuentes una y otra vez para asegurarse de que funcionen correctamente. En el caso de una brecha, estará agradecido de haber detectado y resuelto cualquier falla.
  5. Aproveche las capacidades del SaaS para dedicar menos tiempo a laboriosas tareas de seguridad y reenfocar su atención en proyectos que generen mayor valor. El SaaS es relativamente accesible y no requiere un equipo de TI dedicado a configurar productos.

Algunas de las principales vulnerabilidades en aplicaciones sólo pueden identificarse a través del análisis del código fuente.

  • Análisis estático de código fuente (SAST): La prueba de seguridad de aplicaciones estáticas (SAST) se utiliza para identificar vulnerabilidades de seguridad durante el ciclo de vida de desarrollo de software (SDLC). Funciona principalmente en el código fuente y los binarios. Las herramientas SAST funcionan de la mano con el desarrollo de aplicaciones y alertan sobre cualquier problema a medida que se descubren en vivo. La idea detrás del análisis SAST es realizar una evaluación "de adentro hacia afuera" y asegurar la aplicación antes del lanzamiento público. Hay muchas herramientas SAST que puede consultar aquí en OWASP.
  • Análisis dinámico de aplicaciones (DAST): Si bien las herramientas SAST se implementan durante el ciclo de desarrollo, las pruebas dinámicas de seguridad de aplicaciones (DAST) se utilizan al final del mismo. Esto presenta un enfoque de "afuera hacia adentro", similar al de un pirata informático, y no se necesita código fuente ni archivos binarios para ejecutar el análisis DAST. Esto se realiza en una aplicación en ejecución a diferencia de SAST, que se realiza en código estático.
  • Análisis de composición de software (SCA): El análisis de composición de software (SCA) se trata de proteger los frentes de código abierto de su aplicación, si tiene alguno.

Si bien SAST puede encubrir esto hasta cierto punto, una herramienta SCA independiente es mejor para un análisis en profundidad de todos los componentes de código abierto para el cumplimiento, las vulnerabilidades, etc.

  • Pentesting: En un alto nivel, Penetration Testing funciona de manera similar a DAST al atacar una aplicación desde el exterior para descubrir lagunas de seguridad. Pero si bien DAST es mayoritariamente automática y económica, las pruebas de penetración se realizan manualmente por expertos (hackers éticos) y es un asunto costoso. Aún así, hay Pentest para realizar una inspección automática, pero los resultados pueden carecer de profundidad en comparación con las pruebas manuales.
  • RASP: Aplicación en tiempo de ejecución Self-Protección (RASP), como lo demuestra su nombre, ayuda a Detectar problemas de seguridad en tiempo real. Los protocolos RASP están integrados en la aplicación para evitar vulnerabilidades que puedan falsificar otras medidas de seguridad.