Was tun, wenn Ihr Unternehmen keine Passwörter verschlüsselt?


13

Hintergrund

Ich wurde beauftragt, einem Unternehmen bei der Wartung seines Servers zu helfen. Ich arbeite an einigen kleineren PHP-Projekten, beschäftige mich aber auch mit Leistungsproblemen und scanne kürzlich die Protokolle nach Hackern.

Diese Jungs betreiben ihren Server seit einiger Zeit und haben eine Legacy-Anwendung, wie ich sie nennen würde, in den letzten Zügen. Es werden magische Anführungszeichen verwendet, globale Variablen (die $idüberschrieben werden können $_GET['id']), .htaccess als einzige Sicherheit in einigen Fällen, wie Sie es nennen. Ein Albtraum für Sicherheit und Programmierung.

Wir wurden in der Vergangenheit hauptsächlich mit SQL-Injections gehackt, die SLEEP(99999999)Befehle ausführen und als DOS-Angriff fungieren. Zum Glück haben sie keine "kleinen Bobbytische" betrieben,

http://xkcd.com/327/

XKCD: http://xkcd.com/327/

Also habe ich ihre anfälligen SQL-Anweisungen von mysql_query()(nicht von mysqli) auf PDO-Transaktionen umgeschrieben. Ich analysiere auch die Abfragen für SLEEPund UNION, die wir nicht verwenden, aber die Injektionen haben. So weit, ist es gut.

Neueste Ausgabe

Kürzlich wurde uns mitgeteilt, dass sich Datensätze in der Datenbank für Benutzer ändern, z. B. deren E-Mail-Adressen zu denen, die vermutlich von Spammern erstellt wurden.

Mir ist aufgefallen, dass ihre Kolumnen keine hatten last_modified Kolumne hatten, so dass wir nicht einmal wissen konnten, wann sie gewechselt wurden, geschweige denn von wem. Ich habe diese Spalte hinzugefügt, aber das ist kaum ein erster Schritt.

Als ich in diese Tabelle hineinguckte, bemerkte ich, dass die Passwörter weder gesalzen noch gehasht wurden, sondern nur als Klartext gespeichert wurden.

Client-Kommunikation

Wie kann ich als Bauunternehmer mit ihnen über die gesamte Situation sprechen, ohne meine Arme wie ein Verrückter zu bewegen? Irgendein Rat? Ich dachte eine ruhige Annäherung an,

    FEHLER 1
        Zusammenfassung
        Warum ist dies ein Problem
        Was kann passieren, wenn dies nicht behoben ist?
        Vorgeschlagene Lösung

    AUSGABE 2
        Zusammenfassung
        Warum ist dies ein Problem
        Was kann passieren, wenn dies nicht behoben ist?
        Vorgeschlagene Lösung
        

Mein Gedanke ist, unabhängig von Klartext-Passwörtern, die eine massive nein nein ist. Wenn Sie alle Abfragen in PDO geändert haben und vorbereitete Anweisungen verwenden, es sei denn, es gibt eine Änderung in Ihrem E-Mail-Bereich. Sie sollten nicht in der Lage sein, eine SQL-Abfrage auszuführen, um E-Mail-Adressen zu ändern. Ect
Liam Sorsby

1
Ich habe / all / Queries nicht in PDO geändert. Tut mir leid, ich habe diejenigen geändert, bei denen festgestellt wurde, dass sie von SQL-Injections betroffen sind.
bafromca

Wäre es eine rundum bessere Lösung, eine PDO-Klasse hinzuzufügen und diese Klasse dann auf der gesamten Site zu implementieren? Überlegen Sie sich dann, wie Sie Passwörter haschen und ein Salt verwenden. Dies ist jedoch möglicherweise etwas zeitaufwändig, da Sie angeben, dass es sich um eine "Legacy" -Anwendung handelt.
Liam Sorsby

5
Ich würde sagen, überarbeiten Sie Ihr "was passieren kann" mit "was passiert ist", da sie bereits gehackt wurden und die Benutzeranmeldeinformationen in die Hände von Hackern gelangen.
James Snell

Offenbar geht es bei Ihrer Frage nur um die Kommunikation mit Ihrem Kunden. Ehrlich gesagt, sollten Sie Ihre Ansprechpartner kennen und wissen, wie Sie diese ansprechen können. Ruhe bewahren ist immer eine gute Strategie. Zeigen Sie Ihrem Kunden einfach die Risiken auf und lassen Sie ihn über die Dringlichkeit entscheiden.
Doc Brown

