Los codificadores conquistan la seguridad: Share & Learn Series - Problemas de lógica empresarial

Publicado el 28 de marzo de 2019
por Jaap Karan Singh
ESTUDIO DE CASO

Los codificadores conquistan la seguridad: Share & Learn Series - Problemas de lógica empresarial

Publicado el 28 de marzo de 2019
por Jaap Karan Singh
Ver recurso
Ver recurso

A diferencia de la mayoría de las otras vulnerabilidades que hemos cubierto en esta serie de Share & Learn, los problemas de lógica de negocio no están directamente asociados con errores de codificación. Aunque los problemas de codificación pueden ser parte del problema, los errores de lógica de negocio son más frecuentemente el resultado de defectos de diseño o de suposiciones lógicas incorrectas cuando se crea una aplicación por primera vez.

Los problemas de lógica de negocio pueden ocurrir si un usuario realiza una acción imprevista al utilizar una aplicación. Esto puede ser casi cualquier cosa: desde cancelar inesperadamente un pedido, aplicar un código de cupón demasiadas veces o simplemente saltarse un paso esperado y realizar una acción que la aplicación no sabe cómo manejar. Explotar los fallos de la lógica de negocio no requiere ni siquiera formación, sólo un usuario malintencionado con una mente inquisitiva dispuesta a pensar fuera de la caja.

En este episodio, aprenderemos:

  • Cómo aprovechan los atacantes los fallos en la lógica empresarial
  • Por qué son peligrosas las aplicaciones con fallos en la lógica de negocio
  • Técnicas que pueden evitar errores de lógica empresarial.

¿Cómo aprovechan los atacantes los problemas de lógica empresarial?

A diferencia de la mayoría de los exploits, no podemos señalar cadenas de código específicas que puedan causar esta vulnerabilidad. En su lugar, se trata de que los usuarios realicen acciones que no se han previsto y que los programas no saben cómo manejar. Como ejemplo, digamos que una aplicación bancaria permite a los usuarios transferir dinero a otras cuentas. Pero en lugar de enviar dinero, un usuario malicioso intenta enviar una cantidad negativa a otra cuenta. ¿Cómo reaccionará la aplicación bancaria? ¿Se bloqueará? ¿Rechazará la transferencia? ¿O podría devolver el dinero al usuario que inició la transferencia para equilibrar ese número negativo?

Los sitios de comercio electrónico son especialmente susceptibles, aunque no exclusivamente, a los fallos de la lógica empresarial porque están diseñados para que interactúen con ellos muchos usuarios y tienen muchos componentes. Los usuarios que cancelan sus pedidos de forma inesperada, que intentan aplicar cupones únicos varias veces o incluso que sobrecargan sus carritos de la compra pueden presentar a las aplicaciones condiciones que no se han previsto. Realmente no hay forma de saber cómo reaccionará un programa cuando se enfrente a una situación desconocida. En el mejor de los casos, podría generarse un mensaje de error, pero no hay garantía de que una aplicación no vaya a realizar una acción peor, como por ejemplo proporcionar mercancía de forma gratuita.

¿Por qué son peligrosos los problemas de lógica empresarial?

Los problemas de lógica de negocio pueden ser extremadamente peligrosos porque pueden ser explotados por cualquiera, incluso por alguien sin formación en programación o hacking. En realidad, sólo se requiere experimentación y tiempo, haciendo clic y tratando de encontrar fallas en la forma en que una aplicación está diseñada para responder. Y una vez que un usuario malintencionado descubre un fallo en la lógica de negocio de un sitio, puedes apostar que lo explotará al máximo.

El mayor peligro suele ser financiero, que un usuario compre 20 televisores de pantalla grande sin pagarlos, o algo así. Pero los fallos de lógica empresarial también pueden causar otros problemas. Por ejemplo, si la función de contraseña que protege un sitio no sabe qué hacer si un usuario pulsa constantemente la opción de cancelar, puede dejar que se salte el proceso de inicio de sesión.

Realmente no hay forma de anticipar el daño que puede causar un problema de lógica empresarial. A menudo, el primer indicio de un problema llega mucho después de que los usuarios lo hayan explotado.

Solución de problemas de lógica empresarial

