Uso de la gestión y mitigación de riesgos en el desarrollo web

Los clientes y las partes interesadas clave confían mucho en la confiabilidad de su aplicación web. En este artículo, repasaremos cómo puede administrar y mitigar el riesgo en el desarrollo web.

Introducción

Los clientes y las partes interesadas clave confían mucho en la confiabilidad de su aplicación web. Confían en que sus datos están protegidos contra accesos no deseados en los servidores, al mismo tiempo que permiten el acceso deseado sin problemas mientras los usan.

Pueden suceder muchas cosas que comprometan la seguridad de los datos y la confiabilidad de las aplicaciones. Algunos de estos son comunes y otros son raros, pero es un hecho que son inevitables. No puede evitar que los usuarios maliciosos intenten explotar los agujeros en la armadura de su aplicación.

Por ejemplo, un ataque de Denegación de servicio (DoS) puede desconectar su servicio al sobrecargar el tráfico que pueden recibir sus servidores. En la práctica, estos ataques se distribuyen (Distributed DoS, o DDoS para abreviar) a través de una gran red de atacantes, lo que los hace aún más difíciles de rastrear.

Si bien el servicio está inactivo, el mejor de los casos es que los usuarios no estén satisfechos. El peor de los casos sería que los usuarios perdieran una cantidad obscena de dinero debido a que los servicios están fuera de servicio.

Estos ataques se contrarrestan filtrando y seleccionando las conexiones no válidas y negándoles el acceso al servicio.

Otro ataque común es el ataque Man-in-the-middle (MitM), en el que un usuario malintencionado actúa como intermediario entre los datos que se envían entre un cliente (usuario) y sus servidores.

Existen varios tipos de ataques MitM, como ARP Spoofing, IP Spoofing y DNS Spoofing. Además, pueden olfatear los datos que se envían, secuestrar la sesión y controlarla o incluso inyectar paquetes para comprometer el paquete de datos original.

Estos datos pueden ser triviales, pero también pueden ser muy confidenciales, como tarjetas de crédito o información personal.

Estos ataques se contrarrestan mediante el cifrado adecuado de los datos que se transfieren. Incluso si hay un intermediario que lo recoge, no puede entenderlo. Además, el uso de canales seguros como HTTPS sobre HTTP también ayuda.

Los servicios basados ​​en bases de datos son más propensos a los ataques de Inyección SQL, donde un usuario no deseado obtiene privilegios en su base de datos. Es suficiente tener los privilegios de base de datos más básicos para poder extraer suficiente información para causar estragos, dependiendo de qué tan confidenciales sean los datos.

Estos ataques son posibles incluso con la más mínima supervisión en el diseño y la arquitectura de la aplicación y la falta de controles de consulta en el back-end.

Cross-site Scripting (XSS), Ataques de espionaje, Ataques de malware, Phishing, Tunelización de DNS: hay una miríada de ataques conocidos a los que su aplicación puede estar sujeta. Y nuevamente, es inevitable experimentar al menos uno.

Dicho esto, de principio a fin, la integridad de los datos y la seguridad de las aplicaciones no deben ser una idea de último momento. Centrarse en la gestión de riesgos es una parte esencial para garantizar la seguridad y satisfacción del cliente. Depende de usted y su equipo identificar a qué ataques será propensa su aplicación y qué medidas de protección implementará.

Así es como puede usar Gestión y mitigación de riesgos para aumentar la confiabilidad de su aplicación web.

Empezar con la evaluación de riesgos

El primer paso para lograr la gestión de riesgos eficaz es crear una lista de los riesgos a los que se enfrenta tu aplicación web.

Si su aplicación transfiere información confidencial entre clientes y servidores, espere un ataque MitM. Si su aplicación envía muchos correos electrónicos con archivos adjuntos, espere un ataque de phishing. Si su aplicación maneja transacciones basadas en el tiempo, como los corredores del mercado de valores, un ataque DDoS puede poner todo patas arriba.

A continuación, deberá cuantificar los riesgos a los que se enfrenta la aplicación. La cuantificación facilita la comparación de riesgos, la identificación de los más impactantes y la selección de medidas de control de riesgos adecuadas.

Al cuantificar el riesgo, deberá calificar el valor de su activo, la gravedad del riesgo y la probabilidad de que ocurra. En la mayoría de los casos, una calificación de escala que va del 1 al 10 será suficiente, siendo 10 el que tiene el mayor peso.

Para cuantificar un posible riesgo, simplemente use esta ecuación:

$$
R = V * Yo * L
$$

Donde: R = Riesgo de un ataque, V = Valor de la aplicación o activo web, I = Impacto del riesgo y L = probabilidad de que ocurra el riesgo.

Por ejemplo, tome un servidor cuyo valor esté clasificado en 10. Si el impacto de que se caiga debido a un ataque DDoS es 10 y la probabilidad de que ocurra también es 10, el riesgo se calcula como:

$$
R = 10 * 10 * 10
$$

Este es el riesgo más alto al que puede estar expuesta su empresa (1000). No deberías pasar por alto esto. Aborde el elefante en la habitación y concentre los recursos y la experiencia en este problema para reducir las posibilidades de que cobre vida. Riesgos como estos siempre deben tener la máxima prioridad.

Por el contrario, imagina que tu negocio se basa en servir contenido, como un blog o un sitio web informativo. Los únicos datos que se envían entre sus usuarios y la aplicación son simples solicitudes HTTP al servidor para devolver el contenido solicitado.

Un ataque como MitM no proporcionará ninguna información importante al atacante, aparte de la dirección IP del usuario, que no es tan útil en la gran mayoría de los casos.