Antworten:


15

Die ruhige Herangehensweise, die Sie vorschlagen, wäre am besten. Weisen Sie darauf hin, dass die meisten Ihrer Benutzer aufgrund der Wiederverwendung von Kennwörtern anfällig für Identitätsdiebstahl sind, wenn diese Daten offengelegt werden. Dies wäre ein guter Zeitpunkt, um darauf hinzuweisen, dass dies dasselbe Problem ist, das auch Target betroffen hat (vorausgesetzt, das Unternehmen ist kein Target). Und Ihr Manager sollte ziemlich empfänglich dafür sein, dies zu ändern.

In Bezug auf die Rechtmäßigkeit der Daten glaube ich nicht, dass Benutzername / Passwort mit CC-Daten, persönlichen Informationen usw. identisch sind. Dies kann jedoch davon abhängen, welche Informationen Sie für Ihre Benutzer haben. Ich bin kein Anwalt, und diese Aspekte sollten am besten in Ihrer Enthüllung zur Sprache gebracht werden.

https://en.wikipedia.org/wiki/Information_privacy_law

Und Sie haben diese XKCD, um Ihnen auch zu helfen:

Bildbeschreibung hier eingeben


4

Es kommt wirklich auf das Publikum an, in dem Sie sich damit zu nähern versuchen. Ich habe in Unternehmen mit schwerwiegenden Sicherheitsproblemen gearbeitet, von denen Sie behaupten, dass sie es nicht hören wollten, bis ich es ihnen zeigte.

Ein Ansatz, wenn möglich, besteht darin, im Grunde das zusammenzufassen, was Sie vorhaben, und das aufzuzählen, was möglicherweise bereits in diesen Hacks passiert ist. Wenn Ihr Publikum nicht technisch orientiert ist, müssen Sie wahrscheinlich auf die Geschäftskosten hinweisen, die diese Kompromisse mit sich bringen können. Offensichtlich gehackte Konten verringern die Glaubwürdigkeit Ihres Systems und den wahrgenommenen Kundennutzen Ihres Produkts. Ganz zu schweigen von einem kompromittierten System mit Klartextkennwörtern und E-Mail-Adressen für Benutzer, das zu ernsthaften Beeinträchtigungen führen kann.

Das nächste, was Sie tun sollten, wenn es überhaupt möglich ist, ist es zu beweisen. Wenn Sie dieses System in einer Testumgebung aushalten können, tun Sie dies. Zeigen Sie dann vor sich, welche Auswirkungen Sie auf das System von der Clientseite der Anwendung aus haben können. Selbst bei Technikern hat sich das für mich als ziemlich überzeugend erwiesen (obwohl sie in meinen Fällen normalerweise immer noch nicht gehandelt haben).

Natürlich müssen Sie, wie Sie sagten, gegebenenfalls erläutern, welche Maßnahmen ergriffen werden sollten, und eine Schätzung des Aufwands, um dies zu erreichen. Es wird ihnen helfen, die Kosten zu rechtfertigen, obwohl es manche Orte einfach sowieso nicht interessieren. Zumindest kannst du dein Bewusstsein klären und vorwärts gehen, wenn du weißt, dass du es versucht hast.


2

Wenn Sie, wie Sie sagen, mit der Wartung des Servers beauftragt wurden, muss dieser Vertrag in der Auftragsbeschreibung Aufgaben wie die Gewährleistung der Integrität, Sicherheit und Verfügbarkeit des Betriebssystems, der Anwendungssoftware und aller Daten usw. enthalten. Wenn es auch nur einen vagen Hinweis gibt, dass der Vertrag erwartet (und Sie dafür verantwortlich macht), dass der Server sicher ist, dann würde ich keine Zeit damit verschwenden, Geschäftsfälle zusammenzustellen und einfach gute Arbeit zu leisten, um sicherzustellen, dass die Probleme behoben werden (unter eine Sicherung davor und danach, wobei ein Versionsverlauf Ihrer Codeänderungen aufbewahrt wird).

