Sollte ich akzeptieren, unsicheren Code zu schreiben, wenn mein Arbeitgeber mich dazu auffordert? [geschlossen]

24

Mein Arbeitgeber hat mich gebeten, eine Funktion zu implementieren, die das Speichern von Passwörtern im Klartext in einer Datenbank erfordert (oder die Verwendung einer obskuren Verschlüsselungs- / Entschlüsselungsfunktion, die in einer Binärdatei gespeichert ist, was ein bisschen besser, aber auch unsicher ist).

Ich habe geantwortet, dass ich bereit bin, eine solche Funktion zu implementieren, vorausgesetzt, dass die Kunden bei der Verwendung von Sicherheitsaspekten darauf hingewiesen werden.

Als ich dieses Problem mit Kollegen diskutierte, sagte mir jemand, dass wir als Softwareentwickler persönlich (im rechtlichen Sinne) für Sicherheitsprobleme verantwortlich sind, die wir in unsere Produkte einführen. Ich habe meinen Vertrag geprüft, aber nichts in Bezug auf einen ähnlichen Fall gefunden.

Sollte ich mich aus rechtlicher Sicht weigern, eine solche Funktion zu implementieren? Stimmt es, dass mein Arbeitgeber mich vor Gericht bringen könnte, wenn ein Kunde aufgrund dieser Funktion einen Schaden erleidet, auch wenn er sich der Sicherheitsbedenken bewusst war?


EDIT: Ich verstehe, dass diese Frage nur von einem Anwalt zuverlässig beantwortet werden kann. Gleiches gilt für Lizenzfragen: Die Menschen hier geben ihr Verständnis und ihre Erfahrung, manchmal nach Anhörung eines Anwalts, ohne Gewähr, dass dies in einer anderen Gerichtsbarkeit gilt. Lizenzierung wird hier jedoch ausdrücklich als Thema akzeptiert. Siehe Welche Fragen kann ich hier stellen? . Ich glaube, andere Programmierer haben möglicherweise dasselbe Problem, und andere waren möglicherweise schon einmal mit dieser Situation konfrontiert und haben möglicherweise einen Anwalt konsultiert.

Antoine
quelle
2
Sie sollten sich an einen Anwalt wenden - dies ist nicht der richtige Ort, um eine Antwort zu erhalten.
Oded
11
IANAL, aber es scheint unwahrscheinlich, dass ein Arbeitgeber einen Arbeitnehmer erfolgreich verklagen kann, genau das zu tun, was er ihm gesagt hat.
3
@Oded: Der Kunde könnte die Firma verklagen, ja, und die Firma könnte dem Angestellten immer noch zu Unrecht die Schuld geben und ihn entlassen (in einer "willkürlichen" Gerichtsbarkeit), aber ich habe noch nie davon gehört, dass Kunden einzelne Programmierer verklagen können. Das Unternehmen ist die juristische Person, die den Kaufvertrag abgeschlossen hat, nicht der Mitarbeiter. Daher ist das Unternehmen für Qualitätsprobleme im Produkt verantwortlich.
8
Was könnte das Vertrauen Ihrer Kunden in Ihre Lösungen schmälern, als ein Passwort im Klartext zu speichern ?! Absurdität. Wenn Ihr Chef Sie bittet, sein eigenes Grab zu graben, tun Sie es einfach, aber stellen Sie sicher, dass Sie es schriftlich per E-Mail erhalten, dass Sie ihn über Ihre Meinungsverschiedenheit informiert und ihn vor den möglichen Folgen gewarnt haben, und dass er Ihnen befiehlt, dies zu tun Mach es trotzdem. Behalten Sie diese Korrespondenz immer bei sich.
maple_shaft
3
Ich stimme dafür, diese Frage als "Off-Topic" zu schließen, da es sich um eine rechtliche Frage handelt, die nur von einem Anwalt richtig beantwortet werden kann.

Antworten:

11

Ihr Kollege ist irregeführt, zumal Sie in Ihrem Vertrag nichts über die Sicherheitsverantwortung gefunden haben. Selbst wenn doch, Sie haben gerade einen widersprüchlichen Auftrag vom Management erhalten.

Ich denke, Sie können sich nur dann einem möglichen Rechtsstreit unterziehen, wenn Sie das Produkt wissentlich selbst beschädigen, Ihre eigene Zeitbombe, Osterei usw. herstellen.

