Meilleures pratiques de sécurité pour C++

Mise à jour : novembre 2007

Cette rubrique contient des informations sur les outils et les applications pratiques de sécurité recommandés. L'utilisation de ces ressources et de ces outils n'immunise pas les applications contre les attaques, mais diminue le risque de celles-ci.

Fonctionnalités de sécurité de Visual C++

Cette section traite des fonctionnalités de sécurité intégrées au compilateur et à l'éditeur de liens Visual C++.

  • /GS (Vérification de la sécurité de la mémoire tampon)
    Cette option du compilateur indique au compilateur d'insérer le code de détection du débordement dans les fonctions qui courent un risque d'être exploitées. Lorsqu'un débordement est détecté, l'exécution est interrompue. Cette option est activée par défaut.

  • /SAFESEH (L'image est dotée de gestionnaires d'exceptions sécurisés)
    Cette option de l'éditeur de liens indique à l'éditeur de liens d'inclure dans l'image de sortie une table qui contient l'adresse de chaque gestionnaire d'exceptions. Pendant l'exécution, le système d'exploitation utilise cette table pour s'assurer que seuls les gestionnaires d'exceptions légitimes sont exécutés. Cela contribue à empêcher l'exécution de gestionnaires d'exceptions introduits par une attaque malveillante à l'exécution. Cette option est désactivée par défaut.

  • /analyze (Analyse du code d'entreprise)
    Cette option du compilateur active l'analyse du code, qui signale les problèmes de sécurité potentiels, tels que le dépassement de mémoire tampon, la mémoire non initialisée, le déréférencement de pointeur null et les fuites de mémoire. Cette option est désactivée par défaut. Pour plus d'informations, consultez Vue d'ensemble de l'analyse du code C/C++.

Sécurité CRT améliorée

Pour Visual C++ 2005, la bibliothèque Runtime C (CRT) a été élargie afin de comprendre des versions sécurisées des fonctions posant des problèmes de sécurité. (La fonction strcpy de copie de chaîne non contrôlée, par exemple.) Les versions les plus anciennes et moins sûres de ces fonctions sont maintenant désapprouvées et leur utilisation entraîne donc des avertissements à la compilation. Les programmeurs sont fortement incités à utiliser les versions sécurisées de ces fonctions CRT plutôt que de supprimer ces avertissements de compilation. Pour plus d'informations, consultez Security Enhancements in the CRT.

Itérateurs vérifiés

Avec les itérateurs vérifiés, les utilisateurs des classes de conteneur de bibliothèque C++ standard sont prévenus des tentatives d'accès aux éléments situés hors des limites d'un conteneur. Pour plus d'informations, consultez Checked Iterators.

Analyse du code managé

L'outil d'analyse du code managé, également connu sous le nom de FxCop, est un outil qui vérifie la conformité des assemblys aux règles de conception de Microsoft .NET Framework. FxCop analyse le code et les métadonnées de chaque assembly et recherche des défaillances dans les domaines suivants :

  • Conception des bibliothèques

  • Localisation

  • Conventions d'attribution d'un nom

  • Performances

  • Sécurité

L'outil d'analyse du code managé est inclus dans Visual Studio Team System et peut également être téléchargé à l'adresse https://www.gotdotnet.com/team/fxcop/.

Windows Application Verifier

Disponible dans le cadre de l'Application Compatibility Toolkit, l'Application Verifier (AppVerifier) est un outil qui peut aider les développeurs à identifier la compatibilité, la stabilité et les problèmes de sécurité potentiels des applications.

La fonction de l'AppVerifier est de surveiller l'usage que fait une application du système d'exploitation au cours de son exécution, notamment le système de fichiers, le Registre, la mémoire et l'API. L'outil fournit une aide à la correction des problèmes qu'il découvre au niveau du code source.

Le vérificateur vous permet d'exécuter les opérations suivantes :

  • Tester les erreurs potentielles de compatibilité des applications, provoquées par des erreurs de programmation courantes.

  • Rechercher dans une application les problèmes liés à la mémoire.

  • Déterminer la conformité d'une application avec diverses exigences des programmes d'attribution des logos « Conçu pour Windows XP » ou « Certifié pour Windows Server™ 2003 ».

  • Identifier les problèmes de sécurité potentiels d'une application.

Windows Application Verifier est disponible à l'adresse https://www.microsoft.com/windows/appcompatibility/appverifier.mspx.

Caractéristiques de sécurité du .NET Framework

Cette section propose une vue d'ensemble de deux fonctionnalités de sécurité liées du .NET Framework.

Comptes utilisateur Windows

L'utilisation de comptes utilisateur Windows appartenant au groupe Administrateurs expose les développeurs et, par extension, les utilisateurs, à des problèmes de sécurité. Pour plus d'informations, consultez Exécution en tant que membre du groupe Utilisateurs.

Augmentation de la sécurité à l'aide du contrôle de compte d'utilisateur sous Windows Vista

Le contrôle de compte d'utilisateur (UAC) est une fonctionnalité de Windows Vista dans laquelle les comptes d'utilisateurs ont des privilèges limités. Pour plus d'informations, consultez Répercussions du contrôle de compte utilisateur sur votre application.

Voir aussi

Concepts

Répercussions du contrôle de compte utilisateur sur votre application

Référence

System.Security

Autres ressources

Sécurisation des applications