Meu empregador me pediu para implementar um recurso que exigiria o armazenamento de senhas em texto não criptografado em um banco de dados (ou o uso de uma função obscura de criptografia / descriptografia, armazenada em um binário, o que é um pouco melhor, mas também inseguro).
Respondi que estava disposto a implementar esse recurso, desde que os clientes soubessem das implicações de segurança ao usá-lo.
Ao discutir esse problema com colegas, alguém me disse que, como engenheiro de software, somos pessoalmente responsáveis (no sentido legal) pelos problemas de segurança que introduzimos em nossos produtos. Examinei meu contrato, mas não encontrei nada relacionado a um caso semelhante.
Do ponto de vista legal, devo me recusar a implementar esse recurso? É verdade que meu empregador pode me levar a tribunal se um cliente sofrer danos devido a esse recurso, mesmo que ele também tenha conhecimento de problemas de segurança?
EDIT: Entendo que esta pergunta só pode ser respondida com segurança por um advogado. O mesmo vale para as questões de licenciamento: as pessoas aqui dão sua compreensão e sua experiência, às vezes depois de consultar um advogado, sem garantia de que se aplique em outra jurisdição. Mas o licenciamento é explicitamente aceito como um tópico aqui, consulte Que tipo de perguntas posso fazer aqui? . Acredito que outros programadores podem ter o mesmo problema, e outros podem ter sido confrontados com essa situação antes e podem ter consultado um advogado para isso.
Respostas:
Seu colega está mal orientado, principalmente porque você não encontrou nada sobre responsabilidade de segurança em seu contrato. Mesmo assim, você acabou de receber uma ordem conflitante da gerência.
Acho que a única vez em que você se submete a um litígio em potencial é danificar conscientemente o produto, criar sua própria bomba-relógio, ovo de páscoa etc.
Na maioria dos casos, a empresa é dona do software, de modo que eles aproveitam os lucros, mas isso também significa que eles também assumem os riscos, não o desenvolvedor individual.
Pessoalmente, eu asseguraria que o gerenciamento estivesse ciente dos problemas com esse recurso de segurança, para que ele fosse documentado com antecedência e continuasse fazendo meu trabalho.
Dito isto, consulte um advogado, yada-yada-yada.
fonte
Aconteça o que acontecer: nunca escreva esse código sem ter um email ou outra evidência mostrando claramente que você acabou de seguir as instruções do seu empregador.
fonte
Do ponto de vista jurídico, consulte um advogado. Eu não sou um, nem temos nenhuma pista de que jurisdição ou leis em que você vive, as quais possam ajudar a explicar algumas coisas. Mas, em qualquer caso, consulte um advogado, você confiaria em um site de perguntas e respostas na Internet com seu futuro pessoal, profissional e financeiro.
O conselho geral dos negócios é garantir que você faça suas reservas por escrito e que o pedido direto de seu empregador continue, dadas as preocupações de segurança por escrito. Se as coisas vão para o sul e atingem o ventilador, você terá que recorrer.
Outra maneira de contornar isso seria aprofundar os requisitos - você compartilhou o plano e não o problema que está resolvendo. Há mais de uma maneira de esfolar um gato ou lidar com os requisitos de pesquisa de senha.
fonte
Eu não me preocuparia com isso - não é como se você estivesse maliciosamente decidindo colocar o recurso inseguro e explorá-lo depois, ou apenas porque é negligente. A empresa quer isso, alguém decidiu que a troca entre tempo de desenvolvimento e expectativas do usuário é aceitável (como de costume) e, portanto, você deve continuar com isso. Se você está realmente preocupado com algum retorno, envie um email ao seu chefe e mantenha a resposta. Depois de fazer isso, como funcionário, você estará coberto.
Às vezes, existem razões pelas quais isso é aceitável - por exemplo, eu sei de algumas soluções de missão crítica que armazenam senhas em texto sem formatação, mas o resto do sistema está protegido para que isso não se torne um problema. Este sistema está em uma rede separada, por exemplo. Se você não conhece o resto da história (uma situação comum na maioria das empresas), pode razoavelmente esperar que outra pessoa tenha considerado isso. Da mesma forma, se você receber esse e-mail do seu chefe, pode esperar que ele saiba o que está fazendo.
Aliás ... este é um produto que eu (como consumidor) poderia usar? Se sim .. o que é, para que eu possa evitá-lo? :)
fonte
Percebemos que inúmeros bugs foram adicionados pelos desenvolvedores, o que prejudica os clientes durante as operações ao vivo para um grande patrimônio. Não achamos que sejam intencionais, mas isso ainda é resultado de alguns de nossos trabalhos concretos e ainda não está certo. Portanto, o exemplo que você deu não é um caso isolado, em que as decisões do desenvolvedor (ou superiores) afetam o cliente.
Aqui está o que eu sugiro:
Em primeiro lugar, por todos os meios - é a empresa que está entregando o software para a outra empresa. Um indivíduo não recebe crédito direto (além de aplausos da equipe e, no máximo, salário) e propriedade do trabalho. Portanto, embora isso não seja uma coisa boa como parte de nossa entrega, mas você não é o criminoso aqui - desde que a decisão não seja sua.
Como programador profissional - você indica claramente as limitações do código e os perigos envolvidos em como manter as coisas como parte do arquivo README ou da documentação envolvida. Se houver um documento de requisitos - o relatório de teste sugerido etc. deve mencionar claramente as limitações.
A fim de responsabilizar o verdadeiro tomador de decisão, eu solicitaria que os superiores confirmassem sua opinião no e-mail desses documentos.
Pese o risco corretamente. O software do meu cartão de dados armazena a senha no texto planejado, mas isso não é importante. Mas o mesmo não é aceitável se eu estiver armazenando uma senha bancária ou se for acesso ao banco de dados ou servidor. Portanto, com base no risco real, você deve escalar o problema para o mais alto possível.
fonte
A menos que você realize seu trabalho de maneira deliberadamente prejudicial, há pouca desvantagem legal em executar as tarefas solicitadas. Você terá um contrato de trabalho que declarará suas responsabilidades, e poderá consultar um advogado sobre os detalhes técnicos. Obtenha aprovação por escrito da decisão de design sobre senhas em texto sem formatação, se você realmente se sentir exposto.
Um pouco mais preocupante é a sua citação sobre 'informar os clientes'. Se você prejudicar a reputação de sua empresa, etc (uma cláusula sobre a qual estará em seu contrato), sua empresa poderá processá-lo - e uma defesa de "denunciante" poderá não ajudá-lo quando você precisar de uma referência ou outro emprego.
Se você está insatisfeito com as implicações das falhas de segurança, retifique seu currículo e siga em frente, mas se não foi sua decisão e não é sua empresa, não vejo por que isso seria 'culpado' (legalmente) por você .
fonte
Sua empresa deveria ter feito uma forma de seguro de responsabilidade civil profissional quando o empregou. Isso deve fornecer proteção legal adequada para todos os funcionários em caso de algo dar errado com o software ou uso indevido de software ou falhas no software (como senhas não criptografadas).
Como funcionário, você deve fazer o que eles pedem e fazer o que o cliente deseja, desde que nenhuma das partes esteja violando a lei, não há problema; mas se você fizer o que a empresa deseja, então não for o que o cliente queria / exigia, o que é entre eles, e o seguro de responsabilidade civil profissional deve cobrir você de qualquer culpa / responsabilidade pessoal.
IANAL, mas eu gostaria disso com a equipe jurídica das empresas, além de consultar seus advogados.
PS, se você estiver seriamente assustado com isso, salve todos os e-mails relevantes em cópia eletrônica e impressa em algum lugar externo, se possível.
fonte
Hora de um novo emprego. Esqueça de implementar isso. Está na hora de mudar. Se eles estiverem dispostos a ser tão arrogantes e enganosos com isso, também não terão medo de jogá-lo debaixo do ônibus.
Além disso, não tenha medo quando entrar em contato anonimamente com um dos muitos grupos que apontam falhas de segurança no software das pessoas. Isso é um desastre esperando para ocorrer. Não há absolutamente nenhuma razão sólida para armazená-las. Seu chefe lhe deu um motivo? Eles querem fazer login como usuários? Eles querem facilitar a recuperação de senhas? A menos que você obtenha uma resposta para uma das perguntas acima, que você pode resolver com mais segurança, é hora de seguir em frente. Quando você sair, é melhor não dizer o porquê.
fonte
o que você pode fazer para seguir as instruções para armazenar senhas em um formato recuperável e ainda não conseguir recuperar se você tiver acesso total ao programa usando criptografia assimétrica
você criptografa a chave (salgada como sempre) com a chave pública armazenada no binário
e quando as senhas são necessárias em texto sem formatação, um ser humano precisa fornecer a chave privada que, de outra forma, é mantida em segurança longe do servidor
fonte
Pessoalmente, nunca ouvi falar de um engenheiro de software, sem uma cláusula no contrato ou outro acordo formal, sendo legalmente responsável por problemas de segurança nos produtos em que trabalham. Pelo que li sobre leis e ética em engenharia de software, os requisitos de segurança para um sistema são ditados pela especificação de requisitos, que também se refere a quaisquer requisitos legais, do setor ou corporativos. Ao criar um sistema, a falha no atendimento aos requisitos de segurança é tratada como uma falha no preenchimento dos termos do contrato, pois o sistema não foi construído conforme especificado. Como os eventos específicos se desenrolam depende dos contratos entre o engenheiro e o empregador e o empregador e o cliente.
As leis também não dizem o que você deve fazer, mas o que você pode / não pode fazer. Você não menciona em que setor se encontra, mas alguns têm leis, regulamentos e regras sobre como lidar com tipos específicos de dados - o que precisa ser criptografado, níveis mínimos de criptografia, requisitos para gerenciar / controlar o acesso, e assim por diante. Se sua área (país, estado) não possui regras sobre segurança, seu setor não possui regras sobre segurança e os requisitos de software não apontam requisitos ou padrões de segurança, pode ser mais um problema ético do que um questão legal.
Quando se trata de questões éticas no desenvolvimento de software, assino o Código de Ética e Prática Profissional da Engenharia de Software . Em última análise, a decisão é sua. No entanto, acho que armazenar senhas em texto sem formatação ou em um formato que possa ser descriptografado não é ético.
fonte
Basta estar em conformidade com o processo de desenvolvimento do seu projeto: se esse recurso estiver escrito no documento de requisitos, você deverá implementá-lo.
fonte