Simple Science

La science de pointe expliquée simplement

# Informatique# Cryptographie et sécurité# Génie logiciel

Améliorer la sécurité des utilisateurs grâce à l'analyse des privilèges

Une nouvelle méthode utilise des modèles de langage pour identifier les variables de privilège des utilisateurs dans le code.

― 8 min lire


Identifier les risques deIdentifier les risques desécurité dans le codeprivilège utilisateur.dénicher des vulnérabilités deUtiliser des modèles de langage pour
Table des matières

Dans plein d'applis logicielles, contrôler les permissions des utilisateurs est super important pour garder les données en sécurité. Les programmes font souvent des trucs comme connecter les utilisateurs et décider à quelles données ils peuvent accéder. Ces tâches peuvent être sensibles, parce que si des attaquants réussissent à obtenir plus de droits que prévu, ça peut causer de gros soucis pour l'organisation.

Un des objectifs principaux pour les personnes malintentionnées, c'est d'obtenir ou d'augmenter leurs privilèges pour accéder à des données importantes. Quand il s'agit de défendre ces programmes et les organisations qui les soutiennent, il est essentiel de boucher les trous qui permettent à ces attaques de réussir. Bien qu'il soit plus facile de repérer des problèmes de mémoire comme des dépassements de tampon, trouver des soucis logiques qui affectent les privilèges des utilisateurs peut être plus compliqué et nuisible.

Pour relever ces défis, beaucoup d'analystes en sécurité commencent par chercher ce qu'on appelle des variables liées aux privilèges des utilisateurs (UPR) dans le code. Ce sont les variables qui sont utilisées dans des opérations liées aux privilèges utilisateur. Les identifier aide à concentrer la recherche sur les parties du code qui pourraient être vulnérables aux attaques. Cette tâche peut prendre beaucoup de temps, donc il y a un besoin d'outils qui peuvent aider à rendre ce processus plus rapide et efficace.

Le Rôle des Modèles de Langage dans l'Analyse de Sécurité

Récemment, une nouvelle approche utilisant de grands modèles de langage (LLMs) a été mise en place pour aider à trouver les variables UPR. Ces modèles peuvent traiter et analyser le code, visant à aider les analystes à repérer ces variables importantes, qui peuvent être une partie significative de la sécurité des logiciels.

Notre méthode combine l'Analyse de code traditionnelle avec la puissance des LLMs pour évaluer combien chaque variable est liée aux privilèges utilisateur. L'objectif ici est de produire un score UPR pour chaque variable, montrant à quel point elle est proche des permissions utilisateurs.

En se concentrant sur des petits morceaux de code et en les évaluant individuellement, notre approche évite les inconvénients d'essayer d'analyser de grandes sections de code d'un coup. Au lieu de recevoir un long bloc de code, le modèle examine des instructions de code, ce qui lui permet de donner des évaluations plus précises pour le score UPR de chaque variable.

Le score varie de 0 à 10, où 0 signifie qu'une variable n'a rien à voir avec les permissions utilisateurs, et des chiffres plus élevés indiquent une relation plus étroite. Après avoir généré ces scores, les analystes peuvent ensuite regarder les variables qui ont obtenu de bons scores pour confirmer si elles représentent vraiment des variables UPR.

L'Importance d'Identifier les Variables UPR

Dans n'importe quelle appli logicielle, surtout celles qui tournent sur des serveurs, il est vital de restreindre ce que les utilisateurs peuvent faire. Par exemple, si un utilisateur a certains droits, il ne devrait pas pouvoir accéder aux données d'un autre utilisateur sans autorisation appropriée. Si des attaquants réussissent à mettre la main sur des identifiants sensibles, ils peuvent trouver des moyens d'exploiter ces privilèges.

Pour cette raison, beaucoup d'organisations revoient régulièrement leur code pour trouver des vulnérabilités possibles qui pourraient être exploitées. Les vulnérabilités tombent généralement dans deux catégories : les corruptions de mémoire et les bugs logiques. La corruption de mémoire est souvent plus simple à exploiter, car elle affecte directement le fonctionnement du programme. Les bugs logiques, en revanche, peuvent ne pas poser de problèmes pendant l'exécution normale, ce qui les rend plus difficiles à repérer et à corriger.

Le problème, c'est que même si certains outils peuvent trouver automatiquement des erreurs de mémoire, il y a moins d'options efficaces pour déceler les failles logiques. Beaucoup de ces soucis proviennent de pratiques de codage médiocres, comme le fait de coder en dur des informations sensibles dans le code source.

Défis Actuels pour Identifier les Variables UPR

Trouver des variables UPR peut être assez compliqué pour plusieurs raisons. D'abord, il y a plein de types de variables qui pourraient être liés aux privilèges utilisateurs. Par exemple, des mots de passe, des clés secrètes, des jetons, et plus encore. Reconnaître les variables UPR ne se résume pas à repérer certains mots-clés ; il faut comprendre le contexte dans lequel ces variables sont utilisées.

