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

U

Introducción

Los clientes y las partes interesadas clave depositan mucha confianza en la fiabilidad de su aplicación web. Confían en que sus datos están a salvo de accesos no deseados en los servidores, al mismo tiempo que permiten sin problemas el acceso deseado 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 malintencionados 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 tomar 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.

Mientras el servicio está inactivo, el mejor de los casos es que los usuarios no estén satisfechos. En el peor de los casos, los usuarios perderían una cantidad obscena de dinero debido a la falta de servicios.

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), donde un usuario malintencionado actúa como intermediario entre los datos que se envían entre un cliente (usuario) y sus servidores.

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

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

Estos ataques se contrarrestan con un cifrado adecuado de los datos que se transfieren. Incluso si hay un intermediario recogiéndolo, no pueden encontrarle sentido. 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 sensibles 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 verificación de consultas en el back-end.

Cross-site Scripting (XSS), ataques de escuchas clandestinas, ataques de malware, phishing, tunelización de DNS: hay una gran cantidad de ataques bien conocidos a los que su aplicación puede estar sujeta. Y nuevamente, es inevitable experimentar al menos uno solo.

Dicho esto, de principio a fin, la integridad de los datos y la seguridad de las aplicaciones no deben ser una ocurrencia tardía. 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á.

A continuación, se explica cómo puede utilizar la gestión y mitigación de riesgos para aumentar la confiabilidad de su aplicación web.

Comience con la evaluación de riesgos

El primer paso para lograr gestión de riesgos eficaz es crear una lista de los riesgos a los que se enfrenta su 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 de bolsa, 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 las medidas adecuadas de control de riesgos.

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 peso mayor.

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

$$
R = V * I * L
$$

Donde: R = riesgo de un ataque, V = valor de la aplicación web o activo, 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 su caída debido a un ataque DDoS es 10 y la probabilidad de que suceda también es de 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 debes pasar por alto esto. Aborde el elefante en la habitación y concentre los recursos y la experiencia en este tema para reducir las posibilidades de que cobre vida. Riesgos como estos siempre deben tener la máxima prioridad.

En cambio, imagina que tu negocio se basa en ofrecer 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 un 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, le asignamos un 5. Dado que tal ataque 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.

Por tanto, 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 pueda tener el riesgo. 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 un ciberseguro puede ayudarlo a mitigar los riesgos de muchos tipos de ataques estandarizados. No es necesario 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ía ser difícil de implementar, como cifrar los datos de transferencia, usar medios de transferencia seguros, hash de contraseñas, etc.

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

Soluciones a los riesgos del desarrollo web

Utilice técnicas ágiles para hacer frente a 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 volver a examinar 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 se acumulan los problemas no resueltos, 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 da, 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 arreglar las 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 finalmente da como resultado aplicaciones inestables y poco confiables.

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

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

No aplique una placa de oro a 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 por alto algo. 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 lo mejor 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 ocurrencia tardía. Agregar funciones debido al tiempo adicional es una ocurrencia tardía.

Cifre sus datos y tráfico

Aunque los algoritmos de cifrado modernos han demostrado ser virtualmente 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 se debe omitir.

Asegúrese de cifrar tanto el tráfico web como los datos almacenados en su servidor para limitar el daño que se puede hacer 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; necesita 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 se realizan cambios en la aplicación. Sería conveniente reevaluar constantemente sus estrategias de gestión de riesgos para asegurarse de 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 jugar un papel central en el desarrollo de su aplicación, resulta fácil resolver problemas comunes desde su 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.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad