Simple Science

Ciencia de vanguardia explicada de forma sencilla

# Informática# Criptografía y seguridad# Ingeniería del software

Mejorando la seguridad del usuario a través del análisis de privilegios

Un nuevo método usa modelos de lenguaje para identificar variables de privilegio de usuario en el código.

― 8 minilectura


Identificando riesgos deIdentificando riesgos deseguridad en el códigoprivilegios de usuarios.encontrar vulnerabilidades deUsando modelos de lenguaje para
Tabla de contenidos

En muchas aplicaciones de software, controlar los permisos de los usuarios es crucial para mantener los datos seguros. Los programas a menudo realizan ciertas tareas, como iniciar sesión a los usuarios y decidir qué datos pueden acceder. Estas tareas pueden ser sensibles, ya que si los atacantes logran obtener más derechos de los que deberían, pueden causar problemas serios para la organización.

Uno de los principales objetivos para aquellos con malas intenciones es obtener o aumentar sus privilegios para acceder a datos importantes. Cuando se trata de defender estos programas y las organizaciones detrás de ellos, es esencial cerrar las brechas que permiten que dichos ataques tengan éxito. Mientras que es más fácil encontrar problemas de memoria como desbordamientos de búfer, encontrar problemas lógicos que afecten los privilegios de los usuarios puede ser más difícil y dañino.

Para abordar estos desafíos, muchos analistas de seguridad primero buscan lo que llamamos variables relacionadas con los privilegios de usuario (UPR) en el código. Estas son las variables que se utilizan en operaciones vinculadas a los privilegios de usuario. Identificarlas ayuda a enfocar la búsqueda en donde el código podría ser vulnerable a ataques. Esta tarea puede llevar mucho tiempo, por lo que se necesita herramientas que puedan ayudar a hacer este proceso más rápido y eficiente.

El papel de los modelos de lenguaje en el análisis de seguridad

Recientemente, ha surgido un nuevo enfoque utilizando grandes modelos de lenguaje (LLMs) para ayudar a encontrar variables UPR. Estos modelos pueden procesar y analizar el código, con el objetivo de ayudar a los analistas a detectar estas variables importantes, que pueden ser una parte significativa para mantener el software seguro.

Nuestro método combina Análisis de código tradicional con el poder de los LLMs para evaluar cuánto se relaciona cada variable con los privilegios de usuario. La idea aquí es producir un puntaje UPR para cada variable, mostrando qué tan cerca está de los permisos de usuario.

Al enfocarse en piezas más pequeñas de código y evaluarlas individualmente, nuestro enfoque evita las desventajas de intentar analizar grandes secciones de código de una sola vez. En lugar de recibir un largo trozo de código, el modelo analiza sentencias de código, lo que le permite dar calificaciones más precisas para cada puntaje UPR de variable.

El puntaje varía de 0 a 10, donde 0 significa que una variable no tiene nada que ver con los permisos de usuario, y números más altos indican una relación más cercana. Después de generar estos puntajes, los analistas pueden mirar las variables que obtuvieron puntajes altos para confirmar si realmente representan variables UPR.

La importancia de identificar las variables UPR

En cualquier aplicación de software, especialmente aquellas que corren en servidores, es vital restringir lo que los usuarios pueden hacer. Por ejemplo, si un usuario tiene ciertos derechos, no debería poder acceder a los datos de otro usuario sin la autorización adecuada. Si los atacantes logran hacerse con credenciales sensibles, pueden encontrar formas de explotar esos privilegios.

Debido a esto, muchas organizaciones revisan regularmente su código para encontrar posibles vulnerabilidades que podrían ser explotadas. Las vulnerabilidades generalmente caen en dos categorías: corrupciones de memoria y errores lógicos. La corrupción de memoria suele ser más simple de explotar, ya que afecta directamente cómo funciona el programa. Los errores lógicos, por otro lado, pueden no causar problemas durante la ejecución normal, lo que los hace más difíciles de detectar y arreglar.

El problema es que, aunque algunas herramientas pueden encontrar automáticamente errores de memoria, hay menos opciones efectivas para descubrir fallos lógicos. Muchos de estos problemas surgen de malas prácticas de codificación, como codificar información sensible en el código fuente.

Desafíos actuales en identificar variables UPR

Encontrar variables UPR puede ser bastante desafiante por varias razones. Primero, hay muchos tipos de variables que podrían estar vinculadas a los privilegios de usuario. Ejemplos incluyen contraseñas, claves secretas, tokens, y más. Reconocer variables UPR no se trata solo de identificar ciertas palabras clave; más bien, requiere entender el contexto en el que se usan esas variables.

Existen métodos para encontrar variables UPR, pero a menudo dependen de técnicas heurísticas, que pueden ser limitadas en escalabilidad y precisión. Estos métodos pueden usar patrones en los nombres de las variables o verificaciones simples, pero a menudo no logran capturar todas las variables relevantes, especialmente en bases de código grandes.

Dado que la seguridad de un programa a menudo depende de cómo estas variables interactúan con otras partes del código, es crucial analizar sus relaciones con cuidado. Esto presenta otro desafío, ya que requiere una comprensión más profunda de la lógica de la aplicación.

Un nuevo flujo de trabajo para identificar variables UPR

