Conocer las habilidades de los ingenieros de seguridad de aplicaciones
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Explicar el impacto de la seguridad de aplicaciones en los negocios.
- Enumerar las habilidades clave necesarias para ser un profesional de la seguridad de aplicaciones.
- Describir situaciones comunes de seguridad de aplicaciones.
El impacto de la seguridad de aplicaciones en los negocios
Una seguridad de aplicaciones deficiente puede implicar enormes consecuencias negativas para una organización. Los intrusos cibernéticos atacan a diversas organizaciones cada día para extraer dinero, información corporativa y propiedad intelectual con fines de enriquecimiento. Los atacantes utilizan los datos secuestrados para realizar compras no autorizadas y robar las identidades de los consumidores.
Con solo seguir las noticias, puede saber que los atacantes lograron vulnerar aplicaciones para acceder a los datos almacenados en sistemas informáticos de vendedores minoristas, empresas de informes crediticios, aerolíneas, empresas de entretenimiento, agencias gubernamentales, escuelas y muchas otras organizaciones. En un caso, un país extranjero vulneró una cadena de hoteles. En otro caso, a través de un ataque de inyección de código SQL (el cual se abordará posteriormente), se instaló spyware en las computadoras de una compañía para exponer la información de tarjetas de crédito de los clientes. En varios casos, los intrusos robaron datos de tarjetas de crédito gracias a las debilidades de los sistemas de cifrado de datos. En total, estos ataques expusieron la información personal de cientos de millones de clientes.
Estas infracciones de seguridad generaron impactos económicos directos por fraude y robo, pero también pueden producir impactos económicos indirectos como la pérdida de reputación. Esto puede implicar otras consecuencias financieras sobre la empresa debido a la pérdida de clientes, la degradación de la confianza de los accionistas y el daño sobre la imagen de la marca. Además, las infracciones de seguridad pueden tener ramificaciones legales y reglamentarias derivadas en sanciones y multas.
Los ingenieros de seguridad de aplicaciones cumplen una función esencial al comprobar que las aplicaciones de negocio protejan correctamente los datos de los clientes. Tal es la importancia de la función de un ingeniero de seguridad de aplicaciones que este debe presentar un amplio rango de aptitudes. Exploremos esto para conocer las habilidades que necesita un ingeniero de seguridad de aplicaciones.
Habilidades de un ingeniero de seguridad de aplicaciones
Imagine que debe viajar a una isla lejana para tomar unas vacaciones tropicales. Antes de abordar el avión, debe atravesar múltiples controles de seguridad en el aeropuerto. El personal de seguridad revisará su identificación y tarjeta de embarque, deberá pasar por un detector de metales, el equipaje se someterá a rayos X, los perros de seguridad del aeropuerto lo inspeccionarán y los guardias de seguridad supervisarán las pantallas de TV en busca de actividad inusual. Estas son las capas de seguridad del aeropuerto para garantizar que los usuarios disfruten un viaje seguro a su destino. Al igual que el personal de seguridad de un aeropuerto, un ingeniero de seguridad de aplicaciones debe conocer los puntos de entrada de los atacantes y proporcionar las protecciones necesarias contra las vulnerabilidades en cada fase del desarrollo y la implementación de una aplicación.
Los informes de las asociaciones de seguridad (ISC)² e Information Systems Security Association International (ISSA) analizan la escasez de habilidades de ciberseguridad que se ha intensificado durante años. Debido a un aumento en los incidentes de seguridad, las organizaciones notificaron una profunda necesidad de profesionales de seguridad de aplicaciones para proteger los datos y las aplicaciones. En vista de esto y el hecho de que los ingenieros de seguridad de aplicaciones requieren capacitación adicional, es habitual que un ingeniero de seguridad de aplicaciones gane más dinero que un desarrollador de aplicaciones.
Los ingenieros de seguridad de aplicaciones aplican diversas técnicas en diferentes etapas del ciclo de vida de desarrollo de software (SDLC) de una aplicación para descubrir las vulnerabilidades de seguridad. Para eso, un ingeniero de seguridad de aplicaciones debe presentar un buen dominio de muchas habilidades técnicas, entre las que se incluyen:
- Modelado de amenazas: Pensar en cómo los atacantes pueden vulnerar un sistema y qué protecciones se necesitan contra esto
- Ciclo de vida de desarrollo de software seguro (SSDLC): Ayudar a los desarrolladores a escribir códigos seguros mediante la implementación de estándares de codificación seguros, técnicas y prácticas recomendadas con el fin de minimizar las vulnerabilidades
- Revisiones de códigos de seguridad: Identificar las vulnerabilidades de seguridad en el código fuente antes de que se implemente una aplicación en producción
- Análisis y pruebas de vulnerabilidades: Descubrir las debilidades una vez implementada la aplicación y asesorar a los equipos de desarrollo sobre una corrección
Como los ingenieros de seguridad de aplicaciones trabajan con diversas personas (desarrolladores de aplicaciones, evaluadores, diseñadores y otros), deben ser buenos colaboradores y comunicadores. También deben ser buenos escritores, ya que generan los documentos donde se explican sus hallazgos técnicos. En algunos casos, deben utilizar su poder de persuasión para convencer a la gerencia sobre los motivos por los que se debe instalar una función de seguridad antes de la implementación de una aplicación. A menudo, deben emplear sus habilidades de pensamiento crítico para determinar las diversas formas en las que un intruso puede intentar atacar una aplicación. Posteriormente, deben buscar soluciones creativas para frustrar los ataques potenciales. Si se produce una intrusión, deben investigar el incidente para identificar el origen del peligro y fortalecer la aplicación contra ataques futuros.
Aparte de las habilidades mencionadas, las siguientes certificaciones pueden reforzar los conocimientos de un ingeniero de seguridad de aplicaciones:
- Defensor de aplicaciones web de GIAC (GWEB)
- Profesional de ciclo de vida de software seguro certificado (CSSLP)
- Profesional de software seguro (SSP)
- Ingeniero de seguridad de aplicaciones certificado (CASE)
- Explotación y ataques web avanzados
Si considera buscar un empleo como profesional de seguridad de aplicaciones, obtener un título universitario en informática es un buen primer paso hacia ese objetivo. En general, los ingenieros de seguridad de aplicaciones comienzan como desarrolladores de aplicaciones para posteriormente pasar al campo de la ciberseguridad. Además, muchas universidades ofrecen títulos en ciberseguridad. Sin dudas, es un campo emocionante con muchas oportunidades.
Ahora que conoce las habilidades necesarias para ser un ingeniero de seguridad de aplicaciones, analicemos las situaciones de seguridad comunes a las que se enfrentan los ingenieros de seguridad de aplicaciones y la forma de proteger a las aplicaciones en estas circunstancias.
Situaciones comunes de seguridad de aplicaciones
Los cibercriminales buscan el acceso más sencillo para robar, modificar o destruir datos con el menor esfuerzo y la mayor retribución posible. Cuanto más compleja es una aplicación, mayores son las probabilidades de que contenga vulnerabilidades de seguridad. Las aplicaciones, especialmente las web, son el blanco de los cibercriminales por la amplitud y la relativa facilidad de explotación de su superficie de ataque (la interfaz de usuario) mediante la cual un intruso puede acceder a la información confidencial almacenada en una computadora. Además, los intrusos no necesitan ninguna herramienta especial para atacar a una aplicación web. Solo necesitan una computadora y una conexión a Internet.
Mientras que los atacantes intentan descubrir la forma de infiltrarse en una aplicación, los ingenieros de seguridad de aplicaciones se centran en minimizar las vulnerabilidades en el código de la aplicación y garantizar que los componentes de esta se configuren de forma segura para evitar el acceso no autorizado a los datos y las cuentas de los clientes. Un recurso útil que se puede consultar al revisar los riesgos de seguridad de las aplicaciones es el proyecto Open Web Application Security Project (OWASP). OWASP es una organización internacional que brinda información de libre acceso enfocada en mejorar la seguridad de software.
¿Cuáles son los riesgos comunes que puede enfrentar un ingeniero de seguridad de aplicaciones? Un buen ejemplo es un ataque de inyección. Este se produce cuando no se corrigen correctamente las entradas de la aplicación. En un ataque de inyección, un intruso inserta código, en lugar de los datos de entrada esperados, en la lógica de control de entradas de las aplicaciones (el código para gestionar la comunicación entre una interfaz de usuario final y una base de datos).
Si la aplicación no se escribió correctamente, esta ejecutará el código que inyectó el atacante. Por ejemplo, se puede introducir lenguaje de consulta estructurado, conocido comúnmente como SQL, en un campo de dirección de email de una página web. SQL es un lenguaje que se utiliza en programación diseñado para gestionar datos. Si no se controla el campo de entrada, un atacante puede extraer información (como expedientes médicos) de la base de datos de la aplicación mediante el código SQL.
Para corregir la entrada de un usuario, la aplicación debe manipular las entradas de usuario como datos en lugar de comandos y debe incluir únicamente los caracteres de la lista de permitidos (una lista de elementos permitidos enumera los caracteres con acceso a un sistema). Cuando se utiliza una lista de elementos permitidos, se niega el acceso a todas las entidades, excepto a las incluidas en la lista y las que no superan la longitud máxima de los campos de datos.
Otras responsabilidades de los ingenieros de seguridad de aplicaciones son revisar, probar y verificar el código durante el proceso de desarrollo para garantizar que las entradas de los usuarios se corrijan según corresponda con el fin de evitar el ataque de inyección descrito anteriormente. Esto es esencial en el contexto del desarrollo dinámico de software, en el cual se intenta entregar funciones de aplicaciones más rápido que en otros métodos de desarrollo. Pero el método dinámico aumenta la complejidad, ya que es necesario actualizar constantemente las aplicaciones para estar a la altura de las expectativas de los usuarios finales. Se espera que los desarrolladores proporcionen nuevas funciones y corrijan los errores descubiertos a un ritmo acelerado. Es necesario fortalecer las aplicaciones para evitar las explotaciones. Es el trabajo del ingeniero de seguridad de aplicaciones asesorar al equipo de desarrollo sobre la manera más eficiente de hacer eso.
El cifrado débil o inexistente es otra deficiencia frecuente de la seguridad de aplicaciones por la que los atacantes pueden exponer datos confidenciales. Las aplicaciones son vulnerables cuando utilizan protocolos como HTTP en los que los datos se transmiten como texto no cifrado. En lugar de eso, las aplicaciones deben usar protocolos seguros como HTTPS en los que se cifran las transmisiones de datos de modo que estos solo se pueden leer con la clave de cifrado correcta. Se deben evitar los algoritmos de cifrado débiles y antiguos, así como las funciones de cifrado desarrolladas internamente. En cambio, los ingenieros de seguridad de aplicaciones deben recurrir a los algoritmos de cifrado seguro basados en estándares.
Los ingenieros de seguridad de aplicaciones ayudan a los desarrolladores a seguir un proceso de SDLC seguro. Adoptan técnicas de arquitectura y diseño de aplicaciones seguras que se basan en prácticas de seguridad reconocidas. Algunas de estas son la incorporación de una autorización y una autenticación sólidas, y el uso de una gestión de sesiones segura para evitar el acceso no autorizado.
Los ingenieros de seguridad de aplicaciones implementan aplicaciones en las que los usuarios no pueden iniciar sesión con credenciales predeterminadas, ya que este es un vector de ataque común. Los ingenieros corrigen las entradas de los usuarios para impedir los ataques de inyección. Algunas vulneraciones de datos tienen éxito debido al cifrado débil, es por eso que los ingenieros de seguridad de aplicaciones utilizan algoritmos sólidos con una gestión de claves de cifrado apropiada para cifrar las transmisiones de datos y los datos almacenados (datos en reposo). A continuación, si los atacantes se infiltran en el sistema, no pueden extraer ninguna información útil, ya que no saben cómo descifrar los datos.
Los ingenieros de seguridad de aplicaciones se aseguran de que los errores se controlen adecuadamente para evitar mostrar información confidencial al usuario. Además, realizan pruebas estáticas y dinámicas de seguridad de aplicaciones durante y después del desarrollo de la aplicación, y monitorean la aplicación para detectar toda actividad inusual luego de la implementación.
Resumen
En esta unidad, descubrió la forma en que una infracción de seguridad de aplicaciones puede afectar a un negocio, las habilidades que los ingenieros de seguridad de aplicaciones deben tener y algunas situaciones comunes de seguridad de aplicaciones. A continuación, conocerá el primer paso que todo ingeniero de seguridad de aplicaciones eficiente realiza: identificar las aplicaciones en su entorno y los riesgos asociados.