Simple Science

La science de pointe expliquée simplement

# Informatique# Génie logiciel

Améliorer la sécurité des logiciels grâce aux revues de code

Examiner le rôle des revues de code dans l'identification des défauts de sécurité logiciel.

― 8 min lire


Revue de code et sécuritéRevue de code et sécuritélogicielleidentifient les défauts de sécurité.Explorer comment les revues de code
Table des matières

Dans le monde d'aujourd'hui, les logiciels sont partout et ils jouent un rôle essentiel dans plein d'aspects de nos vies. Cependant, avec leur utilisation de plus en plus fréquente, les problèmes de sécurité sont devenus une grosse préoccupation. Des Défauts de sécurité dans les logiciels peuvent causer de sérieux problèmes comme des fuites de données et des interruptions de service. C'est pour ça qu'il est super important de détecter et de corriger ces défauts.

Une des manières d'identifier les défauts de sécurité, c'est à travers les revues de code. Cela consiste à examiner le code source pour dénicher les erreurs ou problèmes avant que le logiciel ne soit publié. Ce processus aide non seulement à améliorer la qualité du code, mais aussi à trouver des problèmes de sécurité que les outils automatiques pourraient rater.

Contexte

Malgré la disponibilité d'outils automatiques conçus pour détecter les défauts de sécurité, plein de programmes logiciels ont encore ces soucis. Parfois, les outils automatiques passent à côté des problèmes complexes parce qu'ils ne prennent pas en compte le contexte d'exécution du code. Du coup, des techniques manuelles comme les revues de code restent essentielles pour garantir la sécurité des logiciels.

La Revue de code est une pratique cruciale dans le développement logiciel. Pendant ces revues, les membres de l'équipe examinent le code des autres pour attraper des erreurs et proposer des améliorations. C'est super important pour repérer les problèmes liés à la sécurité qui pourraient passer inaperçus autrement.

Objectif de l'Étude

Le but de cette étude, c'est d'explorer comment les défauts de sécurité sont détectés et réglés pendant les revues de code. On a examiné les Commentaires des revues de code dans deux communautés de logiciels bien connues-OpenStack et Qt. En analysant ces revues, on voulait mieux comprendre comment les défauts de sécurité sont gérés dans ces projets.

Méthodes Utilisées

Pour cette enquête, on a collecté un gros nombre de commentaires de revue provenant de différents projets dans les communautés OpenStack et Qt. On s'est concentré sur les commentaires qui semblaient liés à la sécurité d'après certains mots-clés. Après avoir filtré ces commentaires, on les a analysés pour identifier quels défauts avaient été reconnus, comment ils étaient discutés et quelles actions avaient été prises pour les résoudre.

On a passé en revue plus de 20 000 commentaires et environ 600 d'entre eux ont été identifiés comme liés à la sécurité. Chaque commentaire a été soigneusement vérifié pour voir quel type de défaut de sécurité il évoquait, quelles suggestions étaient faites par les réviseurs et quelles actions les Développeurs ont prises en réponse.

Résultats

Types de Défauts de Sécurité Trouvés

D'après notre analyse, on a remarqué que les discussions sur les défauts de sécurité n'étaient pas très courantes dans les revues de code, représentant moins de 1% de tous les commentaires. Quand des défauts de sécurité étaient mentionnés, les types les plus courants incluaient :

  • Conditions de course : Problèmes causés par le timing des processus qui peuvent mener à un comportement inattendu.
  • Crash : Problèmes qui pourraient faire planter le logiciel de façon inattendue.
  • Fuites de ressources : Échecs à libérer correctement les ressources, ce qui peut entraîner une baisse de performance ou des pannes à long terme.

Actions des Réviseurs et Réponses des Développeurs

On a constaté que beaucoup de réviseurs proposaient activement des façons de corriger les défauts de sécurité qu'ils avaient identifiés. Plus de la moitié d'entre eux ont suggéré que les développeurs devraient s'occuper des problèmes détectés. Souvent, ils fournissaient des solutions claires ou des instructions pour aider les développeurs à comprendre comment corriger les problèmes.

Les développeurs ont répondu positivement à ces suggestions, beaucoup choisissant de mettre en œuvre les changements recommandés par les réviseurs. En fait, une part significative des défauts de sécurité identifiés pendant les revues a été résolue, avec des taux variant selon les types de défauts. Par exemple, les conditions de course étaient souvent résolues plus fréquemment que d'autres types.

Raisons des Défauts de Sécurité Non Résolus

Malgré le fait que beaucoup de problèmes aient été corrigés, certains défauts de sécurité demeuraient non résolus. Les principales raisons étaient :

  • Pas un Urgence : Dans certains cas, les développeurs estimaient que les défauts étaient mineurs et pas urgents, optant pour les laisser de côté pour plus tard.
  • Désaccord : Parfois, les développeurs n'étaient pas d'accord avec les réviseurs sur l'importance d'un défaut à corriger.
  • Manque de Solutions : Quelquefois, les développeurs ne savaient pas comment résoudre les problèmes de sécurité identifiés en raison d’un manque de connaissances ou de compréhension du code.

Discussion

Importance de Combiner Outils et Revue Manuelle

