Devo aceitar escrever código não seguro se meu empregador solicitar que eu faça isso? [fechadas]

24

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.

Antoine
fonte
2
Você deve entrar em contato com um advogado - este não é o lugar certo para obter uma resposta.
Oded
11
IANAL, mas parece improvável que um empregador possa processar com êxito um funcionário por fazer exatamente o que eles disseram para ele fazer.
3
@Oded: o cliente pode processar a empresa, sim, e a empresa ainda pode injustamente culpar e demitir o funcionário (em uma jurisdição "à vontade"), mas nunca ouvi falar de clientes capazes de processar programadores individuais. A empresa é a entidade legal que celebrou o contrato de venda, não o funcionário, por isso é a empresa responsável por questões de qualidade no produto.
8
O que poderia diminuir a confiança de seus clientes em suas soluções mais do que armazenar uma senha em texto simples ?! Absurdo. Se o seu chefe vai pedir para você cavar sua própria cova, basta fazê-lo, mas certifique-se de recebê-lo por escrito, por e-mail, informando-o sobre sua discordância e avisando-o das possíveis consequências, e também pedindo que você faça-o de qualquer maneira. Mantenha essa correspondência com você sempre.
Maple_shaft
3
Estou votando para encerrar esta pergunta como fora de tópico, porque é uma pergunta legal que só pode ser respondida adequadamente por um advogado.

Respostas:

11

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.

LarsTech
fonte
34

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.

Landei
fonte
6
E imprima-o / envie-o para uma conta externa também.
Bill Leeper
7
Conhecido como CYA (Cover Your A ..). Certa vez, enviei uma cópia da instrução questionável para minha conta pessoal de email e a enviei para a divisão jurídica da empresa (tínhamos uma equipe de ética, portanto isso era confidencial). Depende de quanto calor você está preparado para receber e quanta "proteção" você precisa. Outros que valem a pena pensar são Marketing, The Board (responsável final), O proprietário / acionistas. Pergunte "Quem tem mais a perder"? Será uma limitação de carreira, pois você desperdiçou muito tempo importante das pessoas ou fez seu chefe parecer mal.
mattnz
+1 - cubra suas costas. Documente suas objeções e raciocínio a respeito de por que você acha que isso é ruim. Documente a resposta de seus gerentes. Imprima e arquive com cuidado, caso o calor volte para você.
Qwerky 7/11
CYA, mas não seja agressivo passivo. Certifique-se de expressar suas objeções de volta ao seu empregador e salve esse email também.
Doug T.
Puro e simples - eu gosto desta resposta. Definitivamente, isso ajudaria legalmente a responsabilidade; no entanto, você ainda precisará tomar a decisão ética.
Stringo0
6

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.

Wyatt Barnett
fonte
3

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? :)

gbjbaanb
fonte
1

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:

  1. 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.

  2. 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.

  3. A fim de responsabilizar o verdadeiro tomador de decisão, eu solicitaria que os superiores confirmassem sua opinião no e-mail desses documentos.

  4. 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.

Dipan Mehta
fonte
1

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.

Não vou revelar qual é o software até ter certeza de que esse recurso o faz na versão final. Ainda tenho esperança de conseguir informar os clientes da maneira que considero aceitável.

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ê .

amelvin
fonte
11
Obrigado pela sua resposta. Eu expressei mal no meu comentário. Eu não ficaria feliz com essa decisão em particular, mas isso não me deixa com raiva da empresa ou de ninguém. Tornar público esse em um site de perguntas e respostas seria definitivamente uma má ideia. Seria publicidade negativa E há muito poucas chances de ajudar alguém.
Antoine
É bom que exista um fórum como esse para você desabafar - espero que tudo corra bem.
Amelvin #
1

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.

NWS
fonte
1

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ê.

Bill Leeper
fonte
Você percebe que mesmo o Google armazena senhas em texto simples, certo? Se você é o administrador de um site, pode ver as senhas das contas.
apscience
11
Acho que não. Você não armazena as senhas. Você faz um hash unidirecional que não pode ser revertido e o armazena. Essa é a maneira padrão de fazer isso. Até os hacks recentes em que as contas foram comprometidas fizeram dessa maneira. O principal problema é que, se alguém obtém os hashes e sabe como eles foram gerados, eles o acessam com um dicionário. Mas NÃO NÃO NÃO, você nunca, nunca, nunca, nunca armazena as próprias senhas criptografadas. Só estou pedindo problemas com esse. Quer saber mais. Acesse aqui: owasp.org/index.php/Main_Page
Bill Leeper
Tenho certeza que o Google faz. Se você é um administrador de aplicativos, pode procurar todas as senhas de seus usuários. Consulte google.com/support/forum/p/Google%20Apps/… , resposta nº 4.
apscience
11
RTFA. Desculpe, diz que VOCÊ pode fazer login como usuário. Este é um método em que um usuário com certas privilégios pode se passar por outro usuário. Em nenhum momento o google fornece a senha da outra pessoa. Você está efetuando login com suas próprias credenciais e, em seguida, representando o outro usuário. Isso é bastante comum e é uma solução para o meu comentário original, em que o chefe pode querer fazer login como um usuário específico.
Bill Leeper
0

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

catraca arrepiante
fonte
Dependendo do motivo da demanda, isso pode não chegar nem perto de satisfazer os superiores do OP.
um CVn
0

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.

Thomas Owens
fonte
-3

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.

mouviciel
fonte
Apenas seguindo ordens, senhor. Acho que não. Os programadores são contratados para pensar, fazer perguntas e ser criativo. É um software de baixa qualidade como esse que dá à indústria um nome ruim e põe em risco nossas informações pessoais.
Bill Leeper
Minha resposta sugere exatamente o oposto: se seu chefe está em contradição com os requisitos, você pode ignorá-lo com segurança. Duvido que, no caso exposto, o chefe aceite que seu pedido seja escrito em requisitos.
Mouviciel