¿Debo aceptar escribir un código no seguro si mi empleador me lo solicita? [cerrado]

24

Mi empleador me pidió que implementara una función que requeriría almacenar contraseñas en texto claro en una base de datos (o usar una función oscura de cifrado / descifrado almacenada en un binario, que es un poco mejor, pero también insegura).

Respondí que estaba dispuesto a implementar dicha función, siempre que se reconociera a los clientes las implicaciones de seguridad al usarla.

Al discutir este problema con colegas, alguien me dijo que, como ingeniero de software, somos personalmente responsables (en el sentido legal) de los problemas de seguridad que presentamos en nuestros productos. Revisé mi contrato, pero no encontré nada relacionado con un caso similar.

Desde un punto de vista legal, ¿debería negarme a implementar tal característica? ¿Es cierto que mi empleador podría llevarme a los tribunales si un cliente sufre daños debido a esta característica, incluso si también tiene conocimiento de las preocupaciones de seguridad?


EDITAR: Entiendo que esta pregunta solo puede ser respondida de manera confiable por un abogado. Lo mismo es cierto para las preguntas sobre licencias: las personas aquí dan su comprensión y su experiencia, a veces después de haber consultado a un abogado, sin garantía de que se aplique en otra jurisdicción. Pero la licencia se acepta explícitamente como un tema aquí, consulte ¿Qué tipo de preguntas puedo hacer aquí? . Creo que otros programadores pueden tener el mismo problema, y ​​otros pueden haberse enfrentado a esta situación antes, y pueden haber consultado a un abogado para eso.

Antoine
fuente
2
Debe comunicarse con un abogado; este no es el lugar adecuado para obtener una respuesta.
Oded
11
IANAL, pero parece poco probable que un empleador pueda demandar con éxito a un empleado por hacer exactamente lo que le dijeron que hiciera.
3
@Oded: el cliente podría demandar a la empresa, sí, y la empresa aún podría culpar y despedir injustamente al empleado (en una jurisdicción "a voluntad"), pero nunca he oído hablar de clientes que puedan demandar a programadores individuales. La compañía es la entidad legal que suscribió el contrato de venta, no el empleado, por lo que es la compañía la responsable de los problemas de calidad del producto.
8
¿Qué podría reducir la confianza de sus clientes en sus soluciones más que almacenar una contraseña en texto sin formato? Absurdo. Si tu jefe te va a pedir que caves su propia tumba, entonces solo hazlo, pero asegúrate de que lo recibas por escrito por correo electrónico que le informaste de tu desacuerdo y le advertiste sobre las posibles consecuencias, y también que te ordene hazlo de todos modos. Mantenga esa correspondencia con usted siempre.
maple_shaft
3
Estoy votando para cerrar esta pregunta como fuera de tema porque es una pregunta legal que solo puede ser respondida adecuadamente por un abogado.

Respuestas:

11

Su colega está equivocado, especialmente porque no pudo encontrar nada sobre responsabilidad de seguridad en su contrato. Incluso si lo hiciera, acaba de recibir una orden conflictiva de la gerencia.

Creo que la única vez que se somete a un litigio potencial es si a sabiendas daña el producto usted mismo, crea su propia bomba de tiempo, huevo de pascua, etc.

En la mayoría de los casos, la compañía es propietaria del software, por lo que pueden disfrutar de las ganancias, pero también significa que también pueden asumir los riesgos, no el desarrollador individual.

Personalmente, me aseguraría de que la administración conociera los problemas con esta característica de seguridad, de modo que se documentara de antemano, y simplemente continuara haciendo mi trabajo.

Dicho esto, consulte a un abogado, yada-yada-yada.

LarsTech
fuente
34

Pase lo que pase: nunca escriba dicho código sin tener un correo electrónico u otra evidencia que demuestre claramente que acaba de seguir las instrucciones de su empleador.