Les résultats soulignent le besoin d’une approche en deux étapes pour détecter les défauts de sécurité. Les outils automatiques peuvent rapidement trouver un tas de problèmes potentiels, mais ils ne devraient pas remplacer l’analyse perspicace apportée par des réviseurs humains. Les réviseurs peuvent comprendre parfaitement le contexte du code, ce qui leur permet de repérer des problèmes potentiels qui ne sont pas forcément évidents par les vérifications automatiques.

Caractéristiques des Projets

Les types de défauts de sécurité trouvés peuvent varier considérablement en fonction des caractéristiques du projet logiciel. Dans notre étude, certains types de défauts étaient moins courants dans les projets OpenStack et Qt, ce qui indique que la nature même du projet influence les types de vulnérabilités qui peuvent exister.

Besoin de Revues Ciblées

Notre étude a révélé que les réviseurs devraient prêter une attention particulière aux zones de code qui impliquent des opérations complexes, comme le multi-threading et l'allocation de mémoire. Ces zones sont plus susceptibles d'introduire des défauts de sécurité, donc des revues approfondies dans ces sections sont cruciales.

Standardisation des Pratiques de Revue

Un des points clés tirés de notre recherche est l'importance de standardiser les processus pendant les revues de code. Beaucoup de réviseurs et de développeurs ne communiquaient pas clairement sur les raisons de l’ignorance des défauts de sécurité. Établir des normes de communication claires pourrait mener à une meilleure compréhension et une résolution plus rapide des problèmes de sécurité.

Recommandations

  1. Combiner Outils Automatiques avec Revues de Code : Les équipes de développement logiciel devraient utiliser des outils automatiques pour des vérifications initiales, suivies de revues manuelles approfondies pour attraper les problèmes complexes.

  2. Se Concentrer sur les Zones à Haut Risque : Les réviseurs devraient diriger leur attention sur les sections de code susceptibles d'introduire des problèmes de sécurité, notamment celles qui impliquent des ressources ou du multi-threading.

  3. Communication Claire : Les développeurs devraient fournir des raisons claires lorsqu'ils choisissent de ne pas corriger les défauts identifiés. Cette transparence peut faciliter une meilleure collaboration et compréhension entre développeurs et réviseurs.

  4. Documenter les Problèmes de Sécurité Non Résolus : Tenir un registre des défauts de sécurité identifiés qui ne sont pas immédiatement corrigés peut aider les équipes à suivre et à traiter ces problèmes dans de futures mises à jour.

Conclusion

L'étude de la détection des défauts de sécurité à travers les revues de code dans les communautés OpenStack et Qt révèle des perspectives intéressantes sur comment ces pratiques peuvent être améliorées. Combiner des outils automatiques avec des revues manuelles structurées, se concentrer sur les zones de code à haut risque, et améliorer la communication peuvent tous contribuer à une meilleure sécurité logicielle. En affinant ces processus, les équipes de développement peuvent plus efficacement identifier et traiter les défauts de sécurité, ce qui mène à des logiciels plus sûrs et fiables pour les utilisateurs.

Travaux Futurs

Des recherches supplémentaires pourraient élargir cette étude en examinant un éventail plus large de projets logiciels pour valider les résultats. En outre, explorer l'efficacité de différentes pratiques de révision et leur impact sur la résolution des défauts de sécurité pourrait fournir des orientations encore plus complètes pour les équipes de développement logiciel.

En améliorant continuellement les pratiques entourant les revues de code et la gestion des défauts de sécurité, les développeurs de logiciels peuvent travailler vers un écosystème logiciel plus sûr et résilient.

Source originale

Titre: Security Defect Detection via Code Review: A Study of the OpenStack and Qt Communities

Résumé: Background: Despite the widespread use of automated security defect detection tools, software projects still contain many security defects that could result in serious damage. Such tools are largely context-insensitive and may not cover all possible scenarios in testing potential issues, which makes them susceptible to missing complex security defects. Hence, thorough detection entails a synergistic cooperation between these tools and human-intensive detection techniques, including code review. Code review is widely recognized as a crucial and effective practice for identifying security defects. Aim: This work aims to empirically investigate security defect detection through code review. Method: To this end, we conducted an empirical study by analyzing code review comments derived from four projects in the OpenStack and Qt communities. Through manually checking 20,995 review comments obtained by keyword-based search, we identified 614 comments as security-related. Results: Our results show that (1) security defects are not prevalently discussed in code review, (2) more than half of the reviewers provided explicit fixing strategies/solutions to help developers fix security defects, (3) developers tend to follow reviewers' suggestions and action the changes, (4) Not worth fixing the defect now and Disagreement between the developer and the reviewer are the main causes for not resolving security defects. Conclusions: Our research results demonstrate that (1) software security practices should combine manual code review with automated detection tools, achieving a more comprehensive coverage to identifying and addressing security defects, and (2) promoting appropriate standardization of practitioners' behaviors during code review remains necessary for enhancing software security.

Auteurs: Jiaxin Yu, Liming Fu, Peng Liang, Amjed Tahir, Mojtaba Shahin

Dernière mise à jour: 2023-07-05 00:00:00

Langue: English

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

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

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