Dois-je accepter d'écrire un code non sécurisé si mon employeur me le demande? [fermé]

24

Mon employeur m'a demandé de mettre en œuvre une fonctionnalité qui nécessiterait de stocker des mots de passe en texte clair dans une base de données (ou d'utiliser une fonction de cryptage / décryptage obscure stockée dans un binaire, ce qui est un peu mieux, mais aussi non sécurisé).

J'ai répondu que j'étais prêt à implémenter une telle fonctionnalité, à condition que les clients soient reconnus des implications de sécurité lors de son utilisation.

Lors de la discussion de ce problème avec des collègues, quelqu'un m'a dit qu'en tant qu'ingénieur logiciel, nous sommes personnellement responsables (au sens juridique) des problèmes de sécurité que nous introduisons dans nos produits. J'ai examiné mon contrat, mais je n'ai rien trouvé concernant un cas similaire.

D'un point de vue juridique, dois-je refuser de mettre en œuvre une telle fonctionnalité? Est-il vrai que mon employeur pourrait me poursuivre en justice si un client subit des dommages en raison de cette fonctionnalité, même s'il était également conscient de problèmes de sécurité?


EDIT: Je comprends que cette question ne peut être répondue de manière fiable que par un avocat. Il en va de même pour les questions de licence: les gens ici donnent leur compréhension et leur expérience, parfois après avoir consulté un avocat, sans aucune garantie que cela s'applique dans une autre juridiction. Mais la licence est explicitement acceptée comme sujet ici, voir Quel genre de questions puis-je poser ici? . Je crois que d'autres programmeurs peuvent avoir le même problème, et d'autres peuvent avoir été confrontés à cette situation auparavant, et peuvent avoir consulté un avocat pour cela.

Antoine
la source
2
Vous devriez contacter un avocat - ce n'est pas le bon endroit pour obtenir une réponse.
Odé
11
IANAL, mais il semble peu probable qu'un employeur soit en mesure de poursuivre avec succès un employé pour avoir fait exactement ce qu'il lui avait dit de faire.
3
@Oded: le client pourrait poursuivre l'entreprise, oui, et l'entreprise pourrait toujours injustement blâmer et licencier l'employé (dans une juridiction "à volonté"), mais je n'ai jamais entendu parler de clients pouvant poursuivre des programmeurs individuels. L' entreprise est l'entité juridique qui a conclu le contrat de vente, pas l'employé, c'est donc l'entreprise qui est responsable des problèmes de qualité du produit.
8
Qu'est-ce qui pourrait réduire davantage la confiance de vos clients dans vos solutions que de stocker un mot de passe en texte brut?! Absurdité. Si votre patron va vous demander de creuser sa propre tombe, alors faites-le, mais assurez-vous de l'obtenir par écrit par e-mail que vous l'avez informé de votre désaccord et l'avertissez des conséquences potentielles, et aussi qu'il vous ordonne de fais-le quand même. Gardez toujours cette correspondance avec vous.
maple_shaft
3
Je vote pour clore cette question comme hors sujet car une question juridique ne peut être correctement répondue que par un avocat.

Réponses:

11

Votre collègue est erroné, d'autant plus que vous n'avez rien trouvé sur la responsabilité de la sécurité dans votre contrat. Même si c'était le cas, vous venez de recevoir un ordre contradictoire de la direction.

Je pense que la seule fois où vous vous soumettez à un litige potentiel est si vous endommagez sciemment le produit vous-même, créez votre propre bombe à retardement, œuf de Pâques, etc.

Dans la plupart des cas, l'entreprise est propriétaire du logiciel, ce qui lui permet de profiter des bénéfices, mais cela signifie également qu'elle doit assumer les risques, pas le développeur individuel.

Personnellement, je m'assurerais que la direction était au courant des problèmes avec cette fonctionnalité de sécurité, afin qu'elle soit documentée à l'avance, et je continue simplement à faire mon travail.

Cela étant dit, consultez un avocat, yada-yada-yada.

LarsTech
la source
34

Quoi qu'il arrive: N'écrivez jamais un tel code sans avoir reçu un e-mail ou d'autres preuves montrant clairement que vous venez de suivre les instructions de votre employeur.