Landei
fuente
66
E imprimirlo / enviarlo a una cuenta externa también.
Bill Leeper el
77
Conocido como CYA (Cover Your A ..). Una vez envié una copia de las instrucciones objetables a mi cuenta de correo electrónico personal y la envié a la división legal de la compañía (teníamos un equipo de ética, por lo que esto era confidencial). Depende de cuánto calor esté preparado para tomar y cuánta "protección" necesite. Otros en los que vale la pena pensar son Marketing, The Board (último responsable), The Owner / accionistas. Pregunte "¿Quién tiene más que perder"? Limitará su carrera, ya que ha malgastado un montón de tiempo importante de las personas o ha hecho que su jefe se vea mal.
mattnz
+1 - cubre tu espalda. Documente sus objeciones y razonamientos de por qué cree que esto es malo. Documente la respuesta de su gerente. Imprima esto y archívelo cuidadosamente en caso de que el calor vuelva a usted.
Qwerky
CYA pero no seas pasivo agresivo al respecto. Asegúrese de expresar sus objeciones a su empleador y guarde ese correo electrónico también.
Doug T.
Claro y simple: me gusta esta respuesta. Esto definitivamente ayudaría con la responsabilidad legal, sin embargo, aún tendrá que tomar la decisión ética usted mismo.
stringo0
6

Desde un punto de vista legal, consulte a un abogado. No soy uno, ni tenemos idea de la jurisdicción o leyes bajo las cuales usted vive que podrían ayudar a explicar algunas cosas. Pero, en cualquier caso, consulte a un abogado, ¿confiaría en un sitio de preguntas y respuestas de Internet con su futuro personal, profesional y financiero?

El consejo comercial general es asegurarse de obtener sus reservas por escrito y la orden directa de su empleador de continuar debido a las preocupaciones de seguridad por escrito. Si las cosas van hacia el sur y golpeas el ventilador, tendrás que recurrir a eso.

Otra forma de evitar esto sería profundizar en los requisitos: ha compartido el plan, no el problema que está resolviendo. Hay más de una forma de desollar a un gato o manejar los requisitos de búsqueda de contraseña.

Wyatt Barnett
fuente
3

No me preocuparía, no es como si decidieras maliciosamente poner la característica insegura y explotarla tú mismo más tarde, o simplemente ponerla porque eres negligente. La compañía quiere esto, alguien ha decidido que la compensación entre el tiempo de desarrollo y las expectativas del usuario es aceptable (como de costumbre) y, por lo tanto, debe seguir adelante. Si está realmente preocupado por cualquier regreso, envíe un correo electrónico a su jefe y guarde la respuesta. Una vez que haya hecho eso, como empleado, estará cubierto.

A veces hay razones por las que esto es aceptable; por ejemplo, conozco algunas soluciones de misión crítica que almacenan contraseñas de texto sin formato, pero el resto del sistema está protegido para que esto no se convierta en un problema. Este sistema está en una red separada, por ejemplo. Si no conoce el resto de la historia (una situación común en la mayoría de las empresas), puede esperar razonablemente que alguien más lo haya considerado. Del mismo modo, si tiene ese correo electrónico de su jefe, puede esperar que él sepa lo que está haciendo.

Por cierto ... ¿es este un producto que yo (como consumidor) podría usar? Si es así ... ¿qué es, así puedo evitarlo? :)

gbjbaanb
fuente
1

¿Nos damos cuenta de que los desarrolladores agregan numerosos errores que dañan a los clientes durante las operaciones en vivo a un activo igualmente excelente? No creemos que sean intencionales, pero aún así es el resultado de parte de nuestro trabajo concreto y aún no es correcto. Por lo tanto, el ejemplo que ha hecho no es un caso aislado, donde las decisiones del desarrollador (o superiores) afectan al cliente.

Esto es lo que sugiero:

  1. En primer lugar, por supuesto, es la empresa la que entrega el software a la otra empresa. A un individuo no se le otorga un crédito directo (más allá de los aplausos dentro del equipo y el sueldo como máximo) y la propiedad del trabajo. Entonces, si bien esto no es algo bueno como parte de nuestra entrega, usted no es el criminal aquí, siempre y cuando la decisión no sea suya.

  2. Como programador profesional, indicaría claramente las limitaciones del código y los peligros involucrados en cómo mantener las cosas como parte del archivo README o la documentación involucrada. Si hay un documento de requisitos, el informe de prueba sugerido, etc., debe mencionar claramente las limitaciones.

  3. Para responsabilizar al verdadero responsable de la toma de decisiones, solicitaría al superior que confirme su opinión en el correo electrónico de dichos documentos.

  4. Sopesar el riesgo correctamente. El software de mi tarjeta de datos almacena la contraseña en el texto del plan, pero eso no es importante. Pero lo mismo no es aceptable si estoy almacenando la contraseña del banco o si es el acceso a la base de datos o al servidor. Por lo tanto, según el riesgo real, debe escalar el problema lo más alto posible.

