Simple Science

Ciência de ponta explicada de forma simples

# Informática# Criptografia e segurança# Engenharia de software

Aumentando a Segurança do Usuário Através da Análise de Privilégios

Um novo método usa modelos de linguagem pra identificar variáveis de privilégio de usuário no código.

― 8 min ler


Identificando Riscos deIdentificando Riscos deSegurança no Códigoprivilégio de usuário.encontrar vulnerabilidades deUsando modelos de linguagem pra
Índice

Em muitos aplicativos de software, controlar as permissões dos usuários é crucial para manter os dados seguros. Os programas costumam realizar certas tarefas, como fazer login dos usuários e decidir quais dados eles podem acessar. Essas tarefas podem ser sensíveis, pois se os atacantes conseguirem mais direitos do que deveriam, podem causar sérios problemas para a organização.

Um dos principais objetivos para quem tem más intenções é conseguir ou aumentar seus privilégios para acessar dados importantes. Quando se trata de defender esses programas e as organizações por trás deles, é essencial fechar as brechas que permitem que tais ataques tenham sucesso. Enquanto é mais fácil encontrar problemas de memória, como estouros de buffer, encontrar problemas lógicos que afetam as permissões dos usuários pode ser mais difícil e prejudicial.

Para enfrentar esses desafios, muitos analistas de segurança primeiro procuram o que chamamos de variáveis relacionadas a privilégios de usuário (UPR) no código. Estas são as variáveis usadas em operações ligadas a privilégios de usuário. Identificá-las ajuda a focar a busca em onde o código pode ser vulnerável a ataques. Essa tarefa pode levar muito tempo, então há uma necessidade de ferramentas que possam ajudar a tornar esse processo mais rápido e eficiente.

O Papel dos Modelos de Linguagem na Análise de Segurança

Recentemente, uma nova abordagem usando grandes modelos de linguagem (LLMs) surgiu para ajudar a encontrar variáveis UPR. Esses modelos podem processar e analisar código, visando ajudar os analistas a identificar essas variáveis importantes, que podem ser uma parte significativa para manter o software seguro.

Nosso método combina a análise tradicional de código com o poder dos LLMs para avaliar o quanto cada variável se relaciona com os privilégios de usuário. O objetivo aqui é produzir uma pontuação UPR para cada variável, mostrando quão próxima ela está das permissões do usuário.

Ao focar em pedaços menores de código e avaliá-los individualmente, nossa abordagem evita as desvantagens de tentar analisar grandes seções de código de uma vez. Em vez de receber um longo bloco de código, o modelo analisa declarações de código, o que permite fornecer classificações mais precisas para a pontuação UPR de cada variável.

A pontuação varia de 0 a 10, onde 0 significa que uma variável não tem nada a ver com permissões de usuário, e números mais altos indicam uma relação mais próxima. Após gerar essas pontuações, os analistas podem então olhar para as variáveis que tiveram uma pontuação alta para confirmar se elas realmente representam variáveis UPR.

A Importância de Identificar Variáveis UPR

Em qualquer aplicativo de software, especialmente aqueles que rodam em servidores, é vital restringir o que os usuários podem fazer. Por exemplo, se um usuário tem certos direitos, ele não deve poder acessar os dados de outro usuário sem a devida autorização. Se os atacantes conseguirem obter credenciais sensíveis, eles podem encontrar maneiras de explorar esses privilégios.

Por causa disso, muitas organizações revisam regularmente seu código para encontrar possíveis vulnerabilidades que poderiam ser exploradas. As vulnerabilidades geralmente se dividem em duas categorias: corrupções de memória e bugs lógicos. A corrupção de memória é muitas vezes mais simples de explorar, pois afeta diretamente como o programa funciona. Bugs lógicos, por outro lado, podem não causar problemas durante a execução normal, tornando-os mais difíceis de detectar e corrigir.

O problema é que, enquanto algumas ferramentas podem encontrar automaticamente erros de memória, existem menos opções efetivas para descobrir falhas lógicas. Muitos desses problemas surgem de práticas de codificação ruins, como armazenar informações sensíveis em código fonte.

Desafios Atuais na Identificação de Variáveis UPR

Encontrar variáveis UPR pode ser bastante desafiador por várias razões. Primeiro, há muitos tipos de variáveis que podem estar ligadas a privilégios de usuário. Exemplos incluem senhas, chaves secretas, tokens e mais. Reconhecer variáveis UPR não é apenas sobre identificar certas palavras-chave; na verdade, requer entender o contexto em que essas variáveis são usadas.