Il existe des méthodes pour trouver des variables UPR, mais elles reposent souvent sur des techniques heuristiques, qui peuvent être limitées en termes d'évolutivité et de précision. Ces méthodes peuvent utiliser des motifs dans les noms de variables ou des vérifications simples, mais elles échouent souvent à attraper toutes les variables pertinentes, surtout dans de grands codebases.

Comme la sécurité d'un programme dépend souvent de la manière dont ces variables interagissent avec d'autres morceaux de code, il est crucial d'analyser leurs relations avec soin. Cela pose un autre défi, car cela nécessite une compréhension plus profonde de la logique de l'application.

Un Nouveau Flux de Travail pour Identifier les Variables UPR

Pour améliorer le processus, nous avons développé un nouveau flux de travail qui exploite les LLMs pour aider les analystes humains à identifier les variables UPR plus efficacement. Le but principal de ce flux de travail est de bien scorer les variables en fonction de leur pertinence par rapport aux privilèges utilisateurs tout en réduisant le temps que les analystes doivent passer.

Voici un aperçu de la façon dont fonctionne le flux de travail :

  1. Analyse du Code : Le flux commence par analyser le code source pour construire un graphe de dépendance de programme (PDG). Ce graphe présente visuellement comment différentes instructions de code se rapportent les unes aux autres, aidant à identifier les dépendances.

  2. Sous-graphes de Variables : À partir du PDG, des sous-graphes spécifiques pour chaque variable sont créés. Ces sous-graphes se concentrent sur les parties du code qui impliquent directement la variable.

  3. Collecte d'Instructions : Le flux recueille les instructions de ces sous-graphes, rassemblant essentiellement tout le code pertinent autour de chaque variable.

  4. Évaluation par LLM : Chaque instruction est ensuite soumise à un grand modèle de langage, qui évalue son importance en termes de problèmes de privilèges utilisateurs.

  5. Calcul de scores : Enfin, les scores des instructions évaluées sont agrégés pour produire un score UPR unique pour chaque variable, représentant à quel point elle est liée aux privilèges utilisateurs.

  6. Revue manuelle : Après avoir obtenu les scores, les analystes peuvent examiner manuellement les variables qui ont obtenu un score au-dessus d'un certain seuil, concentrant leurs efforts sur les candidates les plus prometteuses.

Résultats Expérimentaux et Implications

Nos tests de ce flux de travail ont montré des résultats prometteurs. Le taux de faux positifs-c'est-à-dire le nombre de variables UPR identifiées à tort-était seulement d'environ 13,49 %. Cela indique que le système est assez précis, fournissant beaucoup moins de résultats incorrects par rapport aux méthodes heuristiques traditionnelles.

En outre, en regardant le nombre total de variables UPR que notre méthode a identifiées, il s'est avéré qu'il était considérablement plus élevé que ceux trouvés par d'autres moyens. Cette efficacité démontre non seulement l'efficacité de l'utilisation des LLMs, mais suggère aussi que les organisations pourraient gagner beaucoup de temps et de ressources en évaluant leur sécurité.

Cette capacité est essentielle, surtout pour les grandes organisations avec des codebases étendues, où vérifier manuellement chaque variable n'est tout simplement pas réalisable. En se concentrant sur les variables identifiées comme potentiellement risquées, les analystes peuvent travailler plus efficacement et plus efficacement.

Conclusion

En résumé, l'introduction d'un flux de travail hybride qui intègre les LLMs dans le processus d'identification des variables liées aux privilèges utilisateurs représente une avancée significative dans l'analyse de sécurité des logiciels. En profitant des capacités de ces modèles aux côtés des techniques d'analyse de code traditionnelles, il est possible de produire une compréhension plus approfondie et pratique des variables UPR.

Les organisations tirent un grand bénéfice de la possibilité d'automatiser certaines parties du processus, réduisant efficacement le fardeau manuel sur les analystes en sécurité tout en améliorant la précision. Alors que les logiciels continuent d'évoluer et que les menaces deviennent plus complexes, des outils comme celui-ci joueront un rôle crucial dans le maintien de la sécurité et la protection des informations sensibles.

L'avenir de l'analyse de sécurité logicielle semble encourageant avec de tels progrès, et une recherche continue est nécessaire pour affiner davantage ces flux de travail et les adapter à divers environnements de codage et langages. En s'appuyant sur cette fondation, nous pouvons espérer développer des solutions encore plus efficaces pour protéger nos données contre l'accès non autorisé et l'exploitation.

Source originale

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

Résumé: 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.

Auteurs: Haizhou Wang, Zhilong Wang, Peng Liu

Dernière mise à jour: 2024-07-09 00:00:00

Langue: English

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

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

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

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Plus d'auteurs

Articles similaires