Dipan Mehta
fuente
1

A menos que realice su trabajo de una manera deliberadamente perjudicial, hay pocas desventajas legales para realizar las tareas que se le solicitan. Tendrá un contrato de trabajo que indicará sus responsabilidades, puede consultar a un abogado sobre los aspectos técnicos. Obtenga la aprobación por escrito de la decisión de diseño de las contraseñas de texto sin formato si realmente se siente expuesto.

No revelaré qué software es hasta que esté seguro de que esta característica aparece en la versión final. Todavía tengo la esperanza de que podamos informar a los clientes de una manera que me parezca aceptable.

Un poco más preocupante es su cita sobre 'informar a los clientes'. Si daña la reputación de su compañía, su reputación, etc. (una cláusula sobre la cual estará en su contrato), entonces su compañía podría demandarlo, y una defensa de 'denunciante' podría no ayudarlo cuando necesite una referencia u otro trabajo.

Si no está satisfecho con las implicaciones de los agujeros de seguridad, repase su currículum y continúe, pero si no fue su decisión y no es su empresa, no puedo ver por qué esto sería 'culpable' (legalmente) de usted .

amelvin
fuente
1
Gracias por tu respuesta. Lo expresé mal en mi comentario. No estaría contento con esta decisión en particular, pero no me enoja con la compañía ni con nadie. Hacer eso público en un sitio de preguntas y respuestas definitivamente sería una mala idea. Sería publicidad negativa Y hay muy pocas posibilidades de que ayude a alguien.
Antoine
Es bueno que haya un foro como este para que pueda desahogarse; espero que todo salga bien.
amelvin
1

Su empresa debería haber contratado un seguro de indemnización profesional cuando lo contrataron. Esto debería proporcionar una protección legal adecuada para todos sus empleados en caso de cualquier cosa salga mal con el software, o el mal uso del software o fallas que se encuentren en el software (como contraseñas sin cifrar).

Como empleado, se supone que debe hacer lo que le piden, y se supone que debe hacer lo que el cliente quiere, siempre y cuando ninguna de las partes infrinja la ley, no hay problema, pero si hace lo que la empresa quiere, entonces se encuentra que no es lo que el cliente quería / requería, entonces eso está entre ellos, y el seguro de indemnización profesional debe cubrirlo de cualquier culpa / responsabilidad personal.

IANAL, pero me ocuparía de esto con el equipo legal de las compañías, además de consultar con sus propios abogados.

PD: si está seriamente asustado por esto, guarde todos los correos electrónicos relevantes en forma electrónica e impresa en algún lugar fuera del sitio si es posible.

NWS
fuente
1

Hora de un nuevo trabajo. Olvídate de implementar esto. Es hora de moverse. Si están dispuestos a ser tan arrogantes y engañosos con esto, tampoco tendrán miedo de arrojarte debajo del autobús.

Además, no tenga miedo una vez que se haya comunicado anónimamente con uno de los muchos grupos que señalan agujeros de seguridad en el software de la gente. Este es un desastre esperando a suceder. No hay absolutamente ninguna razón sólida para almacenarlos. ¿Tu jefe te dio una razón? ¿Quieren iniciar sesión como usuarios? ¿Quieren facilitar la recuperación de contraseñas? A menos que obtenga una respuesta a una de estas anteriores que pueda abordar de manera más segura, entonces es hora de seguir adelante. Cuando te vayas, sería mejor no decirles por qué.

