310 likes | 422 Views
Développement Sécurisé Tour Novembre-Décembre 2005. Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre 2005. Agenda. Partie I : Méthodologie Sécurité et le développement Partie II : Hack et code Top X des problèmes de développement
E N D
Développement SécuriséTour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre 2005
Agenda • Partie I : Méthodologie • Sécurité et le développement • Partie II : Hack et code • Top X des problèmes de développement • Conclusion
Partie I: Sécurité et le développement • Stratégie de sécurité Microsoft • SD3 - SDL • Analyse des risques, outils, méthodologie • Stratégie de développement sécurisé • Informatique de confiance et SDL (WSI) • STRIDE Model et analyse des menaces … • Security et ressource humaine… • Outils de test et d’analyse de code … • PAG de sécurité • http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/SecurityGuidanceIndex.asp
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
Partie II • « Top 10 » des questions de sécurité • Contrôle des saisies • Problèmes liés à la localisation • Protéger un secret • Utiliser la cryptographie • Problèmes de déni de service • Contrôler l’exécution du code • Sécurité et gestion des rôles • Propriétés intellectuelle • Sécuriser un site WEB • Sécuriser un Web Service
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 http://www.microsoft.com/france/technet/securite/secmod94.mspx#EIBAC
voidUnSafe(constchar*uncheckedData) { charlocalVariable[4]; intanotherLocalVariable; strcpy(localVariable,uncheckedData); } Exemplededébordementdelapile Hautdelapile char[4] int Adressederetour
Données Pointeur Données Données Pointeur Pointeur Débordementdesegmentsdemémoire • Remplacelesdonnéesstockéesdanslesegment • Plus difficile à exploiter qu'un débordement de mémoire tampon xxxxxxxxxxxxxx strcpy
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 d’analyse statique de code • /Analyse et VS2005 (C++) http://www.microsoft.com/france/technet/securite/default.mspx
Pause •
Protéger un secret • Identifier les données « secrètes » de l’application • Chaîne de connexion • Saisie d’un 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 http://www.microsoft.com/france/msdn/securite/secmod39.mspx
Utiliser la Cryptographie • Différents algorithmes • Symétrique – asymétrique • Hash • Signature, et certificat • .NET encapsule certains d’entre eux • Cas concrets: • Comment transmettre un secret à un utilisateur • Gé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 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 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 Security • Initiative .NET de contrôle de l’exécution d’un code • Tout code appartient a un groupe de code, un groupe de code va posséder un jeu d’autorisation. • On peut créer ses jeux de permission http://www.microsoft.com/france/technet/securite/secmod79.mspx
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 d’interception/Eception • Utilise l’Objet : PrincipalPermission • L’application en cours doit en avoir les droits… • 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 comprendre les algorithmes utilisés • Les Obfuscator sont la réponse • Attention aux idées reçue sur .NET • Dé assemblage et code natif… http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vsent7/html/vxoriDesignConsiderationsForDistributedApplications.asp
Sécuriser un site WEB • Authentification ASP.NET • Config.web • Windows, Passport, Forms, None • En accord avec l’Authentification IIS • Anonyme • Basic/Digest • Integrated • Autorisation (web.config) • allow • deny http://www.microsoft.com/france/technet/securite/secmod08.mspx
Sécuriser un WebService • WS-I WS-* • Sécurité indépendante des couches de transports • Travail sur les enveloppes SOAP (header) http://www.microsoft.com/france/technet/securite/secmod10.mspx
Service Web et la sécurité • La sécurité se décline en plusieurs notions • Authentification • Passer une identité au Service Web • Autorisation • Donner des droits sur des ressources • Confidentialité des données • Contrôler les données • Intégrité des données • Assurer que les données ne soient pas altérées • Dénie de Service • Bloquer les accès aux Services
LesmessagesXMLtransmettentdesinformationsdesécurité Informations d'identification Signatures numériques Les messages peuvent être cryptés Client Service XML XML XML XML Touttransport Transport Transport Lasécuritéestindépendanteduprotocoledetransport Sécuritédeniveaumessage
Sécurité au niveau Applicatif • Authentification • Étendre le modèle de Service Web ASP.NET • Utilisation d’en-têtes SOAP personnalisés • Flexibilité d’utiliser son propre mécanisme • Intégrité et Confidentialité • Utilisation des APIs de cryptographie et les standards du Web en terme de signatures et d’encryptage • Alternative : est l’utilisation de SSL combiné avec les entêtes SOAP • Quand l’utiliser ? • Utilisation de schémas de bases de données existant pour la validation d’utilisateurs ou de rôles • Crypter une partie du message plutôt que la totalité du flux • Indépendant du transport
WS-* Architecture des Spécifications SecurityWS-Security WS-Trust WS-Federation ReliabilityWS-Reliable Messaging TransactionsWS-BusinessActivity WS-Coordination WS-AtomicTransaction Metadata WSDL, WS-Policy Messaging SOAP, WS-Addressing XML XML, XSD, XPath Transports HTTP , HTTPS, SMTP, TCP… Livre blanc commun IBM Microsoft:http://msdn.microsoft.com/webServices/default.aspx?pull=/library/en-us/dnwebsrv/html/wsoverview.asp
Web Services Architecture • Modulaire : Composition d’en-têtes SOAP • Largement adoptée • Toutes nouvelles spécifications XML sont étudiées par l’organisme WS-I • L’industrie centralise ses efforts sur l’interopérabilité des outils et des plates-formes autour de Services Web • On réutilise, on ne réinvente pas • Tous les modules sont indépendants des plates-formes et langages
Message SOAP Modulaire : Exemple <?xml version="1.0" encoding="utf-8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <S:Header> <m:path xmlns:m="http://schemas.xmlsoap.org/rp"> <m:action>http://tickers-r-us.org/getQuote</m:action> <m:to>soap://tickers-r-us.org/stocks</m:to> <m:from>mailto:johnsmith@isps-r-us.com</m:from> <m:id>uuid:84b9f5d0-33fb-4a81-b02b-5b760641c1d6</m:id> </m:path> <wssec:credentials xmlns:wssec="http://schemas.xmlsoap.org/ws/2001/10/security"> <wslic:binaryLicense xmlns:wslic="http://schemas.xmlsoap.org/ws/2001/10/licenses" wslic:valueType="wslic:x509v3" xsi:type="xsd:base64Binary"> dWJzY3JpYmVyLVBlc…..eFw0wMTEwMTAwMD </wslic:binaryLicense> </wssec:credentials> </S:Header> <S:Body> <tru:StockSymbol xmlns:tru="http://tickers-r-us.org/payloads"> QQQ </tru:StockSymbol> </S:Body> </S:Envelope> Routage Sécurité Et Licence
Implémentation Microsoft • Web Services Enhancements 1.0 ,2.0 et 3.0 pour Microsoft .NET • Nouvelle bibliothèque de classes Microsoft .NET de Services Web (Microsoft.Web.Services)
Runtime WSE … • Moteur d’application des protocoles WS-*, à des messages SOAP • Fournit un modèle de programmation pour manipuler les entêtes SOAP. • Implémentation côté client et serveur • Notion de pipelines et de filtres • Lecture des entêtes SOAP entrant • Écriture dans les entêtes SOAP sortant • Transformation du corps SOAP (Cryptage)
Ma boite à outil • Les outils • CAS cnfg et Caspol… • FxCop, /Analyse • Test unitaires intégrés dans VS2005 • Obfuscator • Outil de hacking, pour tester les attaques connues • Outil de configuration du WEB (ASP-v2) • Et la presse…d’éric !
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 d’outils de test et de mesures…
Ressource • Writing Secure Code – M Howard • Ouvrage de référence pour les développeurs • SDL et publication • PAG • Guideline pour la securité avec code à l’appuis • Centre de développements sur MSDN • Webcast de ces rencontres • Démo, webcast articles, réguliers http://www.microsoft.com/france/msdn/securite/default.mspx