Desafortunadamente, el uso de herramientas comunes como los escáneres de vulnerabilidad no ayudará a identificar o arreglar los problemas de lógica de negocio, ya que las pruebas para los problemas de lógica de negocio no se pueden automatizar fácilmente. La mejor manera de evitarlos es implementar una buena planificación, manejo de errores y pruebas para casos de prueba negativos mientras se desarrolla una aplicación. Esto requiere en primer lugar un conjunto claramente definido de reglas de negocio que incluya todas las acciones posibles y deseadas que una aplicación está diseñada para realizar.

Armado con un plan de reglas de negocio, una de las mejores maneras de evitar que se produzcan fallos en la lógica de negocio es crear un diagrama de flujo que muestre todas las formas posibles en que los datos y las transacciones deben fluir dentro de una aplicación. Esto incluye modelar el comportamiento para cada instancia en la que un usuario puede hacer una elección o introducir datos. Compruebe constantemente que las posibles acciones en el diagrama de flujo coinciden con las funciones en el plan de reglas de negocio.

Por último, utilice el modelado de amenazas para ayudar a identificar los fallos en la lógica empresarial durante las fases de diseño, implementación y prueba. Como medida de seguridad, cree una acción que el programa deba realizar si se encuentra con alguna situación no prevista específicamente. Esto podría ser tan simple como negar la acción y alertar a un administrador sobre el problema encontrado.

Más información sobre los problemas de lógica empresarial

Para más información, puedes echar un vistazo a las páginas de OWASP sobre problemas de lógica empresarial. También puedes poner a prueba tus nuevos conocimientos defensivos con la demostración gratuita de la plataforma Secure Code Warrior , que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para saber más sobre cómo derrotar esta vulnerabilidad, y una galería de pícaros de otras amenazas, visite el blogSecure Code Warrior .

¿Preparado para buscar y destruir vulnerabilidades de la lógica empresarial ahora mismo? Dirígete a la plataforma y pon a prueba tus habilidades: [Empieza aquí]

Ver recurso
Ver recurso

Autor

Jaap Karan Singh

¿Quieres más?

Sumérjase en nuestras últimas ideas sobre codificación segura en el blog.

Nuestra amplia biblioteca de recursos tiene como objetivo potenciar el enfoque humano de la mejora de la codificación segura.

Ver blog
¿Quieres más?

Obtenga las últimas investigaciones sobre la seguridad impulsada por los desarrolladores

Nuestra amplia biblioteca de recursos está repleta de recursos útiles, desde libros blancos hasta seminarios web, que le ayudarán a iniciarse en la codificación segura orientada a los desarrolladores. Explórela ahora.

Centro de recursos

Los codificadores conquistan la seguridad: Share & Learn Series - Problemas de lógica empresarial

Publicado el 28 de marzo de 2019
Por Jaap Karan Singh

A diferencia de la mayoría de las otras vulnerabilidades que hemos cubierto en esta serie de Share & Learn, los problemas de lógica de negocio no están directamente asociados con errores de codificación. Aunque los problemas de codificación pueden ser parte del problema, los errores de lógica de negocio son más frecuentemente el resultado de defectos de diseño o de suposiciones lógicas incorrectas cuando se crea una aplicación por primera vez.

Los problemas de lógica de negocio pueden ocurrir si un usuario realiza una acción imprevista al utilizar una aplicación. Esto puede ser casi cualquier cosa: desde cancelar inesperadamente un pedido, aplicar un código de cupón demasiadas veces o simplemente saltarse un paso esperado y realizar una acción que la aplicación no sabe cómo manejar. Explotar los fallos de la lógica de negocio no requiere ni siquiera formación, sólo un usuario malintencionado con una mente inquisitiva dispuesta a pensar fuera de la caja.

En este episodio, aprenderemos:

  • Cómo aprovechan los atacantes los fallos en la lógica empresarial
  • Por qué son peligrosas las aplicaciones con fallos en la lógica de negocio
  • Técnicas que pueden evitar errores de lógica empresarial.

¿Cómo aprovechan los atacantes los problemas de lógica empresarial?

A diferencia de la mayoría de los exploits, no podemos señalar cadenas de código específicas que puedan causar esta vulnerabilidad. En su lugar, se trata de que los usuarios realicen acciones que no se han previsto y que los programas no saben cómo manejar. Como ejemplo, digamos que una aplicación bancaria permite a los usuarios transferir dinero a otras cuentas. Pero en lugar de enviar dinero, un usuario malicioso intenta enviar una cantidad negativa a otra cuenta. ¿Cómo reaccionará la aplicación bancaria? ¿Se bloqueará? ¿Rechazará la transferencia? ¿O podría devolver el dinero al usuario que inició la transferencia para equilibrar ese número negativo?

