
Une vulnérabilité d'injection de chemin existe dans OpenPLC-v3, qui provient du fait que le programme n'effectue aucune vérification de validité sur les paramètres de chemin de fichier transmis depuis la ligne de commande. Les attaquants peuvent lire n'importe quel fichier lisible en construisant des chemins malveillants, ce qui présente un risque de fuite d'informations.
Il existe une vulnérabilité d'injection de chemin dans OpenPLC-v3, qui découle de l'absence de vérification de validité des paramètres de chemin de fichier transmis en ligne de commande. Les attaquants peuvent lire tout fichier lisible en construisant des chemins malveillants, ce qui présente un risque de fuite d'informations.
Validation incorrecte des entrées (injection de chemin)
Divulgation d'informations (lecture arbitraire de fichier)
Le programme binaire compilé à partir de glue_generator.cpp contient une vulnérabilité de lecture arbitraire de fichier causée par une validation insuffisante des chemins de fichiers fournis par l'utilisateur.
Un attaquant peut spécifier un fichier arbitraire comme argument d'entrée (par exemple /etc/passwd) lors de l'exécution du programme. L'application lit ensuite le fichier ligne par ligne, analyse le contenu et affiche directement les données analysées sur la console à l'aide de cout, sans effectuer de validation sur :
Par conséquent, les attaquants peuvent lire tout fichier accessible au contexte de privilèges du processus en cours d'exécution, ce qui entraîne une divulgation d'informations sensibles.
1.L'attaquant est capable d'exécuter le binaire vulnérable.
2.Le compte utilisateur en cours d'exécution dispose de la permission de lecture sur le fichier cible.
Une exploitation réussie peut divulguer des informations système sensibles, notamment :
Ces informations peuvent faciliter une élévation de privilèges ou un déplacement latéral.
Dans glue_generator.cpp, le programme utilise deux tableaux de chaînes, varName et varType, pour traiter et afficher le contenu analysé du fichier en ligne de commande.
Lors de l'analyse, le programme attend un format de ligne spécifique :
(<varType>,<varName>,
Plus précisément :
le contenu entre ( et la première , est assigné à varType ;
le contenu entre la première et la deuxième , est assigné à varName.
Aucune validation n'est effectuée sur le chemin du fichier source ni sur la légitimité des données analysées.
Étape 1 : Créer un fichier de test
Créez un fichier nommé test.txt avec le contenu suivant :
(aaaaaaaa,123,
Étape 2 : Exécuter le programme vulnérable
Exécutez la commande suivante :
./glue_generator ./test.txt whatever.cpp
Le programme analysera le contenu et affichera les valeurs extraites sur la console.
Étape 3 : Lecture arbitraire de fichier
Si un attaquant peut modifier ou contrôler un fichier sensible (par exemple /etc/passwd) pour y inclure des données correspondant au format requis :
(aaaaaaaa,123,
le programme vulnérable analysera et affichera le contenu correspondant du fichier.
Pour les fichiers sensibles, toute ligne correspondant au motif suivant peut être divulguée :
(<content1>,<content2>,
La quantité d'informations divulguées dépend :
La vulnérabilité est causée par :
1.L'absence de validation des chemins de fichiers contrôlés par l'utilisateur.
2.Une logique d'analyse non sécurisée appliquée à des fichiers arbitraires.
3.Une sortie console directe du contenu analysé sans vérifications d'autorisation.
4.L'absence de restrictions sur les emplacements de fichiers accessibles.
Pour atténuer la vulnérabilité :