Existem métodos existentes para encontrar variáveis UPR, mas eles muitas vezes dependem de técnicas heurísticas, que podem ser limitadas em escalabilidade e precisão. Esses métodos podem usar padrões nos nomes das variáveis ou verificações simples, mas muitas vezes falham em capturar todas as variáveis relevantes, especialmente em grandes bases de código.

Como a segurança de um programa depende muitas vezes de como essas variáveis interagem com outras partes do código, é crucial analisar cuidadosamente suas relações. Isso apresenta outro desafio, pois requer uma compreensão mais profunda da lógica da aplicação.

Um Novo Fluxo de Trabalho para Identificar Variáveis UPR

Para melhorar o processo, desenvolvemos um novo fluxo de trabalho que aproveita os LLMs para ajudar os analistas humanos a identificar variáveis UPR de forma mais eficaz. O principal objetivo desse fluxo de trabalho é pontuar com precisão as variáveis com base em sua relevância para privilégios de usuário, enquanto reduz o tempo que os analistas precisam gastar.

Aqui está um esboço de como o fluxo de trabalho opera:

  1. Análise de Código: O fluxo de trabalho começa analisando o código fonte para construir um gráfico de dependência do programa (PDG). Esse gráfico apresenta visualmente como diferentes declarações de código se relacionam entre si, ajudando a identificar dependências.

  2. Subgráficos de Variáveis: A partir do PDG, subgráficos específicos para cada variável são criados. Esses subgráficos focam nas partes do código que envolvem diretamente a variável.

  3. Coleta de Declarações: O fluxo de trabalho coleta declarações desses subgráficos, essencialmente reunindo todo o código relevante em torno de cada variável.

  4. Avaliação do LLM: Cada declaração é então enviada a um grande modelo de linguagem, que avalia sua importância em termos de questões de privilégios de usuário.

  5. Cálculo da Pontuação: Por fim, as pontuações das declarações avaliadas são agregadas para produzir uma única pontuação UPR para cada variável, que representa quão relacionada ela está aos privilégios de usuário.

  6. Revisão Manual: Após obter as pontuações, os analistas podem revisar manualmente aquelas variáveis que pontuaram acima de um determinado limite, concentrando seus esforços nos candidatos mais promissores.

Resultados Experimentais e Implicações

Nossos testes desse fluxo de trabalho mostraram resultados promissores. A taxa de falsos positivos-significando quantas variáveis UPR foram identificadas incorretamente-foi de apenas cerca de 13,49%. Isso indica que o sistema é bastante preciso, fornecendo significativamente menos resultados incorretos em comparação com métodos heurísticos tradicionais.

Além disso, ao olhar para o número total de variáveis UPR que nosso método identificou, descobriu-se que era substancialmente maior do que aquelas encontradas por outros meios. Essa eficiência não apenas demonstra a eficácia do uso de LLMs, mas também sugere que as organizações poderiam economizar tempo e recursos consideráveis ao avaliar sua segurança.

Essa capacidade é essencial, especialmente para organizações maiores com extensas bases de código, onde conferir manualmente cada variável simplesmente não é viável. Ao se concentrar nas variáveis identificadas como potencialmente arriscadas, os analistas podem realizar seu trabalho de forma mais eficiente e eficaz.

Conclusão

Em resumo, a introdução de um fluxo de trabalho híbrido que integra LLMs no processo de identificação de variáveis relacionadas a privilégios de usuário representa um avanço significativo na análise de segurança de software. Ao aproveitar as capacidades desses modelos junto com técnicas tradicionais de análise de código, é possível produzir uma compreensão mais completa e prática das variáveis UPR.

As organizações se beneficiam enormemente ao poder automatizar partes do processo, reduzindo efetivamente a carga manual sobre os analistas de segurança enquanto melhoram a precisão. À medida que o software continua a evoluir e as ameaças enfrentadas se tornam mais complexas, ferramentas como esta desempenharão um papel crucial na manutenção da segurança e na proteção de informações sensíveis.

O futuro da análise de segurança de software parece encorajador com tais avanços, e pesquisas contínuas são necessárias para refinar ainda mais esses fluxos de trabalho e adaptá-los a vários ambientes e linguagens de codificação. Construindo sobre essa base, podemos esperar desenvolver soluções ainda mais eficazes para proteger nossos dados contra acessos não autorizados e explorações.

Fonte original

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

Resumo: 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 atualização: 2024-07-09 00:00:00

Idioma: English

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

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

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes