Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié...
-
Upload
onesime-bouvet -
Category
Documents
-
view
106 -
download
0
Transcript of Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié...
Développement Développement SécuriséSécurisé
Tour Novembre-Décembre 2005Tour Novembre-Décembre 2005
Eric Mittelette, Eric Vernié[email protected]@microsoft.com Microsoft France – DPENovembre 2005
AgendaAgenda
Partie I : Méthodologie Partie I : Méthodologie Sécurité et le développementSécurité et le développement
Partie II : Hack et codePartie II : Hack et codeTop X des problèmes de développementTop X des problèmes de développement
ConclusionConclusion
Partie I: Sécurité et le Partie I: Sécurité et le développement développement
Stratégie de sécurité MicrosoftStratégie de sécurité MicrosoftSD3 - SDLSD3 - SDL
Analyse des risques, outils, méthodologie Analyse des risques, outils, méthodologie
Stratégie de développement sécuriséStratégie de développement sécuriséInformatique de confiance et SDL (WSI)Informatique de confiance et SDL (WSI)
STRIDE Model et analyse des menaces …STRIDE Model et analyse des menaces …
Security et ressource humaine…Security et ressource humaine…
Outils de test et d’analyse de code …Outils de test et d’analyse de code …
PAG de sécuritéPAG de sécuritéhttp://msdn.microsoft.com/library/default.asp?url=/lihttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/SecurityGuidanceIndex.asbrary/en-us/dnpag2/html/SecurityGuidanceIndex.aspp
Les 10 grandes règles de sécuritéLes 10 grandes règles de sécurité Qu'un développeur doit connaître pour protéger son codeQu'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
Partie IIPartie II
« Top 10 » des questions de sécurité« Top 10 » des questions de sécuritéContrôle des saisiesContrôle des 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
Sécuriser un site WEBSécuriser un site WEB
Sécuriser un Web ServiceSécuriser un Web Service
Toute saisie est source de Toute saisie est source de problèmeproblè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];
ExempleExemple dede débordementdébordement dede lala pilepile
Haut de la pile
char[4]
int
Adresse de retour
DébordementDébordement dede segmentssegments dede mémoiremé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 tamponDonnées
Pointeur
Données
Données
Pointeur
Pointeur
strcpystrcpy xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Problèmes liés à la Problèmes liés à la localisationlocalisation
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
PausePause
Protéger un secretProté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 CryptographieUtiliser 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 Problème de Déni de service 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 Contrôle de l’exécution du code .NETcode .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ées
http://www.microsoft.com/france/technet/securite/secmod79.mspx
Gestion des rôles Gestion des rôles applicatifs .NETapplicatifs .NETNotion d’ Identificateur et de RôlesNotion d’ Identificateur et de Rôles
Comparable 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é Protection de la propriété intellectuelleintellectuelle
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
Sécuriser un site WEBSécuriser un site WEB
Authentification ASP.NETAuthentification ASP.NETConfig.webConfig.web
Windows, Passport, Forms, NoneWindows, Passport, Forms, None
En accord avec l’Authentification En accord avec l’Authentification IISIIS
AnonymeAnonyme
Basic/DigestBasic/Digest
IntegratedIntegrated
Autorisation (web.config)Autorisation (web.config)allowallow
denydeny
http://www.microsoft.com/france/technet/securite/secmod08.mspx
Sécuriser un WebServiceSécuriser un WebService
WS-I WS-*WS-I WS-*Sécurité indépendante des couches de Sécurité indépendante des couches de transportstransports
Travail sur les enveloppes SOAP (header)Travail sur les enveloppes SOAP (header)
http://www.microsoft.com/france/technet/securite/secmod10.mspx
Service Web et la sécurité Service Web et la sécurité La sécurité se décline en plusieurs notionsLa sécurité se décline en plusieurs notions
AuthentificationAuthentificationPasser une identité au Service WebPasser une identité au Service Web
AutorisationAutorisationDonner des droits sur des ressourcesDonner des droits sur des ressources
Confidentialité des donnéesConfidentialité des donnéesContrôler les données Contrôler les données
Intégrité des donnéesIntégrité des donnéesAssurer que les données ne soient pas altéréesAssurer que les données ne soient pas altérées
Dénie de ServiceDénie de ServiceBloquer les accès aux ServicesBloquer les accès aux Services
SécuritéSécurité dede niveauniveau messagemessage Les messages XML
transmettent des informations de sécurité
Informations d'identification
Signatures numériques
Les messages peuvent être cryptés
Client
Transport
Service
TransportTout transport
XML
XML XML
XMLLa sécurité est indépendante
du protocole de transport
Sécurité au niveau Sécurité au niveau ApplicatifApplicatifAuthentificationAuthentification
Étendre le modèle de Service Web ASP.NETÉtendre le modèle de Service Web ASP.NETUtilisation d’en-têtes SOAP personnalisésUtilisation d’en-têtes SOAP personnalisésFlexibilité d’utiliser son propre mécanismeFlexibilité d’utiliser son propre mécanisme
Intégrité et ConfidentialitéIntégrité et ConfidentialitéUtilisation des APIs de cryptographie et les Utilisation des APIs de cryptographie et les standards du Web en terme de signatures et standards du Web en terme de signatures et d’encryptaged’encryptageAlternative : est l’utilisation de SSL combiné avec Alternative : est l’utilisation de SSL combiné avec les entêtes SOAPles entêtes SOAP
Quand l’utiliser ?Quand l’utiliser ?Utilisation de schémas de bases de données Utilisation de schémas de bases de données existant pour la validation d’utilisateurs ou de rôlesexistant pour la validation d’utilisateurs ou de rôlesCrypter une partie du message plutôt que la Crypter une partie du message plutôt que la totalité du fluxtotalité du fluxIndépendant du transportIndépendant du transport
WS-* Architecture des SpécificationsWS-* Architecture des Spécifications
Transports HTTP , HTTPS, SMTP, TCP…Transports HTTP , HTTPS, SMTP, TCP…
XML XML, XSD, XPath XML XML, XSD, XPath
Messaging SOAP, WS-AddressingMessaging SOAP, WS-Addressing
SecurityWS-Security
WS-TrustWS-Federation
SecurityWS-Security
WS-TrustWS-Federation
ReliabilityWS-ReliableMessaging
ReliabilityWS-ReliableMessaging
TransactionsWS-BusinessActivity
WS-CoordinationWS-AtomicTransaction
TransactionsWS-BusinessActivity
WS-CoordinationWS-AtomicTransaction
Met
adat
aW
SD
L, W
S-P
olic
y
Met
adat
aW
SD
L, W
S-P
olic
y
Livre blanc commun IBM Microsoft:Livre blanc commun IBM Microsoft:
http://msdn.microsoft.com/webServices/default.aspx?pull=/library/en-us/dnwebsrv/html/wsoverview.asphttp://msdn.microsoft.com/webServices/default.aspx?pull=/library/en-us/dnwebsrv/html/wsoverview.asp
Web Services ArchitectureWeb Services Architecture
Modulaire : Composition d’en-têtes SOAPModulaire : Composition d’en-têtes SOAP
Largement adoptéeLargement adoptée
Toutes nouvelles spécifications XML sont étudiées par Toutes nouvelles spécifications XML sont étudiées par l’organisme WS-Il’organisme WS-I
L’industrie centralise ses efforts sur l’interopérabilité des outils L’industrie centralise ses efforts sur l’interopérabilité des outils et des plates-formes autour de Services Webet des plates-formes autour de Services Web
On réutilise, on ne réinvente pasOn réutilise, on ne réinvente pas
Tous les modules sont indépendants des plates-Tous les modules sont indépendants des plates-formes et langagesformes et langages
Modulaire : ExempleModulaire : Exemple
Sécurité Et
Licence
Routage
<?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:[email protected]</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>
MessageMessageSOAPSOAP
Implémentation MicrosoftImplémentation Microsoft
Web Services Enhancements 1.0 ,2.0 et Web Services Enhancements 1.0 ,2.0 et 3.0 pour Microsoft .NET3.0 pour Microsoft .NET
Nouvelle bibliothèque de classes Nouvelle bibliothèque de classes Microsoft .NET de Services Web Microsoft .NET de Services Web (Microsoft.Web.Services)(Microsoft.Web.Services)
Runtime WSE …Runtime WSE …
Moteur d’application des Moteur d’application des protocoles WS-*, à des protocoles WS-*, à des messages SOAPmessages SOAP
Fournit un modèle de Fournit un modèle de programmation pour manipuler programmation pour manipuler les entêtes SOAP.les entêtes SOAP.
Implémentation côté client et Implémentation côté client et serveurserveur
Notion de pipelines et de filtresNotion de pipelines et de filtresLecture des entêtes SOAP entrantLecture des entêtes SOAP entrant
Écriture dans les entêtes SOAP Écriture dans les entêtes SOAP sortantsortant
Transformation du corps SOAP Transformation du corps SOAP (Cryptage)(Cryptage)
Ma boite à outilMa boite à outil
Les outilsLes outilsCAS cnfg et Caspol…CAS cnfg et Caspol…FxCop, /AnalyseFxCop, /AnalyseTest unitaires intégrés dans VS2005Test unitaires intégrés dans VS2005ObfuscatorObfuscatorOutil de hacking, pour tester les attaques Outil de hacking, pour tester les attaques connuesconnuesOutil de configuration du WEB (ASP-v2)Outil de configuration du WEB (ASP-v2)Et la presse…d’éric !Et la presse…d’éric !
ConclusionConclusion
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 phase de conception jusqu’à la phase de maintenance…de 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…
RessourceRessource
Writing Secure Code – M HowardWriting Secure Code – M HowardOuvrage de référence pour les Ouvrage de référence pour les développeursdéveloppeursSDL et publicationSDL et publication
PAGPAGGuideline pour la securité avec code à Guideline pour la securité avec code à l’appuisl’appuis
Centre de développements sur MSDNCentre de développements sur MSDNWebcast de ces rencontresWebcast de ces rencontresDémo, webcast articles, réguliersDémo, webcast articles, réguliers
http://www.microsoft.com/france/msdn/securite/default.mspx