Landei
la source
6
Et imprimez-le / envoyez-le également à un compte extérieur.
Bill Leeper
7
Connu sous le nom de CYA (Cover Your A ..). Une fois, j'ai envoyé une copie de l'instruction répréhensible par e-mail à mon compte de messagerie personnel et je l'ai envoyée à la division juridique de l'entreprise (nous avions une équipe d'éthique, donc c'était confidentiel). Cela dépend de la quantité de chaleur que vous êtes prêt à absorber et de la quantité de "protection" dont vous avez besoin. Les autres méritent réflexion: le marketing, le conseil d'administration (responsable ultime), le propriétaire / les actionnaires. Demandez "Qui a le plus à perdre"? Ce sera une limitation de carrière, car vous avez soit perdu beaucoup de temps avec des gens importants, soit fait mal paraître votre patron.
mattnz
+1 - couvrez votre dos. Documentez vos objections et votre raisonnement pour expliquer pourquoi vous pensez que c'est mauvais. Documentez la réponse de vos managers. Imprimez-le et limez-le soigneusement au cas où la chaleur vous reviendrait.
Qwerky
CYA mais ne soyez pas agressif passif à ce sujet. Assurez-vous d'exprimer vos objections à votre employeur et enregistrez cet e-mail également.
Doug T.
Clair et simple - j'aime cette réponse. Cela aiderait certainement à la responsabilité légale, cependant, vous devrez toujours prendre la décision éthique vous-même.
stringo0
6

D'un point de vue juridique, consultez un avocat. Je n'en suis pas un, et nous n'avons aucune idée de la juridiction ou des lois sous lesquelles vous vivez qui pourraient aider à expliquer certaines choses. Mais dans tous les cas, consultez un avocat, feriez-vous confiance à un site Internet de questions / réponses avec votre avenir personnel, professionnel et financier.

Le conseil commercial général est de vous assurer que vous notez vos réservations par écrit et l'ordre direct de votre employeur de continuer, étant donné les problèmes de sécurité par écrit. Si les choses vont au sud et frappent l'éventail, vous aurez à vous rabattre.

Une autre solution consiste à approfondir les exigences: vous avez partagé le plan et non le problème que vous résolvez. Il existe plusieurs méthodes pour habiller un chat ou gérer les exigences de recherche de mot de passe.

Wyatt Barnett
la source
3

Je ne m'inquiéterais pas à ce sujet - ce n'est pas comme si vous décidiez par malveillance de mettre la fonctionnalité non sécurisée et de l'exploiter vous-même plus tard, ou simplement de la mettre parce que vous êtes négligent. L'entreprise le veut, quelqu'un a décidé que le compromis entre le temps de développement et les attentes des utilisateurs est acceptable (comme d'habitude) et vous devriez donc y aller. Si vous êtes vraiment inquiet de tout retour, envoyez un e-mail à votre patron et conservez la réponse. Une fois que vous avez fait cela, en tant qu'employé, vous êtes couvert.

Parfois, il y a des raisons pour lesquelles cela est acceptable - par exemple, je connais des solutions très critiques qui stockent des mots de passe en texte brut, mais le reste du système est sécurisé afin que cela ne devienne pas un problème. Ce système est par exemple sur un réseau séparé. Si vous ne connaissez pas le reste de l'histoire (une situation courante dans la plupart des entreprises), vous pouvez raisonnablement vous attendre à ce que quelqu'un d'autre y réfléchisse. De même, si vous avez cet e-mail de votre patron, vous pouvez vous attendre à ce qu'il sache ce qu'il fait.

Soit dit en passant ... est-ce un produit que je (en tant que consommateur) pourrais utiliser? Si oui .. qu'est-ce que c'est, donc je peux l'éviter? :)

gbjbaanb
la source
1

Nous rendons-nous compte que de nombreux bogues sont ajoutés par les développeurs, ce qui nuit aux clients pendant les opérations en direct, ce qui est tout aussi important. Nous ne pensons pas qu'ils sont intentionnels, mais c'est toujours le résultat de certains de nos travaux concrets et toujours pas à la hauteur. Ainsi, l'exemple que vous avez fait n'est pas un cas isolé, où les décisions du développeur (ou des niveaux supérieurs) affectent le client.