In den meisten Fällen besitzt das Unternehmen die Software, sodass es die Gewinne genießen kann, aber auch die Risiken und nicht den einzelnen Entwickler.

Persönlich würde ich sicherstellen, dass das Management über die Probleme mit diesem Sicherheitsmerkmal informiert ist, sodass es zuvor dokumentiert wurde, und einfach meine Arbeit fortsetzen.

Wenden Sie sich an einen Anwalt, yada-yada-yada.

LarsTech
quelle
34

Was auch immer passiert: Schreiben Sie niemals einen solchen Code, ohne dass eine E-Mail oder ein anderer Nachweis vorliegt, aus dem hervorgeht, dass Sie die Anweisungen Ihres Arbeitgebers befolgt haben.

Landei
quelle
6
Und drucken Sie es aus / senden Sie es auch an ein externes Konto.
Bill Leeper
7
Bekannt als CYA (Cover Your A ..). Ich habe einmal eine Kopie der anstößigen Anweisung per E-Mail an mein persönliches E-Mail-Konto gesendet und sie an die Rechtsabteilung des Unternehmens gesendet (Wir hatten ein Ethik-Team, sodass dies vertraulich war). Es hängt davon ab, wie viel Wärme Sie aufnehmen und wie viel "Schutz" Sie benötigen. Andere erwägenswerte Themen sind Marketing, Vorstand (letztendlich verantwortlich), Eigentümer / Anteilseigner. Fragen Sie "Wer hat am meisten zu verlieren"? Es wird eine Karrierebegrenzung sein, da Sie entweder viel Zeit für wichtige Leute verschwendet haben oder Ihren Chef schlecht aussehen lassen.
Mattnz
+1 - bedecke deinen Rücken. Dokumentieren Sie Ihre Einwände und Überlegungen, warum Sie dies für schlecht halten. Dokumentieren Sie die Reaktion Ihres Managers. Drucken Sie dieses aus und archivieren Sie es sorgfältig, falls die Hitze zu Ihnen zurückkommt.
Qwerky
CYA, aber sei nicht passiv aggressiv. Stellen Sie sicher, dass Sie Ihre Einwände ZURÜCK an Ihren Arbeitgeber richten und diese E-Mail auch speichern.
Doug T.
Schlicht und einfach - diese Antwort gefällt mir. Dies würde auf jeden Fall bei der rechtlichen Verantwortung helfen, Sie müssen jedoch die ethische Entscheidung noch selbst treffen.
stringo0
6

Konsultieren Sie aus juristischer Sicht einen Anwalt. Ich bin keiner und wir haben auch keine Ahnung, unter welcher Gerichtsbarkeit oder nach welchen Gesetzen Sie leben, um einige Dinge zu erklären. Wenden Sie sich jedoch in jedem Fall an einen Anwalt. Würden Sie einer Internet-Q & A-Site Ihre persönliche, berufliche und finanzielle Zukunft anvertrauen?

Der allgemeine Geschäftsratschlag lautet, dass Sie Ihre Reservierungen schriftlich niederlegen und den direkten Auftrag Ihres Arbeitgebers erteilen, die Sicherheitsbedenken schriftlich geltend zu machen. Wenn die Dinge nach Süden gehen und den Ventilator treffen, können Sie darauf zurückgreifen.

Ein anderer Weg, dies zu umgehen, besteht darin, sich eingehender mit den Anforderungen zu befassen - Sie haben den Plan geteilt und nicht das Problem, das Sie lösen. Es gibt mehr als eine Möglichkeit, eine Katze zu häuten oder die Anforderungen für die Kennwortsuche zu erfüllen.

Wyatt Barnett
quelle
3

Ich würde mir keine Sorgen machen - es ist nicht so, als ob Sie sich böswillig dazu entschließen, die unsichere Funktion einzufügen und sie später selbst auszunutzen, oder einfach, weil Sie fahrlässig sind. Das Unternehmen möchte dies, jemand hat entschieden, dass der Kompromiss zwischen Entwicklungszeit und Benutzererwartungen akzeptabel ist (wie üblich) und Sie sollten damit weitermachen. Wenn Sie sich wirklich Sorgen über ein Comeback machen, senden Sie Ihrem Chef eine E-Mail und bewahren Sie die Antwort auf. Sobald Sie dies getan haben, sind Sie als Mitarbeiter abgesichert.

