un regard sur les bonnes pratiques d'implémentation eric mittelette eric vernié microsoft...
TRANSCRIPT
Un regard sur les bonnes pratiques
d'implémentation
Un regard sur les bonnes pratiques
d'implémentation
Eric MitteletteEric 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 utilisateurSe méfier des entrées utilisateurSe protéger contre les saturations de tamponSe protéger contre les saturations de tamponÉviter les scripts inter-siteÉviter les scripts inter-siteN'exigez pas d'autorisations d'administrateur N'exigez pas d'autorisations d'administrateur système (sa)système (sa)Attention au code de cryptage !Attention au code de cryptage !Réduisez votre profil d'attaqueRéduisez votre profil d'attaqueUtilisez le principe du moindre privilègeUtilisez le principe du moindre privilègeFaites attention aux modes de défaillanceFaites attention aux modes de défaillanceL'emprunt d'identité est fragileL'emprunt d'identité est fragile
Écrivez des applications que les non-administrateurs Écrivez des applications que les non-administrateurs puissent réellement utiliserpuissent réellement utiliser
http://www.microsoft.com/france/msdn/securite/articles.mspx
Agenda
« Top 10 » des questions de sécurité« Top 10 » des questions de sécuritéContrôler les saisiesContrôler les saisies
Problèmes liés à la localisationProblèmes liés à la localisation
Protéger un secretProtéger un secret
Utiliser la cryptographieUtiliser la cryptographie
Problèmes de déni de serviceProblèmes de déni de service
Contrôler l’exécution du codeContrôler l’exécution du code
Sécurité et gestion des rôlesSécurité et gestion des rôles
Propriétés intellectuellePropriétés intellectuelle
Toute saisie est source de problème
Point fondamental lors de la conception Point fondamental lors de la conception
Identifier au plus tôt saisie,règles de saisieIdentifier au plus tôt saisie,règles de saisieSaisie et Buffer overrun dans le code C/C++Saisie et Buffer overrun dans le code C/C++
Les formes canoniques (piège dans les url)Les formes canoniques (piège dans les url)
Saisie et base de données (Sql injection)Saisie et base de données (Sql injection)
Saisie sur le Web et XSS (cross scripting site)Saisie sur le Web et XSS (cross scripting site)
Denis de service et robustesse des codesDenis de service et robustesse des codes
http://www.microsoft.com/france/technet/securite/secmod94.mspx#EIBAC
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
RemplaceRemplace lesles donnéesdonnées stockéesstockées dansdans lele segmentsegment
Plus difficile à exploiter qu'un Plus difficile à exploiter qu'un débordement de mémoire tampondébordement de mémoire tampon
Données
Pointeur
Données
Données
Pointeur
Pointeur
strcpystrcpy xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Problèmes liés à la localisation
La localisation peut être une source de La localisation peut être une source de faille de sécurité.faille de sécurité.
Notamment en C/C++ et lors de la Notamment en C/C++ et lors de la manipulation des chaines UNICODEmanipulation des chaines UNICODE
MultiByteToWideCharMultiByteToWideChar() ()
Outil d’analyse statique de codeOutil d’analyse statique de code/Analyse et VS2005 (C++)/Analyse et VS2005 (C++)
http://www.microsoft.com/france/technet/securite/default.mspx
Protéger un secret
Identifier les données « secrètes » de Identifier les données « secrètes » de l’applicationl’application
Chaîne de connexionChaîne de connexionSaisie d’un mot de passeSaisie d’un mot de passeSecureString SecureString
Gestion des mots de passe dans .NET vs natifGestion des mots de passe dans .NET vs natif
Utiliser la cryptographie et choisir la Utiliser la cryptographie et choisir la bonne approche…bonne approche…
Ne pas ré inventer la roueNe pas ré inventer la roueRester à jour des hack et paradesRester à jour des hack et parades
http://www.microsoft.com/france/msdn/securite/secmod39.mspx
Utiliser la Cryptographie
Différents algorithmesDifférents algorithmesSymétrique – asymétriqueSymétrique – asymétriqueHashHashSignature, et certificatSignature, et certificat
.NET encapsule certains d’entre eux.NET encapsule certains d’entre euxCas concrets:Cas concrets:
Comment transmettre un secret à un Comment transmettre un secret à un utilisateur utilisateur Gérer le mot de passe de l’utilisateurGérer le mot de passe de l’utilisateur
http://www.microsoft.com/france/msdn/securite/secmod39.mspx
Problème de Déni de service
L’attaque vise a mettre a genoux les L’attaque vise a mettre a genoux les application serveurapplication serveur
Buffer énorme, recherche de faille Buffer énorme, recherche de faille technique, hack sur les services du technique, hack sur les services du serveur…serveur…
Utilisation abusive du compte sa pour Utilisation abusive du compte sa pour une base de donnéesune base de données
http://www.microsoft.com/france/technet/securite/secmod97.mspx Menaces et contre mesure :http://www.microsoft.com/france/technet/securite/secmod75.mspx
Contrôle de l’exécution du code .NET
Code Access SecurityCode Access SecurityInitiative .NET de contrôle de l’exécution d’un codeInitiative .NET de contrôle de l’exécution d’un codeTout code appartient a un groupe de code, un groupe de code Tout code appartient a un groupe de code, un groupe de code va posséder un jeu d’autorisation.va posséder un jeu d’autorisation.On peut créer ses jeux de permissionOn peut créer ses jeux de permission
Entité de sécurité Description
StratégieStratégie
Définie par les administrateursAppliquée au moment de l'exécutionSimplifie l'administrationContient des autorisationsContient des groupes de codes
GroupeGroupe dede codescodes
Associe des composants similairesBasé sur les preuvesLié à un ou plusieurs jeux d'autorisations
JeuJeu d'autorisationsd'autorisations
Est un ensemble d'autorisations accordéeshttp://www.microsoft.com/france/technet/securite/secmod79.mspx
Gestion des rôles applicatifs .NET
Notion d’ Identificateur et de RôlesNotion d’ Identificateur et de RôlesComparable au mécanisme COM+Comparable au mécanisme COM+
Rôle et users peuvent être des Rôle et users peuvent être des comptes/groupes NT ou créé par la logique comptes/groupes NT ou créé par la logique applicativeapplicative
Couplage « de fait » avec ActiveDirectory…Couplage « de fait » avec ActiveDirectory…
Et/ou Rôles ApplicatifsEt/ou Rôles Applicatifs
Role Based Security est traité au même niveau Role Based Security est traité au même niveau que Code Access Securityque Code Access Security
Même mécanisme d’interception/EceptionMême mécanisme d’interception/Eception
Utilise l’Objet : PrincipalPermissionUtilise l’Objet : PrincipalPermissionL’application en cours doit en avoir les droits…L’application en cours doit en avoir les droits…
Le rôle est porté par la thread d’exécution…Le rôle est porté par la thread d’exécution…http://www.microsoft.com/france/technet/securite/secmod80.mspx
Protection de la propriété intellectuelle
Le code MSIL est lisible, et l’on peut y Le code MSIL est lisible, et l’on peut y comprendre les algorithmes utiliséscomprendre les algorithmes utilisés
Les Obfuscator sont la réponseLes Obfuscator sont la réponseAttention aux idées reçue sur .NETAttention aux idées reçue sur .NET
Dé assemblage et code natif…Dé assemblage et code natif…
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vsent7/html/vxoriDesignConsiderationsForDistributedApplications.asp
Conclusion
Restons vigilant !Restons vigilant !
Cycle itératifs sur la sécurité dés la Cycle itératifs sur la sécurité dés la phase de conception jusqu’à la phase de phase de conception jusqu’à la phase de maintenance…maintenance…
Créer une équipe sécurité, penser à la Créer une équipe sécurité, penser à la formation et mise a jour annuelle des formation et mise a jour annuelle des développeursdéveloppeurs
S’équiper d’outils de test et de S’équiper d’outils de test et de mesures…mesures…
Microsoft Confidential – NDA Material
Sur MSDN, retrouvez tout un ensemble de Sur MSDN, retrouvez tout un ensemble de ressources liées à la sécurité pour les ressources liées à la sécurité pour les développeursdéveloppeurs
Les meilleures articles techniques en françaisLes meilleures articles techniques en français
Les Webcasts (vidéos de formation) enregistrées lors Les Webcasts (vidéos de formation) enregistrées lors des Rencontres Sécurité de décembre 2005, et ceux, des Rencontres Sécurité de décembre 2005, et ceux, à venir, des Journées Microsoft de la Sécuritéà venir, des Journées Microsoft de la Sécurité
Des cours en ligne, en français et gratuitsDes cours en ligne, en français et gratuits
Les derniers bulletins de sécuritéLes derniers bulletins de sécurité
Et le jeu concours « Sale bug ! »Et le jeu concours « Sale bug ! »Chaque mois, un bug caché dans une portion de codeChaque mois, un bug caché dans une portion de code
Le mois suivant, la solution sur le site avec des liens vers des articles pour Le mois suivant, la solution sur le site avec des liens vers des articles pour en savoir plusen savoir plus
Et des lots à gagner, tout au long de l’annéeEt des lots à gagner, tout au long de l’année