Un regard sur les bonnes pratiques d'implémentation Eric Mittelette Eric Vernié Microsoft France - DPE
Les 10 grandes r è gles de s é curit é Qu'un d é veloppeur doit conna î tre pour prot é ger son code Se méfier des entrées utilisateur Se protéger contre les saturations de tampon Éviter les scripts inter-site N'exigez pas d'autorisations d'administrateur système (sa) Attention au code de cryptage ! Réduisez votre profil d'attaque Utilisez le principe du moindre privilège Faites attention aux modes de défaillance L'emprunt d'identité est fragile Écrivez des applications que les non-administrateurs puissent réellement utiliser
Agenda « Top 10 » des questions de sécurité Contrôler les saisies Problèmes liés à la localisation Protéger un secret Utiliser la cryptographie Problèmes de déni de service Contrôler lexécution du code Sécurité et gestion des rôles Propriétés intellectuelle
Toute saisie est source de problème Point fondamental lors de la conception Identifier au plus tôt saisie,règles de saisie Saisie et Buffer overrun dans le code C/C++ Les formes canoniques (piège dans les url) Saisie et base de données (Sql injection) Saisie sur le Web et XSS (cross scripting site) Denis de service et robustesse des codes
void UnSafe (const char* uncheckedData) { int anotherLocalVariable; strcpy (localVariable, uncheckedData); } char localVariable[4]; Exemple de débordement de la pile Haut de la pile char[4] int Adresse de retour
Débordement de segments de mémoire Remplace les donn é es stock é es dans le segment Plus difficile à exploiter qu'un d é bordement de m é moire tampon Données Pointeur Données Pointeur strcpy xxxxxxx xxxxxxx
Problèmes liés à la localisation La localisation peut être une source de faille de sécurité. Notamment en C/C++ et lors de la manipulation des chaines UNICODE MultiByteToWideChar() Outil danalyse statique de code /Analyse et VS2005 (C++)
Protéger un secret Identifier les données « secrètes » de lapplication Chaîne de connexion Saisie dun mot de passe SecureString Gestion des mots de passe dans.NET vs natif Utiliser la cryptographie et choisir la bonne approche… Ne pas ré inventer la roue Rester à jour des hack et parades
Utiliser la Cryptographie Différents algorithmes Symétrique – asymétrique Hash Signature, et certificat.NET encapsule certains dentre eux Cas concrets: Comment transmettre un secret à un utilisateur Gérer le mot de passe de lutilisateur
Problème de Déni de service Lattaque vise a mettre a genoux les application serveur Buffer énorme, recherche de faille technique, hack sur les services du serveur… Utilisation abusive du compte sa pour une base de données Menaces et contre mesure :
Contrôle de lexécution du code.NET Code Access Security Initiative.NET de contrôle de lexécution dun code Tout code appartient a un groupe de code, un groupe de code va posséder un jeu dautorisation. On peut créer ses jeux de permission Entit é de s é curit é Description Strat é gie Définie par les administrateurs Appliquée au moment de l'exécution Simplifie l'administration Contient des autorisations Contient des groupes de codes Groupe de codes Associe des composants similaires Basé sur les preuves Lié à un ou plusieurs jeux d'autorisations Jeu d'autorisations Est un ensemble d'autorisations accordées
Gestion des rôles applicatifs.NET Notion d Identificateur et de Rôles Comparable au mécanisme COM+ Rôle et users peuvent être des comptes/groupes NT ou créé par la logique applicative Couplage « de fait » avec ActiveDirectory… Et/ou Rôles Applicatifs Role Based Security est traité au même niveau que Code Access Security Même mécanisme dinterception/Eception Utilise lObjet : PrincipalPermission Lapplication en cours doit en avoir les droits… Lapplication en cours doit en avoir les droits… Le rôle est porté par la thread dexécution…
Protection de la propriété intellectuelle Le code MSIL est lisible, et lon peut y comprendre les algorithmes utilisés Les Obfuscator sont la réponse Attention aux idées reçue sur.NET Dé assemblage et code natif… 7/html/vxoriDesignConsiderationsForDistributedApplications.asp
Conclusion Restons vigilant ! Cycle itératifs sur la sécurité dés la phase de conception jusquà la phase de maintenance… Créer une équipe sécurité, penser à la formation et mise a jour annuelle des développeurs Séquiper doutils de test et de mesures…
Microsoft Confidential – NDA Material Sur MSDN, retrouvez tout un ensemble de ressources liées à la sécurité pour les développeurs Les meilleures articles techniques en français Les Webcasts (vidéos de formation) enregistrées lors des Rencontres Sécurité de décembre 2005, et ceux, à venir, des Journées Microsoft de la Sécurité Des cours en ligne, en français et gratuits Les derniers bulletins de sécurité Et le jeu concours « Sale bug ! » Chaque mois, un bug caché dans une portion de code Le mois suivant, la solution sur le site avec des liens vers des articles pour en savoir plus Et des lots à gagner, tout au long de lannée