Se a especificação for falha, ela ainda deve ser seguida?

28

Fui designado para desenvolver uma integração com um dos aplicativos de meu empregador em um sistema externo desenvolvido por nosso cliente. A especificação de nosso cliente para a integração que apresenta algumas falhas flagrantes relacionadas à segurança. As falhas permitiriam que um usuário não autorizado acesse o sistema para visualizar dados restritos.

Eu apontei as falhas e seus possíveis riscos à segurança se elas foram implementadas como projetadas, e forneci uma alternativa sem a falha, mas (em resumo) foram informadas "faça da maneira que especificamos" pelo cliente.

Um programador tem uma responsabilidade ética de NÃO implementar código com riscos de segurança conhecidos? Em que ponto os requisitos de um cliente superam a responsabilidade ética que temos como desenvolvedores de software para criar aplicativos seguros?

Nick Orlando
fonte
9
Você apontou os riscos, mas também apontou a probabilidade e (possivelmente o mais importante) o impacto desses riscos em algum aspecto de suas operações? Tem certeza de que o cliente entende completamente os riscos e possui documentação para esse efeito?
Thomas Owens
7
Ultimamente, tenho jogado isso na minha cabeça em alguns dos meus trabalhos. Se fizermos a mesma comparação em relação a um construtor de pontes, na qual ele é solicitado a construir uma ponte que não tenha aqueles suportes irritantes e obstrutivos embaixo dela, ou que possam suportar apenas o peso de dois carros, então, pelo bem de sua reputação, ele provavelmente recusarei. Estou pensando que realmente deve chegar um momento em que é dever de um engenheiro / pessoa recusar. É verdade que a grande maioria das queixas de design não chega perto do risco de ferimentos / morte humanos.
Katana314
2
@ Katana314 Definitivamente, não há risco de ferimentos ou morte no meu cenário atual. Essa é definitivamente mais fácil de responder ... Mas você bateu na unha na cabeça, eu acho. Pesquisas adicionais me levaram ao Código de Ética da ACM , que parece reforçar nossa responsabilidade de identificar e divulgar quaisquer problemas previsíveis.
Nick Orlando
3
@TheSoftwareDev É justo, mas vou acrescentar que algumas vezes os riscos humanos podem ser mais profundos do que imaginamos. Um risco de segurança que permite que um hacker pegue facilmente as informações das pessoas e roube sua identidade, deixando-as desabrigadas para depois cometer suicídio; Uma falha na rede social que permite que um perseguidor intercepte as comunicações privadas de uma mulher sobre a reunião em um restaurante, depois a siga fisicamente e a prenda; é um pouco mórbido pensar ISSO de forma criativa, mas às vezes podemos esquecer como nossos projetos de longo alcance podem ser usados.
Katana314
11
@gnat Não é realmente uma duplicata. A questão vinculada é sobre a abordagem geral da ética do software; esta pergunta quanto de uma luta o OP deveria colocar antes de dizer 'não é mais meu problema'.
23913 rath

Respostas:

40

Acho que você fez sua parte apontando o problema e sugerindo uma alternativa. Se eles insistirem que você faça coisas que os exponham a um certo nível de risco, verifique se você tem uma trilha de papel (e backups) mostrando que eles solicitaram explicitamente isso, conhecendo os riscos envolvidos. Se você é realmentepreocupado, você pode dizer-lhes que faria com prazer o que eles querem, se eles primeiro assinarem algum tipo de documento legal / isenção de responsabilidade no qual reconhecem os riscos associados ao que solicitaram que você fizesse (e, é claro, procure um advogado redigir esse documento). Pessoalmente, não conheço nenhum precedente para esse documento para esta situação, mas tenho certeza de que você poderia encontrar um advogado para ajudá-lo. Se sua empresa possui um departamento jurídico, pode ser algo com que eles devem se envolver se houver um potencial de responsabilidade corporativa. E, claro, se isso é sério, você deve discutir isso com seu gerente também.

Eu acho que a única situação em que poderia ser simplesmente recusar o trabalho seria se esse fosse um software para um sistema em que a falha com a qual você está preocupado poderia levar o sistema a ser comprometido de tal maneira que pudesse resultar na muito provável perda de vidas / ferimentos graves ou algum tipo de perda de propriedade catastrófica.

FrustratedWithFormsDesigner
fonte
4
Ou responsabilidade pessoal ... ou seja, se você for demitido ou pior #
Dan Pichelman
5
Não há documento que o cliente ou empregador possa assinar que garantiria ao OP imunidade de processo civil. Ele pode, dependendo da natureza de seu emprego, se enquadrar na definição e proteção de um relacionamento de agência com sua empresa, fornecendo um escudo de responsabilidade, mas na ausência de tal escudo, "eu estava apenas seguindo ordens" não é uma defesa. não importa quão bem documentado. O autor / acusação pode simplesmente dizer "você poderia simplesmente desistir; mesmo que alguém o tivesse feito, isso estaria na cabeça deles agora, não na sua".
22413 KeithS
2
O melhor que a empresa poderia fazer é garantir a cobertura da responsabilidade financeira do OP, incluindo custas judiciais e legais. A empresa não pode ser presa se ele violar uma lei.
22413 KeithS
11
@BazzPsychoNut: Parece que o OP já tentou apontar os riscos e explicá-los, e está sendo ignorado. Se eles não puderem / não quiserem simplesmente se recusar a fazer o trabalho, acho que devem cobrir o máximo possível e também devem consultar um advogado (que eu suspeito que lhes daria conselhos mais específicos para a situação, e também informar para cobrir sua bunda).
FrustratedWithFormsDesigner
11
+1 para a trilha de papel e também tenha cuidado se estiver envolvido na implantação. Embora seja improvável que haja, existem muitas leis (a Lei de Proteção de Dados no Reino Unido, por exemplo) que significam que o tratamento negligente de dados pessoais pode se tornar um crime grave.
Matt