Tipos de vulnerabilidad del código
- Gestión de apps
Todo código tiene errores. Algunos de esos errores son benignos. Algunos causarán una terminación anticipada inesperada. Unos pocos provocarán un consumo desmesurado de recursos. Y algunos errores conducen a vulnerabilidades de seguridad que permiten a los usuarios hacer cosas inesperadas y a veces indeseables.
Esos errores de seguridad son vulnerabilidades de comportamiento porque dependen de cómo se comporta el código cuando se ejecuta. Otro tipo es una vulnerabilidad de inteligencia, algo que forma parte del comportamiento correcto del código, pero que revela detalles sobre cómo explotar un sistema. Estos son los dos tipos principales de vulnerabilidades de código; ambos conllevan riesgos.
Vulnerabilidades de comportamiento en tiempo de ejecución
Esto cubre una amplia gama de problemas, pero todos ellos son el resultado del comportamiento del código que conduce a resultados no deseados en circunstancias específicas. La mayoría de ellos son involuntarios. Una entrada de usuario no capturada enviada a una base de datos puede conducir a una vulnerabilidad de inyección SQL o una cadena no saneada enviada a un navegador podría crear una vulnerabilidad de scripting entre sitios (XSS). Algunos comportamientos son intencionados, pero tienen consecuencias inesperadas; el comportamiento de sustitución de cadenas de Log4j que le permitía emitir variables de entorno o leer datos de recursos externos era intencionado, pero el uso malicioso que ahora llamamos Log4Shell no lo era. En otro ejemplo reciente, una combinación de comportamientos podía ser explotada para obtener privilegios de root en ordenadores de escritorio Linux.
Los secretos abundan en el código, junto con los detalles sobre los sistemas a los que se conectan esos secretos. Antes estos secretos eran difíciles de gestionar y ponerlos en el código era la única opción práctica. Ahora tenemos herramientas y almacenes de claves seguros en casi todas las nubes, pero el legado y la deuda de seguridad de todos esos secretos en el código heredado son una mina de oro para atacantes como Lapsus$ y otros que apuntan específicamente al código.
La seguridad es un proceso, no un producto
Identificar los secretos y otros riesgos de inteligencia en el código es relativamente fácil, pero pocos equipos lo hacen porque la detección es la parte fácil. Integrar la detección en los flujos de trabajo de los desarrolladores para que puedan actuar en contexto mientras trabajan y revisan el código es la forma más eficaz de eliminar la creación de nuevas deudas de seguridad. Y las herramientas que dan a los desarrolladores la información que necesitan para comprender la imagen general de los riesgos de inteligencia en su código, las áreas de mayor riesgo -y que les señalan los problemas procesables que pueden arreglar inmediatamente para mejorar la salud de su código- son necesarias para ayudar a los equipos a mitigar los riesgos históricos, idealmente rotando cualquier secreto encontrado.
Existen herramientas que pueden automatizar ese proceso y ayudar a los equipos a eliminar más de la mitad del riesgo en su código, pero el primer paso es reconocer dónde reside esa mitad.
Descubre la innovación
Para asegurar el éxito empresarial, ahora y a futuro, es imprescindible maximizar el retorno de la inversión existente en software, a la vez que innovar y adoptar nuevas tecnologías. Los retos que hay abordar para competir en un mundo de TI Híbrida incluyen DevOps, Seguridad, Gestión de riesgos y Análisis predictivo. Puedes obtener más información sobre cómo abordar estos retos e innovar en este enlace.