Los sitios de comercio electrónico son especialmente susceptibles, aunque no exclusivamente, a los fallos de la lógica empresarial porque están diseñados para que interactúen con ellos muchos usuarios y tienen muchos componentes. Los usuarios que cancelan sus pedidos de forma inesperada, que intentan aplicar cupones únicos varias veces o incluso que sobrecargan sus carritos de la compra pueden presentar a las aplicaciones condiciones que no se han previsto. Realmente no hay forma de saber cómo reaccionará un programa cuando se enfrente a una situación desconocida. En el mejor de los casos, podría generarse un mensaje de error, pero no hay garantía de que una aplicación no vaya a realizar una acción peor, como por ejemplo proporcionar mercancía de forma gratuita.

¿Por qué son peligrosos los problemas de lógica empresarial?

Los problemas de lógica de negocio pueden ser extremadamente peligrosos porque pueden ser explotados por cualquiera, incluso por alguien sin formación en programación o hacking. En realidad, sólo se requiere experimentación y tiempo, haciendo clic y tratando de encontrar fallas en la forma en que una aplicación está diseñada para responder. Y una vez que un usuario malintencionado descubre un fallo en la lógica de negocio de un sitio, puedes apostar que lo explotará al máximo.

El mayor peligro suele ser financiero, que un usuario compre 20 televisores de pantalla grande sin pagarlos, o algo así. Pero los fallos de lógica empresarial también pueden causar otros problemas. Por ejemplo, si la función de contraseña que protege un sitio no sabe qué hacer si un usuario pulsa constantemente la opción de cancelar, puede dejar que se salte el proceso de inicio de sesión.

Realmente no hay forma de anticipar el daño que puede causar un problema de lógica empresarial. A menudo, el primer indicio de un problema llega mucho después de que los usuarios lo hayan explotado.

Solución de problemas de lógica empresarial

Desafortunadamente, el uso de herramientas comunes como los escáneres de vulnerabilidad no ayudará a identificar o arreglar los problemas de lógica de negocio, ya que las pruebas para los problemas de lógica de negocio no se pueden automatizar fácilmente. La mejor manera de evitarlos es implementar una buena planificación, manejo de errores y pruebas para casos de prueba negativos mientras se desarrolla una aplicación. Esto requiere en primer lugar un conjunto claramente definido de reglas de negocio que incluya todas las acciones posibles y deseadas que una aplicación está diseñada para realizar.

Armado con un plan de reglas de negocio, una de las mejores maneras de evitar que se produzcan fallos en la lógica de negocio es crear un diagrama de flujo que muestre todas las formas posibles en que los datos y las transacciones deben fluir dentro de una aplicación. Esto incluye modelar el comportamiento para cada instancia en la que un usuario puede hacer una elección o introducir datos. Compruebe constantemente que las posibles acciones en el diagrama de flujo coinciden con las funciones en el plan de reglas de negocio.

Por último, utilice el modelado de amenazas para ayudar a identificar los fallos en la lógica empresarial durante las fases de diseño, implementación y prueba. Como medida de seguridad, cree una acción que el programa deba realizar si se encuentra con alguna situación no prevista específicamente. Esto podría ser tan simple como negar la acción y alertar a un administrador sobre el problema encontrado.

Más información sobre los problemas de lógica empresarial

Para más información, puedes echar un vistazo a las páginas de OWASP sobre problemas de lógica empresarial. También puedes poner a prueba tus nuevos conocimientos defensivos con la demostración gratuita de la plataforma Secure Code Warrior , que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para saber más sobre cómo derrotar esta vulnerabilidad, y una galería de pícaros de otras amenazas, visite el blogSecure Code Warrior .

¿Preparado para buscar y destruir vulnerabilidades de la lógica empresarial ahora mismo? Dirígete a la plataforma y pon a prueba tus habilidades: [Empieza aquí]

Nos gustaría contar con su permiso para enviarle información sobre nuestros productos y/o temas relacionados con la codificación segura. Siempre trataremos sus datos personales con el máximo cuidado y nunca los venderemos a otras empresas con fines de marketing.

Para enviar el formulario, habilite las cookies "Analytics". Siéntase libre de desactivarlas de nuevo una vez que haya terminado.