Comment prévenir les vulnérabilités de téléchargement de fichiers

Les unités de téléchargement de fichiers sont parmi les maillons les plus faibles des applications Web. Faire des erreurs, même celles que vous considérez comme mineures, peut entraîner la possibilité que le contrôle direct du serveur tombe entre les mains du pirate. Pour cette raison, un développeur de logiciels doit connaître les erreurs les plus courantes et certaines des méthodes d'attaque qui peuvent survenir.

Alors, qu'est-ce que la manipulation client ? Comment pouvez-vous le combattre pour assurer la sécurité de vos sites Web et de vos utilisateurs ? Vérifier Comment votre serveur peut être piraté : voici comment.

Comment prévenir les vulnérabilités de téléchargement de fichiers - protection

Qu'est-ce que la manipulation client ?

La manipulation côté client est le concept de base des attaques d'applications Web dans leur ensemble. En termes simples, cela signifie que vous ne pouvez plus faire confiance à aucune des données que vous envoyez à l'utilisateur. De plus, la manipulation côté client est l'un des fondements du développement d'applications sécurisées. Si vous vérifiez votre outil de mise en ligne de fichiers et envisagez une falsification côté client, les données auxquelles vous ne faites pas confiance incluent :

  1. Le nom du fichier téléchargé.
  2. Le type de contenu du fichier téléchargé.

C'est là que vous avez la possibilité d'être inscrit sur la liste blanche en tant que développeur de logiciels. Les données de nom de fichier téléchargées peuvent contenir n'importe quoi avec une manipulation côté client. Avec les données de type de contenu du fichier téléchargé, même si l'attaquant télécharge le fichier. exe, ce fichier peut apparaître sous la forme d'une image /jpeg dans le système.

Format de fichier et liste blanche

Comment prévenir les vulnérabilités de téléchargement de fichiers - protection

Lors du développement de modules de téléchargement de fichiers, la première chose à faire est d'ajouter le format de fichier à la liste blanche. Par exemple, l'utilisateur souhaite télécharger un fichier appelé "muo.jpeg". Vous devez vous assurer que le format de fichier que l'utilisateur souhaite télécharger est .jpeg. Pour cela, le système doit vérifier le fichier téléchargé et voir s'il s'agit de l'un des formats de fichier autorisés. Pour comprendre comment procéder, examinez le code PHP simple suivant :

$file_parts = pathinfo($filename);
switch($file_parts[‘extension’])
{
case “jpg”:
break;

case “bat”: // Or exe, dll, so, etc.
break;

case “”:
case NULL: // No file extension
break;
}

Vous pouvez le faire avec un bloc de code similaire à celui ci-dessus, ou vous pouvez utiliser des classes et des fonctions fournies par votre framework.

Avertissement: Méfiez-vous de générer des données de format de fichier en analysant le nom du fichier en fonction du caractère point (.), car un attaquant peut contourner cette étape de vérification avec un nom de fichier comme "muo.jpeg.php".

Qu'est-ce que les informations sur le type de contenu ?

Les informations sur le type de contenu font partie des informations envoyées dans la requête HTTP pour chaque fichier téléchargé. Le navigateur Internet détecte ces informations et les ajoute à la demande envoyée. Un attaquant peut essayer de modifier les informations par une manipulation côté client et en contournant les vérifications côté serveur. À ce stade, le développeur a besoin d'un mécanisme de contrôle pour effectuer des vérifications de validation des informations de type contenu. Cela seul ne suffira pas. Pourtant, il est important que le développeur y prête attention.

Supposons que vous codez un mécanisme pour vérifier que le fichier est correctement formaté et n'accepte que les fichiers au format . Jpeg. En plus de ce mécanisme de précaution, vous pouvez vérifier les informations sur le type de contenu uniquement si et accepter uniquement les fichiers contenant des informations d'image /jpeg, ce qui constitue une couche supplémentaire de protection contre les cyberattaques. Vérifier Qu'est-ce que le contrôle d'accès et pourquoi en avez-vous besoin ?

Fichiers Flash SWF et étapes d'attaque

