Si la especificación es defectuosa, ¿se debe seguir?

28

Me han asignado desarrollar una integración a una de las aplicaciones de mi empleador a un sistema externo desarrollado por nuestro cliente. La especificación de nuestro cliente para la integración que tiene algunos defectos flagrantes relacionados con la seguridad. Las fallas permitirían que un usuario no autorizado acceda al sistema para ver datos restringidos.

He señalado las fallas y sus posibles riesgos de seguridad si se implementan como se diseñó, y proporcioné una alternativa sin la falla, pero (en resumen) el cliente me ha dicho "hágalo de la manera que especificamos".

¿Tiene un programador la responsabilidad ética de NO implementar código con riesgos de seguridad conocidos? ¿En qué momento los requisitos de un cliente superan la responsabilidad ética que tenemos como desarrolladores de software para crear aplicaciones seguras?

Nick Orlando
fuente
9
Usted ha señalado los riesgos, pero ¿también señaló la probabilidad y (posiblemente más importante) el impacto de estos riesgos en algún aspecto de sus operaciones? ¿Está seguro de que el cliente comprende completamente los riesgos y tiene documentación al respecto?
Thomas Owens
77
He estado lanzando esto en mi cabeza últimamente en algunos de mis trabajos. Si hacemos la misma comparación con respecto a un constructor de puentes, en el que se le pide que construya un puente que no tenga esos molestos y obstructivos soportes debajo, o que solo pueda soportar el peso de dos autos, entonces, por el bien de su reputación, él Es probable que simplemente se niegue. Creo que realmente debe llegar un punto en el que el deber de un ingeniero / persona sea rechazar. Por supuesto, la gran mayoría de las quejas de diseño no se acercan al riesgo de lesiones / muerte humanas.
Katana314
2
@ Katana314 Definitivamente no hay riesgo de lesiones físicas o muerte con mi escenario actual. Esa es definitivamente más fácil de contestar ... Pero creo que has dado en el clavo. Las búsquedas adicionales me llevaron al Código de Ética de la ACM , que parece reforzar nuestra responsabilidad de identificar y dar a conocer cualquier problema previsible.
Nick Orlando
3
@TheSoftwareDev Es bastante justo, pero solo agregaré que a veces los riesgos humanos pueden ser más profundos de lo que pensamos. Un riesgo de seguridad que permite a un hacker tomar fácilmente la información de las personas y robar su identidad, dejándolas sin hogar para luego suicidarse; Una falla de la red social que permite a un acosador interceptar las comunicaciones privadas de una mujer sobre una reunión en un restaurante, luego seguirla y atraparla físicamente; Es un poco mórbido pensar ESO creativamente, pero a veces podemos olvidar cuán de largo alcance podrían usarse nuestros proyectos.
Katana314
1
@gnat No es realmente un duplicado. La pregunta vinculada es sobre el enfoque general de la ética del software, esta pregunta qué tan difícil debería ser la OP antes de decir 'ya no es mi problema'.
rath

Respuestas:

40

Creo que has hecho tu parte señalando el problema y sugiriendo una alternativa. Si insisten en que haga cosas que los expongan a un cierto nivel de riesgo, debe asegurarse de tener un rastro en papel (y copias de seguridad) que demuestre que lo solicitaron explícitamente, sabiendo los riesgos involucrados. Si realmente erespreocupado, podría decirles que con gusto haría lo que quiere, si primero firman algún tipo de documento legal / descargo de responsabilidad en el que reconocen los riesgos asociados con lo que le han pedido que haga (y, por supuesto, busque un abogado redactar dicho documento). Personalmente no conozco ningún precedente para tal documento para esta situación, pero estoy seguro de que podría encontrar un abogado que lo ayude con esto. Si su empresa tiene un departamento legal, podría ser algo en lo que deberían involucrarse si existe un riesgo potencial de responsabilidad corporativa. Y, por supuesto, si es tan grave, también debe discutir esto con su gerente.

Creo que la única situación en la que podría estar bien negarse a hacer el trabajo sería si se trata de un software para un sistema donde la falla que le preocupa podría llevar al sistema a verse comprometido de tal manera que podría resultar en la muy probable pérdida de vidas / lesiones personales graves o algún tipo de pérdida catastrófica de propiedad.

FrustratedWithFormsDesigner
fuente
44
O responsabilidad personal ... es decir, si te despiden o algo peor
Dan Pichelman
55
No existe ningún documento que el cliente o el empleador pueda firmar que otorgue inmunidad OP a la demanda civil. Dependiendo de la naturaleza de su empleo, puede caer bajo la definición y las protecciones de una relación de agencia con su compañía, proporcionando un escudo de responsabilidad civil, pero en ausencia de dicho escudo, "Solo estaba siguiendo órdenes" no es una defensa, no importa qué tan bien documentado. El demandante / acusador puede simplemente decir "podrías haber renunciado; incluso si alguien más lo hubiera hecho, ahora estaría en su cabeza, no en la tuya".
KeithS
2
Lo mejor que la compañía podría hacer es garantizar la cobertura de la responsabilidad financiera del OP, incluidos los costos judiciales y legales. La compañía no puede ir a la cárcel por él si resulta que violó una ley.
KeithS
1
@BazzPsychoNut: Parece que el OP ya ha tratado de señalar los riesgos y explicarlos, y está siendo ignorado. Si no pueden / no quieren simplemente se niegan a hacer el trabajo, creo que se deben cubrir su culo tanto como sea posible y deben también consultar con un abogado (que sospecho que les daría un asesoramiento más específico para la situación, y también decirle ellos para cubrirse el culo).
FrustratedWithFormsDesigner
1
+1 para el rastro de papel, y también tenga cuidado si está involucrado en la implementación. Si bien es poco probable que lo haga, hay muchas leyes (la Ley de Protección de Datos en el Reino Unido, por ejemplo) que significa que el manejo negligente de datos personales puede convertirse en un delito grave.
Matt