Bill Leeper
fuente
Te das cuenta de que incluso Google almacena las contraseñas en texto sin formato, ¿verdad? Si usted es el administrador de un sitio, puede ver las contraseñas de las cuentas.
apscience
1
Um, no lo creo. No guardas las contraseñas. Haces un hash unidireccional que no se puede revertir y lo almacenas. Esa es la forma estándar de hacerlo. Incluso los hacks recientes donde las cuentas se vieron comprometidas lo hicieron de esa manera. El problema principal es que si alguien obtiene los hash y sabe cómo se generaron, lo golpean con un diccionario. Pero NO NO NO, nunca, nunca, nunca, nunca almacene las contraseñas incluso encriptadas. Solo estoy pidiendo problemas con eso. Quiere saber más. Vaya aquí: owasp.org/index.php/Main_Page
Bill Leeper
Estoy bastante seguro de que Google lo hace. Si usted es administrador de aplicaciones, puede buscar todas las contraseñas de sus usuarios. Consulte google.com/support/forum/p/Google%20Apps/… , respuesta n. ° 4.
apscience
1
RTFA. Lo sentimos, dice que USTED puede iniciar sesión como usuario. Este es un método donde un usuario con ciertos privilegios puede hacerse pasar por otro usuario. En ningún momento google le da la contraseña de la otra persona. Está iniciando sesión con sus propias credenciales y luego suplantando al otro usuario. Esto es bastante común y es una solución para mi comentario original donde el jefe puede querer iniciar sesión como un usuario en particular.
Bill Leeper el
0

lo que puede hacer para seguir las instrucciones para almacenar contraseñas en un formato recuperable y, al mismo tiempo, es imposible recuperarlas si tiene acceso completo al programa utilizando cifrado asimétrico

cifras la clave (salada como siempre) con la clave pública almacenada en el binario

y cuando las contraseñas se necesitan en texto plano, un humano necesita proporcionar la clave privada que de otro modo se mantendría segura lejos del servidor

monstruo de trinquete
fuente
Dependiendo de la razón de la demanda, esto podría no estar cerca de satisfacer a los superiores del OP.
un CVn
0

Personalmente, nunca he oído hablar de un ingeniero de software, sin una cláusula en el contrato u otro acuerdo formal, siendo legalmente responsable de los problemas de seguridad en los productos en los que trabajan. Por lo que he leído sobre las leyes y la ética en la ingeniería de software, los requisitos de seguridad para un sistema están dictados por la especificación de requisitos, que también se refiere a los requisitos legales, industriales o corporativos. Cuando se construye un sistema, el incumplimiento de los requisitos de seguridad se trata como un incumplimiento de los términos del contrato, ya que el sistema no se construyó según lo especificado. Cómo se desarrollan los eventos específicos depende de los contratos entre el ingeniero y el empleador y el empleador y el cliente.

Las leyes tampoco le dicen lo que debe hacer, sino lo que puede / no puede hacer. No menciona en qué industria se encuentra, pero algunos tienen leyes, regulaciones y reglas sobre cómo manejar tipos específicos de datos: qué debe cifrarse, niveles mínimos de cifrado, requisitos para administrar / controlar el acceso, Etcétera. Si su área (país, estado) no tiene reglas sobre seguridad, su industria no tiene reglas sobre seguridad y los requisitos de software no mencionan los requisitos o estándares de seguridad, podría ser más un problema ético que un Problema legal.

Cuando se trata de cuestiones éticas en el desarrollo de software, me suscribo al Código de Ética y Práctica Profesional de Ingeniería de Software . En última instancia, es tu decisión. Sin embargo, creo que almacenar contraseñas en texto sin formato o en un formato que se pueda descifrar no es ético.

Thomas Owens
fuente
-3

Simplemente cumpla con el proceso de desarrollo de su proyecto: si esta característica está escrita en el documento de requisitos, deberá implementarla.

Mouviciel
fuente
Solo siguiendo las órdenes señor. No lo creo. Los programadores son contratados para pensar, hacer preguntas, ser creativos. Es un software malo como este que le da a la industria un mal nombre y pone en peligro nuestra información personal.
Bill Leeper el
Mi respuesta sugiere exactamente lo contrario: si su jefe está en contradicción con los requisitos, entonces puede evitarlo de manera segura. Dudo que en el caso expuesto, el jefe acepte que su orden se escriba en requisitos.
Mouviciel