Manchmal gibt es Gründe, warum dies akzeptabel ist - ich kenne zum Beispiel einige sehr geschäftskritische Lösungen, die Klartext-Passwörter speichern, aber der Rest des Systems ist gesichert, damit dies kein Problem wird. Dieses System befindet sich beispielsweise in einem separaten Netzwerk. Wenn Sie den Rest der Geschichte nicht kennen (eine häufige Situation in den meisten Unternehmen), können Sie davon ausgehen, dass jemand anderes darüber nachgedacht hat. Wenn Sie diese E-Mail von Ihrem Chef haben, können Sie auch erwarten, dass er weiß, was er tut.

Übrigens ... ist dies ein Produkt, das ich (als Verbraucher) verwenden könnte? Wenn ja .. was ist es, damit ich es vermeiden kann? :)

gbjbaanb
quelle
1

Stellen wir fest, dass zahlreiche Fehler von Entwicklern hinzugefügt werden, die den Kunden während des Live-Betriebs ebenso großen Schaden zufügen? Wir glauben nicht, dass sie beabsichtigt sind, aber es ist immer noch ein Ergebnis einiger unserer konkreten Arbeiten und immer noch nicht auf den Punkt gebracht. Das Beispiel, das Sie gemacht haben, ist also kein Einzelfall, in dem Entscheidungen von Entwicklern (oder höheren Unternehmen) den Kunden betreffen.

Folgendes schlage ich vor:

  1. Zunächst einmal ist es auf jeden Fall das Unternehmen, das die Software an das andere Unternehmen liefert. Eine Einzelperson erhält keine direkte Gutschrift (über den Applaus im Team und höchstens den Gehaltsscheck hinaus) und kein Eigentumsrecht an der Arbeit. Das ist zwar kein guter Teil unserer Lieferung, aber Sie sind hier nicht der Verbrecher - solange die Entscheidung nicht bei Ihnen liegt.

  2. Als professioneller Programmierer würden Sie deutlich auf die Einschränkungen des Codes und die Gefahren hinweisen, die bei der Pflege der betreffenden Dinge als Teil der README-Datei oder Dokumentation auftreten. Wenn es ein Anforderungsdokument gibt - im vorgeschlagenen Prüfbericht usw. sollten die Einschränkungen klar angegeben werden.

  3. Um den wahren Entscheider zur Verantwortung zu ziehen, fordere ich den Höheren auf, sein Denken in der E-Mail eines solchen Dokuments zu bestätigen.

  4. Wägen Sie das Risiko richtig ab. Meine Datenkartensoftware speichert das Passwort im Plan, aber das ist nicht wichtig. Aber das selbe ist nicht annehmbar, wenn ich Bankkennwort speichere oder wenn es Zugang zur Datenbank oder zum Bediener ist. Ausgehend vom realen Risiko müssen Sie das Problem so weit wie möglich erhöhen.

Dipan Mehta
quelle
1

Wenn Sie Ihre Arbeit nicht vorsätzlich schädlich verrichten, ist es rechtlich unbedenklich, die von Ihnen gestellten Aufgaben zu erledigen. Sie haben einen Arbeitsvertrag, in dem Ihre Verbindlichkeiten aufgeführt sind. Sie können einen Anwalt zu den technischen Fragen konsultieren. Lassen Sie sich die Entwurfsentscheidung für Klartext-Passwörter schriftlich genehmigen, wenn Sie sich wirklich exponiert fühlen.

Ich werde nicht verraten, um welche Software es sich handelt, bis ich sicher bin, dass diese Funktion es in der endgültigen Version schafft. Ich hoffe immer noch, dass es uns gelingt, die Kunden auf eine Weise zu informieren, die ich für akzeptabel halte.

Ein wenig besorgniserregender ist Ihr Zitat zum Thema "Kunden informieren". Wenn Sie das Ansehen, den Ruf usw. Ihres Unternehmens schädigen (eine Klausel, die in Ihrem Vertrag enthalten ist), könnte Ihr Unternehmen Sie verklagen - und eine "Whistleblower" -Verteidigung kann Ihnen möglicherweise nicht weiterhelfen, wenn Sie eine Referenz oder einen anderen Job benötigen.