Ich würde nicht erwarten, dass eine solche Änderung mehr als einen Morgen Arbeit kostet, und wenn sie fragen, woran Sie Ihre Zeit gearbeitet haben, können Sie ein Tagebuch führen, um Ihre Handlungen zu erklären und zu rechtfertigen. Vorausgesetzt, Sie arbeiten im Rahmen Ihres Vertrags, sollten hier keine Probleme auftreten. Manchmal verursacht es Panik, wenn alle Sicherheitsmaßnahmen vor Entscheidungsträgern verrückt sind, oder im schlimmsten Fall bietet sich ihnen die Gelegenheit, zu behaupten, dass sie sich nicht um diese Probleme kümmern eine Verletzung! Vielleicht ist dies nicht immer der geschäftsfreundlichste Ansatz, aber meine Berufsethik würde es mir nicht erlauben, unverschlüsselte Passwörter in einem System zu hinterlassen, für das ich jemals verantwortlich war, als ich darauf aufmerksam wurde.

Aus persönlicher Erfahrung kann ich feststellen, wann immer ich anfange, für einen neuen Arbeitgeber oder Kunden zu arbeiten. Wenn Sie Szenarien und Erwartungen im Voraus besprechen, kann dies Ihrerseits viel Stress ersparen. Wenn ich Sicherheitsprobleme finde, die ich beheben kann, sind Sie glücklich darüber Ich möchte fortfahren und diese Arbeit abschließen, ohne jedes Mal zu Ihnen zu kommen und Sie nur über vermutete Verstöße / Vorfälle zu benachrichtigen. Sie werden dies fast immer bejahen, weil sie aus ihrer Sicht nicht daran interessiert sind, sich um Sicherheit oder Computer zu kümmern - deshalb haben sie Sie engagiert! Vielleicht beantwortet dies die Frage nicht so, wie Sie es erwartet hatten, aber ich hoffe, es gibt Anlass zum Nachdenken. Ich wünsche Ihnen alles Gute und hoffe, dass das Problem behoben wird!


Das ist eine großartige Antwort. Manchmal verursacht es mehr Panik, Probleme mit "Entscheidungsträgern an vorderster Front" zur Sprache zu bringen, als es wert ist. Ich mag es nicht, hinter dem Rücken derer zu arbeiten, die mein Gehalt bezahlen, aber das Problem der persönlichen Haftung ist ein Hauptargument. Ich könnte die Passwörter leicht salzen + hashen und dann die opentext Passwortspalte entfernen, wenn alles verschoben wird. Das größte Problem ist jedoch, dass die Passwörter möglicherweise bereits angezeigt und erfasst wurden.
bafromca

Die unglückliche Realität ist, dass die Zeit nicht bis zu dem Punkt vor dem Verstoß zurückgespult werden kann. Während das Unternehmen möglicherweise entscheiden muss, ob es seine Kunden über den Verstoß informiert oder nicht, hat das Wichtigste für mich immer Maßnahmen ergriffen, um weitere Vorbeugungen zu treffen Verstöße. Wenn die Direktoren die Benutzer nicht über eine Sicherheitsverletzung informieren möchten, können Sie die Kunden stattdessen nach dem Anmelden mit einer Meldung wie "Nach Verbesserungen an der Sicherheit unserer Website müssen Sie jetzt ein sichereres Kennwort wählen, das Groß- und Kleinbuchstaben sowie Zahlen enthält." und mindestens 8 Zeichen lang: '.
Richhallstoke

0

Wenn sich die E-Mail-Adresse des Kunden bereits ändert und dies als Problem angesehen wird, ist die Möglichkeit, Kennwörter zu ändern, sicherlich auch ein Problem.

Wenn Sie nun die Datenbank ausreichend gesichert haben, um dies in Zukunft zu verhindern, ist die Wahrscheinlichkeit, dass jemand das Kennwort des Benutzers bearbeiten kann, ähnlich hoch und Sie müssen nur prüfen, ob jemand das Kennwort jetzt lesen kann.

Natürlich sollten Sie die Passwörter sicher verschlüsseln, wenn dies möglich ist oder wenn Sie (im unwahrscheinlichen Fall) die Datenbank nicht vollständig gesichert haben - wie geht das? Stellen Sie es einfach in den gleichen Kontext wie das Problem "Aktualisieren von E-Mail-Adressen". Ob dies eine Änderung der Anwendung erfordert und ob dies ein "zu schwieriges" Problem ist, ist eine andere Frage, die angesprochen werden muss. Sehen Sie sich den Code an und prüfen Sie, wie hoch die Kosten für die Änderung sind, bevor Sie die vorgeschlagene Fehlerbehebung durchführen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.