Voici ce que je propose:

  1. Tout d'abord, par tous les moyens - c'est l'entreprise qui livre le logiciel à l'autre entreprise. Un individu ne reçoit pas de crédit direct (au-delà des applaudissements au sein de l'équipe et du salaire maximum) et de la propriété du travail. Donc, bien que ce ne soit pas une bonne chose dans le cadre de notre livraison, mais vous n'êtes pas le criminel ici - tant que la décision ne vous appartient pas.

  2. En tant que programmeur professionnel - vous indiqueriez clairement les limites du code et les dangers impliqués dans la façon de maintenir les choses dans le cadre du fichier README ou de la documentation impliquée. S'il existe un document d'exigences - le rapport d'essai suggéré, etc. doit mentionner clairement les limites.

  3. Afin de tenir le véritable décideur pour responsable, je demanderais au plus haut niveau de confirmer sa pensée dans l'e-mail de ces documents.

  4. Pesez le risque correctement. Mon logiciel de carte de données stocke le mot de passe dans le texte du plan, mais ce n'est pas important. Mais la même chose n'est pas acceptable si je stocke un mot de passe bancaire ou s'il s'agit d'un accès à une base de données ou à un serveur. Donc, en fonction du risque réel, vous devez faire remonter le problème le plus haut possible.

Dipan Mehta
la source
1

À moins que vous n'effectuiez votre travail de manière délibérément dommageable, il y a peu d'inconvénients légaux à faire les tâches qui vous sont demandées. Vous aurez un contrat de travail qui indiquera vos responsabilités, vous pouvez consulter un avocat sur les détails techniques. Obtenez une approbation écrite de la décision de conception sur les mots de passe en texte brut si vous vous sentez vraiment exposé.

Je ne révélerai pas de quel logiciel il s'agit tant que je ne suis pas sûr que cette fonctionnalité sera disponible dans la version finale. J'espère toujours que nous parviendrons à informer les clients d'une manière que je trouve acceptable.

Un peu plus inquiétant est votre citation sur «l'information des clients». Si vous portez atteinte à la réputation, à la réputation de votre entreprise, etc. (une clause qui figurera dans votre contrat), votre entreprise pourrait vous poursuivre - et une défense de `` dénonciateur '' pourrait ne pas vous aider lorsque vous avez besoin d'une référence ou d'un autre emploi.

Si vous n'êtes pas satisfait des implications des failles de sécurité, rafraîchissez votre curriculum vitae et passez à autre chose, mais si ce n'était pas votre décision et que ce n'est pas votre entreprise, je ne vois pas pourquoi cela vous serait `` blâmé '' (légalement) .

amelvin
la source
1
Merci pour votre réponse. J'ai mal exprimé dans mon commentaire. Je ne serais pas satisfait de cette décision particulière, mais cela ne me met pas en colère contre l'entreprise ou qui que ce soit. Rendre cela public sur un site de questions / réponses serait certainement une mauvaise idée. Ce serait de la publicité négative ET il y a très peu de chances que cela aide quelqu'un.
Antoine
C'est bien qu'il y ait un forum comme celui-ci pour vous évacuer - j'espère que tout se passe bien.
amelvin
1

Votre entreprise aurait dû souscrire une forme d'assurance responsabilité professionnelle lorsqu'elle vous a engagé. Cela devrait assurer une protection juridique adéquate pour tous ses employés en cas de quoi que ce soit qui ne va pas avec le logiciel, ou une mauvaise utilisation des logiciels ou des défauts se trouvent dans le logiciel (comme les mots de passe non chiffrés).

En tant qu'employé, vous êtes censé faire ce qu'il demande, et il est censé faire ce que veut le client, tant qu'aucune des parties n'enfreint la loi, il n'y a pas de problème, mais si vous faites ce que l'entreprise veut, et n'est pas ce que le client voulait / exigeait, alors c'est entre eux, et l'assurance responsabilité professionnelle devrait vous couvrir de tout blâme / responsabilité personnelle.

IANAL, mais je voudrais en discuter avec l'équipe juridique de l'entreprise, en plus de vérifier avec vos propres avocats.

PS, si vous êtes sérieusement effrayé par cela, enregistrez tous les e-mails pertinents dans une copie électronique et papier quelque part hors site si possible.

NWS
la source
1

Il est temps pour un nouvel emploi. Oubliez la mise en œuvre de cela. Il est temps de bouger. S'ils sont prêts à être si cavaliers et trompeurs avec cela, ils n'auront pas peur de vous jeter sous le bus non plus.

De plus, n'ayez pas peur une fois que vous êtes allé contacter anonymement l'un des nombreux groupes qui signalent des failles de sécurité dans les logiciels des peuples. C'est un désastre qui attend de se produire. Il n'y a absolument aucune raison valable de les stocker. Votre patron vous a-t-il donné une raison? Souhaitent-ils se connecter en tant qu'utilisateurs? Souhaitent-ils faciliter la récupération des mots de passe? À moins que vous n'obteniez une réponse à l'une de ces questions ci-dessus que vous pouvez aborder de manière plus sécurisée, il est temps de passer à autre chose. Lorsque vous partirez, il serait préférable de ne pas leur dire pourquoi.

Bill Leeper
la source
Vous vous rendez compte que même Google stocke les mots de passe en clair, non? Si vous êtes l'administrateur d'un site, vous pouvez voir les mots de passe des comptes.
apscience
1
Je ne pense pas. Vous ne stockez pas les mots de passe. Vous faites un hachage à sens unique qui ne peut pas être inversé et stockez-le. C'est la façon standard de procéder. Même les hacks récents où des comptes ont été compromis l'ont fait de cette façon. Le problème principal est que si quelqu'un obtient les hachages et sait comment ils ont été générés, il le frappe avec un dictionnaire. Mais NON NON NON, vous ne stockez jamais, jamais, jamais, jamais les mots de passe eux-mêmes, même cryptés. Je demande juste des ennuis avec celui-là. Veut en savoir plus. Allez ici: owasp.org/index.php/Main_Page
Bill Leeper
Je suis sûr que Google le fait. Si vous êtes administrateur d'applications, vous pouvez rechercher tous les mots de passe de vos utilisateurs. Voir google.com/support/forum/p/Google%20Apps/… , réponse n ° 4.
apscience
1
RTFA. Désolé, il indique que VOUS pouvez vous connecter en tant qu'utilisateur. Il s'agit d'une méthode où un utilisateur avec certains privilèges peut se faire passer pour un autre utilisateur. Google ne vous donne à aucun moment le mot de passe de l'autre personne. Vous vous connectez avec vos propres informations d'identification, puis vous vous faites passer pour l'autre utilisateur. C'est assez commun et c'est une solution à mon commentaire d'origine où le patron peut vouloir se connecter en tant qu'utilisateur particulier.
Bill Leeper
0

ce que vous pouvez faire pour suivre les instructions pour stocker les mots de passe dans un format récupérable tout en étant impossible à récupérer si vous avez un accès complet au programme utilise un cryptage asymétrique

vous cryptez la clé (salée comme toujours) avec la clé publique stockée dans le binaire

et lorsque les mots de passe sont nécessaires en texte brut, un humain a besoin de fournir la clé privée qui est autrement gardée en sécurité loin du serveur

monstre à cliquet
la source
Selon la raison de la demande, cela pourrait ne pas être à la hauteur de la satisfaction des supérieurs de l'OP.
un CVn
0

Personnellement, je n'ai jamais entendu parler d'un ingénieur logiciel, sans clause du contrat ou autre accord formel, tenu légalement responsable des problèmes de sécurité des produits sur lesquels il travaille. D'après ce que j'ai lu sur les lois et l'éthique en génie logiciel, les exigences de sécurité pour un système sont dictées par la spécification des exigences, qui fait également référence à toutes les exigences légales, industrielles ou d'entreprise. Lors de la construction d'un système, le non-respect des exigences de sécurité est traité comme un échec à remplir les termes du contrat car le système n'a pas été construit comme spécifié. Le déroulement des événements spécifiques dépend des contrats entre l'ingénieur et l'employeur et l'employeur et le client.

Les lois ne vous disent pas non plus ce que vous devez faire, mais ce que vous pouvez / ne pouvez pas faire. Vous ne mentionnez pas le secteur dans lequel vous vous trouvez, mais certains ont des lois, des réglementations et des règles sur la façon de traiter des types de données spécifiques - ce qui doit être crypté, les niveaux minimaux de cryptage, les exigences de gestion / contrôle d'accès, et ainsi de suite. Si votre région (pays, état) n'a pas de règles de sécurité, que votre industrie n'a pas de règles de sécurité et que les exigences logicielles n'exigent pas d'exigences ou de normes de sécurité, cela pourrait être plus un problème éthique qu'un problème légal.

En ce qui concerne les questions éthiques dans le développement de logiciels, je souscris au Code d'éthique et de pratique professionnelle du génie logiciel . En fin de compte, c'est votre appel. Cependant, je pense que le stockage des mots de passe en clair ou dans un format qui peut être décrypté est contraire à l'éthique.

Thomas Owens
la source
-3

Il suffit de se conformer au processus de développement de votre projet: si cette fonctionnalité est écrite dans le document d'exigence, vous devez l'implémenter.

mouviciel
la source
Je ne fais que suivre les ordres, monsieur. Je ne pense pas. Les programmeurs sont engagés pour réfléchir, poser des questions, être créatifs. C'est un logiciel merdique comme celui-ci qui donne une mauvaise réputation à l'industrie et met en péril nos informations personnelles.
Bill Leeper
Ma réponse suggère exactement le contraire: si votre patron est en contradiction avec les exigences, vous pouvez le contourner en toute sécurité. Je doute que dans le cas exposé, le patron accepterait que sa commande soit écrite en exigences.
mouviciel