Quais informações nunca devem aparecer nos logs? [fechadas]

11

Estou prestes a escrever as diretrizes da empresa sobre o que nunca deve aparecer nos logs (rastreamento de um aplicativo). De fato, alguns desenvolvedores tentam incluir o máximo de informações possível no rastreamento, tornando arriscado armazenar esses logs e extremamente perigoso enviá-los , especialmente quando o cliente não sabe que essas informações estão armazenadas, porque nunca se importou com isso. e nunca leia a documentação e / ou mensagens de aviso.

Por exemplo, ao lidar com arquivos, alguns desenvolvedores são tentados a rastrear os nomes dos arquivos . Por exemplo, antes de anexar o nome do arquivo a um diretório, se rastrearmos tudo com erro, será fácil perceber, por exemplo, que o nome anexado é muito longo e que o bug no código foi esquecido de verificar o tamanho do arquivo. sequência concatenada. É útil, mas são dados confidenciais e nunca devem aparecer nos logs .

Do mesmo jeito:

  • Senhas ,
  • Endereços IP e informações de rede (endereço MAC, nome do host etc.) ¹,
  • Acessos ao banco de dados,
  • Entrada direta do usuário e dados corporativos armazenados

nunca deve aparecer no rastreio.

Então, que outros tipos de informações devem ser banidos dos logs? Existem diretrizes já escritas que eu possa usar?


Vious Obviamente, não estou falando de coisas como logs do IIS ou Apache. O que estou falando é o tipo de informação que é coletada com a única intenção de depurar o aplicativo em si, não para rastrear a atividade de entidades não confiáveis.


Edit: Obrigado por suas respostas e seus comentários. Como minha pergunta não é muito precisa, tentarei responder às perguntas feitas nos comentários:

  • O que estou fazendo com os logs?

Os logs do aplicativo podem ser armazenados na memória, o que significa tanto em disco rígido no host local, em um banco de dados, novamente em disco ou em Eventos do Windows. Em todos os casos, a preocupação é que essas fontes não sejam suficientemente seguras. Por exemplo, quando um cliente executa um aplicativo e esse aplicativo armazena logs em um arquivo de texto sem formatação no diretório temporário, qualquer pessoa que tenha acesso físico ao PC pode ler esses logs.

Os logs do aplicativo também podem ser enviados pela internet. Por exemplo, se um cliente tiver um problema com um aplicativo, podemos solicitar que ele execute esse aplicativo no modo de rastreamento completo e nos envie o arquivo de log. Além disso, alguns aplicativos podem enviar automaticamente o relatório de falha para nós (e mesmo se houver avisos sobre dados confidenciais, na maioria dos casos, os clientes não os lêem).

  • Estou falando de campos específicos?

Não. Estou trabalhando apenas em aplicativos comerciais gerais, portanto, os únicos dados confidenciais são dados comerciais. Não há nada relacionado à saúde ou outros campos cobertos por regulamentos específicos. Mas obrigado por falar sobre isso, eu provavelmente deveria dar uma olhada nesses campos para obter algumas dicas sobre o que posso incluir nas diretrizes.

  • Não é mais fácil criptografar os dados?

Não. Isso tornaria cada aplicativo muito mais difícil, especialmente se queremos usar o diagnóstico e o C # TraceSource. Também seria necessário gerenciar autorizações, o que não é o mais fácil de se pensar. Por fim, se estivermos falando sobre os logs enviados a nós por um cliente, precisamos poder ler os logs, mas sem ter acesso a dados confidenciais. Portanto, tecnicamente, é mais fácil nunca incluir informações confidenciais nos logs e nunca se preocupar com como e onde esses logs são armazenados.

Arseni Mourzenko
fonte
Você está levando em consideração o nível do log? Quero dizer, pode ser bom para debugum nome de arquivo, mas não para infoum nome de arquivo.
Jeremy Heiler
@ Jeremy Heiler: Estou falando apenas dos dados de log que são armazenados no disco rígido (geralmente de maneira não segura) e / ou enviados pela Internet para os desenvolvedores do aplicativo para fins de depuração.
Arseni Mourzenko
Muitos aplicativos gravam o registro diretamente no disco, independentemente do nível de registro. A menos que seu armazenamento de log seja uma tabela de banco de dados ... Se você estiver enviando os arquivos de log para outros desenvolvedores via rede, você pode criptografar o arquivo, sim?
FrustratedWithFormsDesigner
2
Sem saber o que você está fazendo, é realmente difícil descobrir quais são os dados confidenciais. Você tem preocupações regulatórias (PCI ou HIPAA ou qualquer outra coisa)?
precisa
1
Se você puder falar sobre o campo específico em que está trabalhando, pergunte em security.stackexchange.com, pois os especialistas em segurança / conformidade podem informar sobre questões regulatórias, legais ou outras questões de segurança.

Respostas:

3

Acredito que a melhor maneira de lidar com isso é tratar os arquivos de log como apenas outra interface do usuário para o aplicativo. O fato de as informações serem armazenadas em arquivos de texto não torna o conteúdo diferente das informações exibidas nas telas regulares da interface do usuário.

