Contexte
Les applications Web utilisent des fichiers logs pour enregistrer chaque transaction et conserver un historique des événements. Ces fichiers sont utiles pour le débogage, la collecte de données et l'optimisation des performances. Cependant, si ces logs sont manipulés, cela peut entraîner plusieurs problèmes.
La Log Injection (ou Log Forgery) est une vulnérabilité qui se produit lorsque des entrées non validées et peu fiables sont imprimées dans les fichiers logs du système. Cela permet à un attaquant d'insérer des données malveillantes et de fausses entrées dans les logs, ce qui peut finalement corrompre le fichier. Les fichiers logs corrompus peuvent être utilisés pour dissimuler une tentative de piratage et permettre à un attaquant d'accéder au système sans mot de passe. Étant donné que cette attaque cible le système d'exploitation et utilise des outils standard, elle est très difficile à détecter.
Lorsqu'ils ne sont pas traités de manière appropriée, les attaques de falsification de logs peuvent entraîner un vol d'identité et/ou une perte financière. Tout comme les e-mails de phishing qui redirigent les utilisateurs vers de faux sites Web, les attaques de falsification de logs peuvent amener les utilisateurs à accéder à de fausses pages de connexion.
Par exemple, une application Web peut consigner les tentatives de connexion infructueuses des utilisateurs dans ses logs.
String id = request.getParameter("id");
try {
int user = Integer.parseInt(username);
log.info("Successful sign in, ID=" + value);
}
catch (NumberFormatException) {
log.info("Failed sign in, ID=" + value);
}
Lorsqu'un utilisateur dépasse la limite de tentatives infructueuses, le système de surveillance génère une alerte et enregistre l'information dans un log. Voici un exemple de log :
May 12:2022:10:43:10: Failed Login, ID=sha
Un attaquant cherchant à forcer le système peut exploiter cette fonctionnalité en falsifiant les logs. En insérant de faux enregistrements, tels que des événements de connexion réussie, l'attaquant peut s'assurer que le système est réinitialisé avant que la limite de tentatives infructueuses ne soit atteinte. Cette vulnérabilité peut être utilisée pour contourner les mesures de sécurité mises en place et accéder illégalement au système.
Sep%2022%3A2018%3A01%3A07%3A13%3A%20Successful%20Login%2C%20ID%3Dsha
equals :
Sep 09:2022:01:12:13 : Successful sign in, ID=sha
Si les entrées de l'utilisateur ne sont pas validées ou désinfectées, les logs falsifiés peuvent facilement rendre le système de surveillance inopérant. Dans le cas précédent, il y aura deux logs enregistrés, et si les enregistrements falsifiés ne sont pas détectés, l'attaque pourra réussir.
Sep 09:2022:01:12:13 : Échec de la connexion, Id=sha
Sep 09:2022:01:13:13 : Connexion réussie, Id=sha
L'utilisation d'une application de logs dans le cloud qui rend directement les logs dans le navigateur peut créer une vulnérabilité XSS et d'autres types d'attaques. En effet, cette méthode peut exposer les cookies et d'autres informations sensibles de l'utilisateur administrateur à un attaquant. Par conséquent, si les logs ne sont pas correctement protégés, ils peuvent être utilisés pour compromettre la sécurité du système et permettre à un attaquant d'accéder à des informations sensibles.
Comment prévenir ?
Il est recommandé d'effectuer une validation des entrées à la fois côté serveur et côté client afin de prévenir les attaques de falsification de logs. Les caractères suspects peuvent être désinfectés et remplacés pour éviter l'injection de code malveillant. De plus, l'application utilisée pour rendre les logs doit être soigneusement examinée pour détecter toute vulnérabilité et assurer la sécurité du système.





