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.
Antworten:
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.
quelle
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.
quelle
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.
quelle
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? :)
quelle
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:
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.
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.
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.
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.
quelle
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.
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 .
quelle
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.
quelle
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.
quelle
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
quelle
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.
quelle
Passen Sie sich einfach an den Entwicklungsprozess Ihres Projekts an: Wenn diese Funktion im Anforderungsdokument enthalten ist, müssen Sie sie implementieren.
quelle