Por lo tanto, el valor del servidor es 10 (es fundamental para brindar datos a los usuarios), pero el impacto del ataque MitM no es demasiado alto. Digamos que le asignamos un 5. Dado que un ataque de este tipo no le da mucho valor al atacante, la probabilidad de que suceda tampoco es demasiado alta, así que asignemos un 5 para eso también.

Así, el riesgo de este ataque sería:

$$
R = 10 * 5 * 5
$$

El valor de riesgo de este ataque (250) es significativamente menor que el ataque mencionado anteriormente.

Elección de opciones de mitigación de riesgos

Su negocio puede tratar diferentes riesgos de manera diferente, según los recursos disponibles y el impacto que el riesgo puede tener. Hay cuatro opciones de tratamiento del riesgo: transferir el riesgo, mitigarlo, ignorarlo y aceptarlo.

Para los riesgos que se pueden compartir con otra persona u organización, considere transferirlos. Por ejemplo, comprar ciberseguro puede ayudarlo a mitigar los riesgos de muchos tipos de ataques estandarizados. . No hay necesidad de implementar soluciones internas para esto, si no tiene el tiempo o los recursos.

Por supuesto, una cierta cantidad de soluciones internas para problemas comunes no deberían ser difíciles de implementar, como encriptar datos de transferencia, usar medios de transferencia seguros, cifrar contraseñas, etc.

Si un riesgo es demasiado trivial para tener un impacto, debe ignorarlo. Para los riesgos que no pueden mutilar su proceso de desarrollo web y su aplicación, sin que tenga soluciones para ellos, debe ignorarlos por completo.

Soluciones a los riesgos del desarrollo web

Use técnicas ágiles para lidiar con la deuda técnica

En aras del costo de desarrollo y el tiempo de comercialización, los equipos de desarrollo a veces se ven obligados a dejar aplicaciones con algunas lagunas que pueden generar problemas en el futuro. El objetivo es revisar estos problemas más adelante y resolverlos una vez que la aplicación ya esté en el mercado.

Sin embargo, hay casos en los que los problemas sin resolver se acumulan, lo que hace que resolverlos sea una gran inversión financiera y un compromiso de tiempo. La deuda técnica aumenta con cada paso que das, siempre que no se resuelva un problema subyacente.

Cuanto más se posponga la solución de estos problemas, mayor será la inversión para solucionarlos. Además, es probable que su equipo esté más inclinado a seguir construyendo sobre lo que existe, en lugar de desmantelarlo para corregir lagunas. Esto puede conducir fácilmente a la pendiente resbaladiza de posponerlo en nombre del costo de desarrollo y el cumplimiento de los plazos, lo que en última instancia da como resultado aplicaciones inestables y poco confiables.

En lugar de esperar a estresar a sus invitados con errores y causar dolores de cabeza a todos en el equipo, puede usar técnicas ágiles para ayudar a resolver estos problemas desde el principio.

“Si crees que la buena arquitectura es cara, prueba con la arquitectura barata”. –Brian Foote

No recubra su aplicación

Aunque a primera vista parece un buen gesto incluir algunas características adicionales que no estaban originalmente en la especificación, esto se considera una mala gestión.

La mayoría de las veces, los equipos apenas tienen tiempo para construir lo que está en la especificación. Si tiene tiempo de sobra, es probable que se haya pasado algo por alto. En lugar de concentrar tiempo, dinero y energía en actualizaciones fuera de las especificaciones, primero, asegúrese de que el resto del producto sea tan bueno como sea posible.

Agregar cualquier tipo de característica nueva también conlleva sus propios riesgos. Una vez más, la gestión de riesgos no debería ser una idea de último momento. Agregar funciones debido al tiempo extra es una ocurrencia tardía.

Cifre sus datos y tráfico

Aunque los algoritmos de encriptación modernos han demostrado ser prácticamente irrompibles, su bajo uso entre los equipos de desarrollo es alarmante. A diferencia de hace mucho tiempo, los sistemas modernos pueden manejar el cifrado sin afectar el rendimiento de la aplicación. El cifrado es la primera y una de las formas más básicas de proteger la integridad de sus datos, y definitivamente no debe omitirse.

Asegúrese de cifrar tanto el tráfico web como los datos almacenados en su servidor para limitar el daño que se puede causar cuando su aplicación está expuesta a un riesgo.

Centrarse en las pruebas y el mantenimiento

Cualquier solución de tratamiento de riesgos que elija debe probarse para determinar su eficacia. Establecer los Indicadores clave de rendimiento (KPI) correctos lo ayudará a evaluar si es lo suficientemente efectivo o no.

Este no es el final de esto; debe controlar la eficacia de estas soluciones a medida que pasa el tiempo. La eficacia de las soluciones de tratamiento de riesgos puede cambiar a medida que surgen nuevas amenazas o una vez que realice cambios en la aplicación. Sería prudente reevaluar constantemente sus estrategias de gestión de riesgos para garantizar que su aplicación sea lo más confiable posible.

La gestión de riesgos debe ser una parte innata del desarrollo de aplicaciones web, en lugar de una ocurrencia tardía. Al desempeñar un papel central en el desarrollo de su aplicación, se vuelve fácil resolver problemas comunes desde la raíz mucho antes de que se conviertan en una amenaza.

Implemente prácticas de gestión de riesgos para mantener la confianza que las partes interesadas clave tienen en su negocio.

Sobre el autor

Jordan MacAvoy es el vicepresidente de marketing de Laboratorios de reciprocidad y gestiona la ejecución y la estrategia de comercialización de la empresa. Antes de unirse a Reciprocity, el Sr. MacAvoy ocupó cargos ejecutivos en Fundbox, una compañía de Forbes Next Billion Dollar, e Intuit, a través de su adquisición de la solución de comunicaciones y marketing SaaS, Demandforce.