Sécurité des applications Web ASP.NET

ASP.NET fonctionne de concert avec Microsoft .NET Framework et IIS pour apporter une sécurité aux applications Web. Pour protéger votre application ASP.NET, vous devez exécuter les deux fonctions fondamentales décrites ci-dessous :
Authentification : Permet de vérifier que l’utilisateur est, en fait, bien celui qu’il prétend être. L’application obtient des informations d’identification (diverses formes d’identification, telles que le nom et le mot de passe) d’un utilisateur et valide ces informations d’identification auprès d’une autorité. Si les informations d’identification sont valides, l’entité qui les a présentées est considérée comme étant une identité authentifiée.
Autorisation : Limite les droits d’accès en accordant ou en refusant des autorisations spécifiques à une identité authentifiée.
– La compréhension des menaces représente un aspect important du développement d’une application sécurisée. Microsoft a élaboré un système de classification des différentes menaces : usurpation, falsification, répudiation, divulgation d’informations, déni de service et élévation de privilège sous le nom de STRIDE (Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege ). Les sections suivantes présentent brièvement ces menaces et la façon dont elles s’appliquent aux applications Web.

Usurpation
Usurper signifie emprunter l’identité d’un utilisateur ou d’un processus de manière non autorisée. L’usurpation peut se traduire par le simple fait d’entrer des informations d’identification d’un autre utilisateur. Une utilisation malveillante peut aussi modifier le contenu d’un cookie pour prétendre qu’il s’agit d’un utilisateur différent ou que le cookie provient d’un autre serveur.
En général, vous pouvez éviter toute usurpation à l’aide de procédures d’authentification rigoureuses. Chaque fois que quelqu’un demande l’accès à des informations non publiques, assurez-vous de l’identité de la personne. Vous pouvez également éviter l’usurpation en conservant les informations d’identification de façon sécurisée. Ne conservez pas, par exemple, un mot de passe ou d’autres informations sensibles dans un cookie, car un utilisateur malveillant peut facilement le trouver ou le modifier.

Falsification
Falsifier signifie modifier ou supprimer une ressource sans autorisation. C’est le cas par exemple de l’altération d’une page Web par un utilisateur malveillant qui accède à un site et en modifie les fichiers. L’utilisation d’une attaque de script constitue un moyen de falsification indirect. Un utilisateur malveillant envoie du code (script) exécutable en le masquant comme entrée d’utilisateur d’une page ou sous forme de lien.
La première défense contre la falsification consiste à utiliser la sécurité Windows pour verrouiller les fichiers, répertoires et autres ressources Windows.L’application doit également s’exécuter avec les privilèges minimums. Vous pouvez vous protéger contre les attaques de script en vous méfiant systématiquement de toute information provenant d’un utilisateur, voire d’une base de données. Chaque fois que vous obtenez des informations d’une source non fiable, vérifiez qu’elles ne contiennent aucun code exécutable.

Répudiation
Une menace répudiation implique le traitement d’une transaction de telle façon qu’aucune preuve des entités de sécurité impliquées ne subsiste à la transaction. Dans une application Web, cela peut se traduire par l’usurpation des informations d’identification d’un utilisateur innocent. Là encore, vous pouvez vous protéger de la répudiation à l’aide de procédures d’authentification rigoureuses. Utilisez, en plus, les fonctionnalités du journal de Windows pour conserver une trace de l’ensemble des activités ayant eu lieu au niveau du serveur.
Divulgation d’informations
La divulgation d’informations désigne simplement le vol ou la révélation d’informations supposées être privées. Un exemple typique est le vol de mots de passe, mais la divulgation d’informations peut impliquer l’accès à n’importe quel fichier ou ressource du serveur.
Le meilleur moyen de se défendre contre la divulgation d’informations est de ne disposer d’aucune information à divulguer. Par exemple, si vous ne stockez pas les mots de passe, les utilisateurs malveillants ne pourront pas les voler. Une alternative au stockage des mots de passe consiste à ne stocker que leur hachage.Lorsqu’un utilisateur présente ses informations d’identification, vous pouvez hacher le mot de passe de l’utilisateur et comparer uniquement les deux hachages.Si vous stockez des informations sensibles, sécurisez-les à l’aide de la sécurité Windows. Utilisez également l’authentification pour garantir que seuls les utilisateurs autorisés puissent accéder aux informations restreintes. Si vous devez exposer des informations sensibles, il est recommandé de chiffrer les informations lorsqu’elles sont stockées et d’utiliser SSL (Secure Sockets Layer) pour chiffrer les informations lorsqu’elles sont envoyées au et à partir du navigateur.

Déni de service
Une attaque de déni de service vise à réduire de façon délibérée la disponibilité d’une application. La surcharge d’une application Web de sorte qu’elle ne puisse pas servir les utilisateurs ordinaires en est un exemple classique. Des utilisateurs malveillants peuvent aussi simplement tenter de provoquer l’arrêt de votre serveur.
IIS vous permet de limiter les applications, c’est-à-dire de restreindre le nombre de demandes auxquelles elles répondent. Vous pouvez refuser l’accès à des utilisateurs ou adresses IP connus comme étant malveillants. Pour garder vos applications en ligne vous devez exécuter du code fiable. Vous devez intégralement tester votre application et, dans la mesure du possible, effectuer les actions appropriées en cas d’erreurs.

Élévation de privilège
L’élévation de privilège consiste, pour un utilisateur malveillant, à obtenir un niveau d’autorisation plus élevé que celui qui lui est normalement assigné. Par exemple, une élévation de privilège réussie consiste, pour un utilisateur malveillant, à obtenir des privilèges d’administrateur de votre serveur Web, ce qui lui donne accès à toutes les données sur le serveur ainsi qu’au contrôle des fonctions serveur.
Pour vous protéger de l’élévation de privilège, exécutez l’application avec les privilèges les plus faibles possible. Par exemple, il est recommandé de ne pas exécuter les applications ASP.NET en tant qu’utilisateur SYSTEM (administrateur).

Laisser un commentaire