Pense em como você protegeria as mesmas informações se elas fossem exibidas em uma interface de usuário comum. Você precisaria identificar quem era o usuário e, em seguida, expor apenas as informações que esse usuário estava autorizado a ver.

As informações nos arquivos de log devem ser tratadas da mesma maneira. Você deve primeiro responder exatamente quem deve ser autorizado a ver o arquivo de log e quais informações eles devem ter permissão.

Passar arquivos de log mal projetados é um enorme risco à segurança. Não acredito que você obterá uma boa solução para isso colocando na lista negra algum tipo de dados. Uma estratégia melhor é colocar na lista branca o que poderia estar em cada arquivo de log e projetar os arquivos de log de baixo para cima.

sstendal
fonte
8

As informações do cartão de crédito nunca devem ser registradas.

Números de identificação (como SSN nos EUA ou Teudat Zehut # em Israel).

Nomes de computadores em rede, caminhos de compartilhamento de rede.

Oded
fonte
O padrão PCI-DSS proíbe armazenar o número do cartão de qualquer forma ou formato.
Tangurena 02/03
@Tangurena não é verdade, eles permitem armazenamento, mas exigem que seja protegido adequadamente. (Requisitos do PCI-DSS e avaliação de segurança V2.0 de outubro de 2010, requisito 3)
Newtopian 03/03
7

Informações de saúde pessoalmente identificáveis ​​cobertas pela Lei de Portabilidade e Responsabilidade do Seguro de Saúde de 1996 (HIPAA). Este artigo lista os seguintes exemplos:

  • As solicitações de assistência médica ou as informações de atendimento de saúde encontram informações, como documentação das consultas médicas e anotações feitas por médicos e outra equipe prestadora de serviços;
  • Assessoria para pagamento e remessa de serviços de saúde;
  • Coordenação de benefícios em saúde;
  • Status de reivindicação de assistência médica;
  • Inscrição e cancelamento de inscrição em um plano de saúde;
  • Elegibilidade para um plano de saúde;
  • Pagamentos de prêmios de planos de saúde;
  • Certificações e autorização de referência;
  • Primeiro relato de lesão;
  • Anexos de alegações de saúde.
tcrosley
fonte
5

se a segurança for uma preocupação, criptografe o arquivo de log

Steven A. Lowe
fonte
2

Em cima da minha cabeça....

As informações do cartão de crédito não devem estar nos logs. Os dados SSN (ou SIN) não devem estar nos logs.

... é claro que há exceções, se você trabalhar para algum armazenamento central de dados de uma empresa de cartão de crédito ou agência governamental que gerencia dados do SIN, talvez seja necessário registrá-los, porque é o principal elemento do que você está processando / gerenciando.

FrustratedWithFormsDesigner
fonte
1

Sim mas.

Para depurar alguns problemas, você precisa de dados reais.

Portanto, você precisa jogar um jogo de equilíbrio: de fato, deve discutir e concordar com seus principais clientes o que eles consideram dados confidenciais ou sensíveis e o que não. Se vários clientes discordarem, use o pior cenário para todos os aspectos, a menos que você possa justificá-lo para os clientes que podem exagerar ao rotular tudo que é sensível.

Trabalhei no controle de tráfego aéreo, finanças e bancos. Em todas as situações, existem dados confidenciais. Existem tarefas para as quais é inevitável lidar com dados confidenciais; nesses casos, você precisa ter a certeza de que trabalha com pessoas confiáveis. Esse risco pode ser um pouco atenuado por cláusulas legais a serem acordadas antes do acesso a esses dados (acordos de não divulgação, uso de dados apenas por razões comerciais válidas, acesso limitado a dados, penalidades por não cumprimento ou cumprimento dos contratos ...) - e processos relevantes que possibilitam rastrear essas coisas.

Se os dados forem críticos, você deverá pagar o preço na instalação de sistemas que protejam a integridade, coerência e segurança desses dados.

Dito isto, você está certo em fazer a pergunta "quais dados". Na verdade, você mesmo responde: a maioria é relacionada a negócios. Portanto, pergunte aos seus clientes se você não pode responder a si mesmo - tendo em mente tudo o que foi dito acima e mantendo alguma maneira de identificar e corrigir problemas que possam surgir.

asoundmove
fonte
Eu trabalhei com dados de hipotecas ao vivo, que tinham muitas coisas que eu poderia ter usado mal. Foi interessante não ter sido examinado por segurança ou solicitado a assinar algo específico. A grande diferença entre isso e os lugares onde trabalhei com dados menos sensíveis foi a falta de um pool de loteria para escritórios.
21811 David Thornley
0

Eu diria, registre mensagens que parecem engraçadas enquanto você está codificando. Você não os achará engraçados no final das contas e eles estarão lá para sempre - assim como o post no blog / facebook / twiter!

Mantenha as mensagens de log inativas :)

Nick Pierpoint
fonte