Les données de format de fichier et de type de contenu n'ont aucune signification pour les navigateurs Internet qui prennent en charge les plug-ins tels qu'Adobe Flash Player. Bien que la prise en charge de ce lecteur ne soit plus disponible, ces fichiers associés peuvent toujours être installés sur de nombreux systèmes, bien que Flash représente toujours un risque pour la sécurité. Sur un système n'ayant pas pris les précautions nécessaires, il est possible d'appeler un fichier Flash avec une balise , quel que soit son format. Cela conduira à un autre problème de sécurité grave.

Comment prévenir les vulnérabilités de téléchargement de fichiers - protection

Pour agir, le développeur doit savoir quels chemins les cybercriminels peuvent emprunter. Voici comment cela pourrait se produire :

  • L'attaquant télécharge un fichier SWF (format de fichier Adobe Flash) nommé "image.jpeg" sur le site Web cible. Pendant le processus de téléchargement, il est confirmé dans la vérification de la liste blanche que le fichier téléchargé par l'attaquant a un . Jpeg. La vérification du type de contenu est contournée par manipulation côté client. Imaginez que ce fichier, téléchargé par l'attaquant, va à :
“www(dot)target-site(dot)com/images/images.jpeg”
  • Supposons que l'attaquant dispose d'un site Web appelé attaquant(point)com. L'attaquant appelle le fichier image.jpeg téléchargé sur le site Web cible sur le site Web de l'attaquant, en utilisant la balise avec type de jeu application/x-shockwave-flash.
  • Un utilisateur sans méfiance se connecte à un site attaquant(point)com. Ce site appelle le fichier SWF sur www(dot)targetsite(dot)com/images/image.jpeg et exécute les commandes données au SWF.
  • Avec ces étapes, le cyber-attaquant peut créer des actions de requête HTTP pour l'adresse du site Web site-cible(point)com inaperçu des utilisateurs ordinaires. Avec ces requêtes, l'attaquant utilisera la session de l'utilisateur sans méfiance et contournera la vérification CSRF.

Pour mieux comprendre ce scénario d'attaque, considérez le code suivant dans Contenu HTML Envoyé à l'utilisateur par attaquant(point)com:

style=”height:1px;width:1px;” data=”www.target-site.com/images/image.jpeg" type=”application/x-shockwave-flash” allowscriptaccess=”always” flashvars=”c=read&u=somethings”

L'une des meilleures solutions consiste à accéder aux fichiers téléchargés avec le fichier téléchargé via un sous-domaine différent. Dans le scénario ci-dessus, vous pouvez accéder aux fichiers statiques non pas à partir du même domaine, mais à partir d'un sous-domaine différent comme suit : "http(deux-points)//file.target-site(point)com/images/image.jpeg ».

L'autre solution consiste à ajouter des informations Contenu-Disposition : pièce jointe à la réponse HTTP lorsque vous recevez une demande d'accès aux fichiers que vous souhaitez télécharger. Vérifier Avantages et inconvénients de l'utilisation du stockage cloud pour le travail à distance.

Prenez des précautions contre les vulnérabilités de téléchargement de fichiers

Tout téléchargement de fichier que les utilisateurs peuvent effectuer sur un site Web est dangereux, c'est donc l'un des problèmes auxquels les développeurs doivent accorder la plus grande attention. Si un attaquant découvre une telle vulnérabilité, il peut ouvrir une couche à l'intérieur du site Web et exploiter facilement les informations sur le serveur. Il est très important de contrôler tous les fichiers téléchargés par les utilisateurs, d'appliquer des méthodes de liste blanche et de masquer l'emplacement du répertoire dans lequel les fichiers sont téléchargés si possible.

Et bien sûr, il existe de nombreuses autres mesures supplémentaires que vous devez prendre pour protéger votre site Web, même si vous prenez toutes les précautions recommandées pour le téléchargement de fichiers. L'utilisation d'en-têtes de sécurité HTTP est l'une de ces mesures que vous pouvez prendre. Vous pouvez voir maintenant Qu'est-ce que la sécurité des conteneurs et pourquoi en avez-vous besoin ?

source
Aller au bouton supérieur