Wenn Sie mit den Auswirkungen der Sicherheitslücken nicht einverstanden sind, sollten Sie Ihren Lebenslauf auffrischen und weitermachen. Wenn dies jedoch nicht Ihre Entscheidung und nicht Ihre Firma war, kann ich nicht erkennen, warum Sie (rechtlich) dafür verantwortlich gemacht werden .

amelvin
quelle
1
Danke für deine Antwort. Ich habe mich in meinem Kommentar schlecht ausgedrückt. Ich würde mit dieser Entscheidung nicht glücklich sein, aber es ärgert mich nicht über die Firma oder irgendjemanden. Es wäre definitiv eine schlechte Idee, dies auf einer Q & A-Site zu veröffentlichen. Es wäre negative Werbung UND es gibt nur sehr wenige Chancen, dass sie irgendjemandem helfen würde.
Antoine
Es ist gut, dass es ein Forum wie dieses gibt, in dem Sie sich austoben können - ich hoffe, dass alles gut wird.
Amelvin
1

Ihr Unternehmen hätte eine Berufshaftpflichtversicherung abschließen müssen, als es Sie anstellte. Dies sollte für alle Mitarbeiter im Fall eines angemessenen Rechtsschutz bietet alles , was mit der Software falsch läuft oder Missbrauch von Software oder Fehlern in der Software (wie unverschlüsselte Passwörter) gefunden werden.

Als Mitarbeiter sollen Sie tun, was sie verlangen, und sie sollen tun, was der Kunde will, solange keine Partei gegen das Gesetz verstößt, gibt es kein Problem, aber wenn Sie tun, was das Unternehmen will, dann auch Wenn festgestellt wird, dass es nicht das ist, was der Kunde wünscht / verlangt, dann liegt das zwischen ihnen, und die Berufshaftpflichtversicherung sollte Sie von jeglicher persönlicher Schuld / Haftung schützen.

IANAL, aber ich würde das mit dem Anwaltsteam des Unternehmens besprechen und mich bei Ihren Anwälten erkundigen.

PS: Wenn Sie dies ernsthaft fürchten, speichern Sie alle relevanten E-Mails in elektronischer und gedruckter Form, wenn möglich, an einem externen Ort.

NWS
quelle
1

Zeit für einen neuen Job. Vergiss die Implementierung. Es ist Zeit sich zu bewegen. Wenn sie bereit sind, damit so unbekümmert und betrügerisch umzugehen, haben sie auch keine Angst davor, Sie unter den Bus zu werfen.

Haben Sie auch keine Angst, wenn Sie sich anonym an eine der vielen Gruppen wenden, die auf Sicherheitslücken in der Software von Personen hinweisen. Dies ist eine Katastrophe, die darauf wartet, passiert zu werden. Es gibt absolut keinen stichhaltigen Grund, diese zu speichern. Hat dein Chef dir einen Grund gegeben? Möchten sie sich als Benutzer anmelden? Möchten sie das Abrufen von Passwörtern vereinfachen? Wenn Sie keine Antwort auf eine dieser Fragen erhalten, die Sie sicherer beantworten können, ist es an der Zeit, fortzufahren. Wenn Sie gehen, ist es am besten, ihnen nicht zu sagen, warum.

Bill Leeper
quelle
Sie wissen, dass auch Google Passwörter im Klartext speichert, oder? Wenn Sie der Administrator einer Website sind, können Sie die Kennwörter der Konten anzeigen.
apscience
1
Ich glaube nicht. Sie speichern die Passwörter nicht. Sie machen einen One-Way-Hash, der nicht rückgängig gemacht werden kann, und speichern diesen. Das ist die Standardmethode. Sogar die letzten Hacks, bei denen Konten kompromittiert wurden, haben das so gemacht. Das Hauptproblem besteht darin, dass jemand, der die Hashes erhält und weiß, wie sie generiert wurden, sie mit einem Wörterbuch schlägt. Aber NEIN NEIN NEIN, Sie speichern die Passwörter niemals, niemals, niemals, niemals selbst verschlüsselt. Ich bitte nur um Ärger damit. Möchten Sie mehr wissen? Gehen Sie hier: owasp.org/index.php/Main_Page
Bill Leeper
Ich bin mir ziemlich sicher, dass Google es tut. Wenn Sie Apps verwalten, können Sie alle Kennwörter Ihres Benutzers nachschlagen. Siehe google.com/support/forum/p/Google%20Apps/… , Antwort 4.
apscience
1
RTFA. Es tut uns leid, Sie können sich als Benutzer anmelden. Dies ist eine Methode, bei der ein Benutzer mit bestimmten Berechtigungen die Identität eines anderen Benutzers annehmen kann. Google gibt Ihnen zu keinem Zeitpunkt das Passwort der anderen Person. Sie melden sich mit Ihren eigenen Anmeldeinformationen an und geben sich dann als der andere Benutzer aus. Dies ist ziemlich häufig und eine Lösung für meinen ursprünglichen Kommentar, bei dem der Chef sich möglicherweise als ein bestimmter Benutzer anmelden möchte.
Bill Leeper
0

