ClickCease Vulnérabilités : Les bogues qui se cachent derrière elles Partie 4

Table des matières

Rejoignez notre populaire bulletin d'information

Rejoignez 4 500+ professionnels de Linux et de l'Open Source !

2 fois par mois. Pas de spam.

Les bogues derrière les vulnérabilités Partie 4

Joao Correia

21 avril 2023 - Évangéliste technique

Bienvenue dans la quatrième partie de cette série de cinq articles consacrés aux bogues de code qui expliquent les nombreux exploits signalés régulièrement. Nous nous pencherons sur le Mitre CWE Top 25 de Mitre pour 2022, et nous passerons en revue les entrées 10 à 6 de la liste. L'entrée la plus marquante de cette partie est "Use After Free", un nom connu pour une situation très courante.

Vous pouvez trouver la partie 1 ici, la partie 2 iciet la partie 3 ici.

Entrons dans le vif du sujet.

 

10. Téléchargement illimité de fichiers de type dangereux

 

Le téléchargement de fichiers sans restriction se produit lorsqu'une application permet aux utilisateurs de télécharger des fichiers sans validation appropriée, ce qui leur permet de télécharger des fichiers dont le contenu ou le type est dangereux. Les attaquants peuvent tirer parti de cette vulnérabilité pour exécuter un code malveillant ou exploiter d'autres faiblesses de sécurité au sein de l'application ou du serveur.

 

# Example of unrestricted file upload in Python

@app.route('/upload', methods=['POST'])

def upload_file():

    file = request.files['file']

    file.save(os.path.join('uploads', file.filename))

    return 'File uploaded successfully'

 

Pour empêcher le téléchargement illimité de fichiers, les développeurs doivent mettre en œuvre des mécanismes de validation des fichiers robustes, limiter les types de fichiers à une liste sûre connue et effectuer des contrôles côté serveur pour s'assurer que seuls les fichiers sûrs sont acceptés.

 

9. Falsification des requêtes intersites (CSRF)

 

Le Cross-Site Request Forgery (CSRF) est un type d'attaque qui incite les utilisateurs à exécuter des actions non désirées sur une application web dans laquelle ils sont actuellement authentifiés. Cela se produit lorsqu'un site web, un courriel ou un programme malveillant amène le navigateur d'un utilisateur à effectuer une action sur un autre site à l'insu de l'utilisateur ou sans son consentement.

 

<!-- Example of CSRF attack in an HTML form -->

<form action="http://example.com/transfer_funds" method="POST">

  <input type="hidden" name="amount" value="1000" />

  <input type="hidden" name="destination_account" value="attackers_account" />

  <input type="submit" value="Click here for a free gift!" />

</form>

 

Pour limiter les attaques CSRF, les développeurs doivent mettre en place des jetons anti-CSRF, utiliser des pratiques de codage sécurisées telles que le respect de l'attribut SameSite dans les cookies, et garantir des contrôles d'authentification et d'autorisation appropriés pour les actions sensibles.

 

8. Limitation inappropriée d'un nom de chemin vers un répertoire restreint (alias "Traversée de chemin")

 

La traversée de chemin est une vulnérabilité qui se produit lorsqu'une application utilise une entrée externe pour construire des chemins de fichiers ou de répertoires sans neutraliser correctement les éléments spéciaux. Cela peut permettre à des attaquants d'accéder à des fichiers ou à des répertoires en dehors de l'emplacement restreint prévu, ce qui peut conduire à un accès non autorisé, à la modification ou à la divulgation d'informations sensibles.

 

// Example of a path traversal vulnerability in PHP

$filename = $_GET['file'];

$content = file_get_contents("/restricted_directory/$filename");

echo $content;

 

Pour prévenir les attaques par traversée de chemin, les développeurs doivent valider les entrées des utilisateurs, utiliser des fonctions ou des bibliothèques sécurisées pour la manipulation des chemins, et appliquer des contrôles d'accès appropriés côté serveur pour limiter l'accès aux fichiers et aux répertoires sensibles.

 

7. Utilisation après la gratuité

 

"L'utilisation après libération est un problème de corruption de la mémoire qui survient lorsqu'un programme continue d'utiliser un pointeur après qu'il a été libéré. Cela peut entraîner une corruption des données, un plantage, voire une exécution de code arbitraire, en fonction du moment et de l'instanciation de la faille.


// Example of a use after free error in C

char *ptr = (char *)malloc(SIZE);

if (err) {

    abrt = 1;

    free(ptr);

}

...

if (abrt) {

    logError("operation aborted before commit", ptr);

}



Pour éviter les problèmes liés à l'utilisation après libération, les développeurs doivent suivre des pratiques de codage sûres, telles qu'une bonne gestion de la mémoire, l'utilisation de pointeurs intelligents dans des langages comme le C++, et une bonne gestion des erreurs afin d'éviter les pointeurs pendants.

 

6. Neutralisation incorrecte d'éléments spéciaux utilisés dans une commande du système d'exploitation ("injection de commande du système d'exploitation")

 

L'injection de commande du système d'exploitation se produit lorsqu'une application construit une commande du système d'exploitation en utilisant une entrée influencée de l'extérieur sans neutraliser correctement les éléments spéciaux. Cela peut permettre à des attaquants d'exécuter des commandes ou du code arbitraires sur le système ciblé, ce qui peut conduire à un accès ou un contrôle non autorisé sur le système.

 

import os

user_input = input("Enter the name of the file to search: ")

command = f"find / -name {user_input}"

os.system(command)

 

Pour empêcher l'injection de commandes dans le système d'exploitation, les développeurs doivent valider et assainir les entrées des utilisateurs, utiliser des API ou des fonctions paramétrées qui n'autorisent pas les séparateurs de commandes, et appliquer le principe du moindre privilège pour minimiser l'impact potentiel d'une attaque réussie.

 

En conclusion, il est essentiel pour les développeurs et les administrateurs système de connaître ces vulnérabilités courantes et de comprendre comment les atténuer. En adoptant des pratiques de codage sécurisées et en mettant en œuvre des mesures de protection appropriées, vous pouvez réduire considérablement le risque d'exploitation et protéger vos applications et vos systèmes contre les menaces potentielles.

Résumé
Les bogues derrière les vulnérabilités Partie 4
Nom de l'article
Les bogues derrière les vulnérabilités Partie 4
Description
Lisez la quatrième partie de cette série de cinq articles, dans laquelle nous examinons les bogues de code qui expliquent les nombreuses vulnérabilités signalées régulièrement.
Auteur
Nom de l'éditeur
TuxCare
Logo de l'éditeur

Vous cherchez à automatiser la correction des vulnérabilités sans redémarrage du noyau, temps d'arrêt du système ou fenêtres de maintenance programmées ?

Découvrez le Live Patching avec TuxCare

Devenez rédacteur invité de TuxCare

Commencer

Courrier

Rejoindre

4,500

Professionnels de Linux et de l'Open Source
!

S'abonner à
notre lettre d'information