Para mejorar el proceso, hemos desarrollado un nuevo flujo de trabajo que aprovecha los LLMs para ayudar a los analistas humanos a identificar variables UPR de manera más efectiva. El objetivo principal de este flujo de trabajo es puntuar con precisión las variables según su relevancia para los privilegios de usuario mientras se reduce la cantidad de tiempo que los analistas necesitan invertir.

Aquí hay un esquema básico de cómo opera el flujo de trabajo:

  1. Análisis de Código: El flujo de trabajo comienza analizando el código fuente para construir un gráfico de dependencia del programa (PDG). Este gráfico presenta visualmente cómo diferentes sentencias de código se relacionan entre sí, ayudando a identificar dependencias.

  2. Subgráficos de Variables: A partir del PDG, se crean subgráficos específicos para cada variable. Estos subgráficos se enfocan en las partes del código que involucran directamente a la variable.

  3. Colección de Sentencias: El flujo de trabajo recopila sentencias de estos subgráficos, esencialmente reuniendo todo el código relevante alrededor de cada variable.

  4. Evaluación LLM: Cada sentencia se envía a un modelo de lenguaje grande, que califica su importancia en términos de problemas de privilegio de usuario.

  5. Cálculo de puntajes: Finalmente, los puntajes de las sentencias calificadas se agregan para producir un único puntaje UPR para cada variable, que representa cuán relacionada está con los privilegios de usuario.

  6. Revisión Manual: Después de obtener los puntajes, los analistas pueden revisar manualmente aquellas variables que obtuvieron un puntaje por encima de un umbral determinado, enfocando sus esfuerzos en las candidatas más prometedoras.

Resultados experimentales e implicaciones

Nuestra prueba de este flujo de trabajo ha mostrado resultados prometedores. La tasa de falsos positivos-es decir, cuántas variables UPR identificadas incorrectamente hay-fue solo de aproximadamente 13.49%. Esto indica que el sistema es bastante preciso, proporcionando significativamente menos resultados incorrectos en comparación con métodos heurísticos tradicionales.

Además, al observar el número total de variables UPR que nuestro método ha identificado, se encontró que era sustancialmente mayor que las encontradas a través de otros medios. Esta eficiencia no solo demuestra la efectividad de usar LLMs, sino que también sugiere que las organizaciones podrían ahorrar considerable tiempo y recursos al evaluar su seguridad.

Esta capacidad es esencial, especialmente para organizaciones más grandes con extensas bases de código, donde revisar manualmente cada variable simplemente no es factible. Al concentrarse en las variables identificadas como potencialmente riesgosas, los analistas pueden realizar su trabajo de manera más eficiente y efectiva.

Conclusión

En resumen, la introducción de un flujo de trabajo híbrido que integra LLMs en el proceso de identificar variables relacionadas con los privilegios de usuario representa un avance significativo en el análisis de seguridad del software. Al aprovechar las capacidades de estos modelos junto con técnicas de análisis de código tradicionales, es posible producir una comprensión más completa y práctica de las variables UPR.

Las organizaciones se benefician enormemente al poder automatizar partes del proceso, reduciendo efectivamente la carga manual sobre los analistas de seguridad mientras mejoran la precisión. A medida que el software sigue evolucionando y las amenazas crecen en complejidad, herramientas como esta jugarán un papel crucial en mantener la seguridad y proteger la información sensible.

El futuro del análisis de seguridad del software se ve prometedor con tales avances, y la investigación continua es necesaria para refinar aún más estos flujos de trabajo y adaptarlos a varios entornos de codificación y lenguajes. Construyendo sobre esta base, podemos esperar desarrollar soluciones aún más efectivas para salvaguardar nuestros datos contra accesos no autorizados y explotación.

Fuente original

Título: A hybrid LLM workflow can help identify user privilege related variables in programs of any size

Resumen: Many programs involves operations and logic manipulating user privileges, which is essential for the security of an organization. Therefore, one common malicious goal of attackers is to obtain or escalate the privileges, causing privilege leakage. To protect the program and the organization against privilege leakage attacks, it is important to eliminate the vulnerabilities which can be exploited to achieve such attacks. Unfortunately, while memory vulnerabilities are less challenging to find, logic vulnerabilities are much more imminent, harmful and difficult to identify. Accordingly, many analysts choose to find user privilege related (UPR) variables first as start points to investigate the code where the UPR variables may be used to see if there exists any vulnerabilities, especially the logic ones. In this paper, we introduce a large language model (LLM) workflow that can assist analysts in identifying such UPR variables, which is considered to be a very time-consuming task. Specifically, our tool will audit all the variables in a program and output a UPR score, which is the degree of relationship (closeness) between the variable and user privileges, for each variable. The proposed approach avoids the drawbacks introduced by directly prompting a LLM to find UPR variables by focusing on leverage the LLM at statement level instead of supplying LLM with very long code snippets. Those variables with high UPR scores are essentially potential UPR variables, which should be manually investigated. Our experiments show that using a typical UPR score threshold (i.e., UPR score >0.8), the false positive rate (FPR) is only 13.49%, while UPR variable found is significantly more than that of the heuristic based method.

Autores: Haizhou Wang, Zhilong Wang, Peng Liu

Última actualización: 2024-07-09 00:00:00

Idioma: English

Fuente URL: https://arxiv.org/abs/2403.15723

Fuente PDF: https://arxiv.org/pdf/2403.15723

Licencia: https://creativecommons.org/licenses/by/4.0/

Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.

Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.

Más de autores

Artículos similares