Was Sie tun können, um Anweisungen zum Speichern von Kennwörtern in einem wiederherstellbaren Format zu befolgen, während das Abrufen unmöglich ist, wenn Sie vollen Zugriff auf das Programm haben, wird asymmetrische Verschlüsselung verwendet

Sie verschlüsseln den (wie immer gesalzenen) Schlüssel mit dem in der Binärdatei gespeicherten öffentlichen Schlüssel

und wenn die Passwörter im Klartext benötigt werden, muss ein Mensch den privaten Schlüssel bereitstellen, der ansonsten vom Server ferngehalten wird

Ratschenfreak
quelle
Abhängig vom Grund der Nachfrage ist dies möglicherweise nicht annähernd die Zufriedenheit der Vorgesetzten des OP.
ein Lebenslauf vom
0

Persönlich habe ich noch nie von einem Softwareentwickler gehört, der ohne Vertragsklausel oder sonstige formelle Vereinbarung rechtlich für Sicherheitsprobleme bei Produkten verantwortlich gemacht wurde, an denen er arbeitet. Nach dem, was ich über Gesetze und Ethik in der Softwareentwicklung gelesen habe, werden die Sicherheitsanforderungen für ein System durch die Anforderungsspezifikation vorgegeben, die sich auch auf gesetzliche, branchenbezogene oder unternehmensbezogene Anforderungen bezieht. Wenn ein System erstellt wird, wird die Nichterfüllung der Sicherheitsanforderungen als Nichterfüllung der Vertragsbedingungen behandelt, da das System nicht wie angegeben erstellt wurde. Wie sich die spezifischen Ereignisse entwickeln, hängt von den Verträgen zwischen dem Ingenieur und dem Arbeitgeber sowie dem Arbeitgeber und dem Kunden ab.

Gesetze sagen dir auch nicht, was du tun sollst, sondern was du tun kannst / nicht kannst. Sie erwähnen nicht, in welcher Branche Sie tätig sind, aber einige haben Gesetze, Vorschriften und Regeln für den Umgang mit bestimmten Datentypen - was verschlüsselt werden muss, Mindestverschlüsselungsstufen, Anforderungen für die Verwaltung / Kontrolle des Zugriffs, und so weiter. Wenn in Ihrer Region (Land, Bundesstaat) keine Sicherheitsregeln gelten, in Ihrer Branche keine Sicherheitsregeln gelten und die Softwareanforderungen keine Sicherheitsanforderungen oder -standards enthalten, ist dies möglicherweise eher eine ethische als eine ethische Frage Rechtsfrage.

Wenn es um ethische Fragen bei der Softwareentwicklung geht, abonniere ich den Software Engineering Code of Ethics und Professional Practice . Letztendlich ist es Ihr Anruf. Ich halte es jedoch für unethisch, Kennwörter im Klartext oder in einem entschlüsselbaren Format zu speichern.

Thomas Owens
quelle
-3

Passen Sie sich einfach an den Entwicklungsprozess Ihres Projekts an: Wenn diese Funktion im Anforderungsdokument enthalten ist, müssen Sie sie implementieren.

mouviciel
quelle
Nur auf Befehl, Sir. Ich glaube nicht. Programmierer müssen denken, Fragen stellen und kreativ sein. Es ist eine beschissene Software wie diese, die der Branche einen schlechten Ruf verleiht und unsere persönlichen Informationen gefährdet.
Bill Leeper
Meine Antwort schlägt genau das Gegenteil vor: Wenn Ihr Chef im Widerspruch zu den Anforderungen steht, können Sie den Chef sicher umgehen. Ich bezweifle, dass der Chef in dem aufgedeckten Fall akzeptieren würde, dass seine Bestellung in Anforderungen geschrieben wird.
mouviciel