Sie müssen einen kleinen Fehler für eine sicherheitsintensive Site beheben. Wenn man sich den Code ansieht, ist er mit Sicherheitslücken gefüllt. Wie geht's? [geschlossen]

109

Ich wurde von jemandem angeheuert, um kleine Arbeiten an einer Site durchzuführen. Es ist ein Standort für eine große Firma. Es enthält sehr sensible Daten, daher ist die Sicherheit sehr wichtig. Bei der Analyse des Codes ist mir aufgefallen, dass er mit Sicherheitslücken gefüllt ist - Lesen, viele PHP-Dateien, die Eingaben von Benutzern direkt in mysql-Anforderungen und Systembefehle einbringen.

Das Problem ist, dass die Person, die die Site für ihn erstellt hat, ein Programmierer mit Familie und Kindern ist, die von diesem Job abhängig sind. Ich kann nicht einfach sagen: "Ihre Website ist ein Script-Kiddie-Vergnügungspark. Lassen Sie mich es für Sie wiederholen, und es wird Ihnen gut gehen."

Was würden Sie in dieser Situation tun?

Aktualisieren:

Ich habe hier einige gute Ratschläge befolgt und dem Entwickler höflich mitgeteilt, dass ich auf der Website einige mögliche Sicherheitslücken gefunden habe. Ich wies auf die Leitung hin und sagte, dass es dort eine mögliche Sicherheitslücke für SQL-Injection-Angriffe geben könnte, und fragte, ob er davon wüsste. Er antwortete: „sicher, aber ich denke , dass es auszubeuten die Angreifer sollen Informationen über die Struktur der Datenbank haben, ich habe besser zu verstehen“ .

Update 2:

Ich sagte, dass dies nicht immer der Fall ist und schlug vor, dass er diesem Link zur Stapelüberlauf-Frage folgt, um richtig damit umzugehen: Wie kann man SQL-Injection in PHP verhindern? Er sagte, er würde es studieren und bedankte sich, dass ich es ihm vorher gesagt hatte. Ich denke mein Teil ist erledigt, danke Jungs.

MaiaVictor
quelle
29
Ich würde wirklich gerne eine Lösung finden, bei der nicht jemandes Leben ruiniert wird. Ich würde das in Ruhe lassen, aber ich weiß auch, dass eine solche Sicherheitslücke auch das Leben einiger Menschen ruinieren könnte. Kompliziert.
MaiaVictor
18
Der Angreifer kann den Exploit verwenden, um Informationen zur Struktur der Datenbank abzurufen. Es sollte niemals eine SQL-Injection-Schwachstelle heruntergespielt werden.
Dave Rager
17
Zeigen Sie ihm, wie Sie eine Sicherheitsanfälligkeit ausnutzen können, ohne Kenntnisse über die Datenbank zu haben. Das wird ihn erschrecken.
Euphoric
74
Ich möchte nur guten Job sagen, weil ich nach einer anderen Person / einem anderen Programmierer Ausschau halte, die / der Sie nicht kennen. Es macht es nicht weniger schrecklich, ihren Lebensunterhalt zu ruinieren, weil sie einen Fehler gemacht haben und Sie sie nicht kennen, und ich empfehle Ihnen, dass Sie das in Betracht ziehen.
Steel
8
@Dokkat Das Problem ist eines der Balance. Aus Sicht eines Programmierers hat der schlechte Programmierer mit Frau und Kind tatsächlich das Unternehmen und damit die Arbeitsplätze vieler Mitarbeiter mit Frauen und Kindern gefährdet. Außerdem wird das Problem oft durch das emotionale Problem "Schlechter Programmierer macht etwas, das mein Leben schwerer macht. Jetzt muss ich auf Zeit mit meiner Familie verzichten. Sie sind mir wichtiger als er. Das scheint unfair. " Das ist eine irrationale Reaktion, aber Leute sind Leute.
Deworde

Antworten:

114

In erster Linie geht es hier darum, die Sicherheitslücken zu schließen.

Wenn Sie direkt mit dem Ingenieur arbeiten, der das geschrieben hat, dokumentieren Sie alles und geben Sie es diesem Ingenieur.

Wenn nicht, teilen Sie Ihrem Arbeitgeber mit, dass die Sicherheitsprobleme größer sind als ursprünglich angenommen und dass die Website viel Arbeit erfordert . Bitten Sie darum, mit dem Hauptentwickler zusammenzuarbeiten, der auf der Website ist, und bieten Sie ihm an, ihn über PHP-Sicherheit zu unterrichten (versprechen Sie nicht, die Person zu einem Experten zu machen, aber bieten Sie ihm an, sie in allem, was Sie wissen, zu schulen), damit diese Person es übernehmen kann nachdem du fertig bist.

Machen Sie dies nicht zu einem Thema "Dieser Kerl ist böse, entlassen Sie ihn". Annäherung aus der Perspektive von "Hey, ich habe einige potenzielle Fehler gefunden, die behoben werden müssen. Diese scheinen auf Unwissenheit / häufige Missverständnisse in Bezug auf die Site-Sicherheit zurückzuführen zu sein. Ich würde auch gerne mit Ihrer Entwicklung sprechen, damit wir Ihre Site verbessern können und hoffentlich vermeiden Sie in Zukunft mehr dieser Probleme. "

Eric Hydrick
quelle
1
Insgesamt großartige Antworten. Das Thema ist subjektiv, daher werde ich Ihr Thema als das von der Community am meisten angenommene markieren.
MaiaVictor
1
Wenn Sie mit dem Ingenieur zusammenarbeiten, aber vom Management bezahlt werden, sollten Sie sich nicht beim Management melden? Was ist, wenn der Ingenieur sich bei Ihnen bedankt, aber sobald Sie gehen, den Bericht zerstört?
Konerak
Teilen Sie entweder beiden mit oder teilen Sie dem Techniker zuerst mit, ob in dem von ihnen verwendeten System Fehler erstellt und nachverfolgt werden. Wenn keine Bugs erstellt wurden, teilen Sie dies dem Management mit.
Eric Hydrick
2
Diese Antwort hat mir besser gefallen: programmers.stackexchange.com/a/189206/28351 , weil die Prioritäten für den Arbeitgeber unterschiedlich sind. Erst die Sicherheitslücken melden, dann den kleinen Fehler beheben.
Nalply
80

Es gibt einen Unterschied zwischen Unwissenheit und Inkompetenz. Es gab eine Zeit, in der Sie nicht wussten, was SQL-Injection ist, und es gibt keinen Grund zu der Annahme, dass der ursprüngliche Programmierer die Probleme nicht beheben kann, wenn er sie erst einmal erkannt hat.

Also sag es ihnen. Seien Sie spezifisch und objektiv und stellen Sie sich zur Verfügung, um Fragen zu beantworten, Beispiele für Exploits bereitzustellen und Empfehlungen für Fehlerbehebungen abzugeben. Wenn sie es nach diesem Zeitpunkt immer noch nicht erhalten, können Sie nur Ihre eigenen persönlichen Daten auf der Website speichern.

Karl Bielefeldt
quelle
26
+1. Unwissenheit kann behoben werden. Inkompetenz ist für manche eine Karriere!
Mitch Wheat
20

Ihre Aufgabe ist es nicht, die Website für ihn zu wiederholen. Es ist, um den kleinen Fehler zu beheben. Wenn Sie jedoch Sicherheitsprobleme festgestellt haben, die behoben werden sollten, können Sie sich an den Websitebesitzer wenden und einen Einblick in das mögliche Problem erhalten.

Schimpfe nicht oder rede nicht negativ über den ursprünglichen Entwickler oder kommentiere, wie schrecklich der Code ist. Seien Sie respektvoll und professionell. Sie können anbieten, mit dem Entwickler zusammenzuarbeiten, um die Probleme zu beheben. Versuchen Sie nicht, das Problem selbst zu beheben oder eine Lösung anzubieten, es sei denn, Sie wurden beauftragt, das Problem zu beheben. Wenn sie Ihrem Rat folgen und Sie sich irren, könnten sie auf Sie zurückkommen.

Dave Rager
quelle
17

In erster Linie - reparieren Sie das, wofür Sie angeheuert wurden. Wenn Sie das nicht tun, werden Sie als Berater wahrgenommen, der mehr für sich selbst arbeiten möchte, als die Arbeit zu erledigen.

Zusammen mit den Korrekturen müssen Sie ihnen eine Liste der Dinge geben, von denen Sie bemerkt haben, dass sie aus Sicherheitssicht falsch sind, und warum diese Dinge falsch sind.

Michael Kohne
quelle
13

Es nützt niemandem, die Probleme nicht zu melden. Wenn Sie eine bestimmte Aufgabe hatten, für die Sie beauftragt wurden, dokumentieren Sie andere Sicherheitsprobleme, während Sie sie sehen, und melden Sie sie der entsprechenden Person, wahrscheinlich der Person, an die Sie für die Aufgabe berichten, für die Sie beauftragt wurden.

Dies ist eine Situation, in der sich starke Soft Skills als nützlich erweisen werden, da dies mit Fingerspitzengefühl behandelt werden muss, ohne die von anderen auf der Site geleistete Arbeit niederzulegen und dem Entwickler das Gefühl zu geben, sein Talent in Frage zu stellen.

Vermeiden Sie offensichtlich Wörter wie "Mist, schlecht, arm, durcheinander", wenn Sie sich auf den Code / die Fehler und ähnliche Wörter für den Entwickler beziehen, der die Site geschrieben hat.

Rig
quelle
4
Ich möchte hinzufügen: Stellen Sie sicher, dass der Entwickler sich der Schwere der Fehler bewusst ist und weiß, wie sie ausgenutzt werden können. Wenn Sie sich die Zeit nehmen, um mit diesem Entwickler einen kontrollierten "Angriff" auf einen lokalen Computer zu starten, kann dies viel dazu beitragen, ihn über das Problem aufzuklären, sodass Sie Möglichkeiten zur Verhärtung des Codes vorschlagen können.
Andrew Gray
7

Zusätzlich zu den anderen Antworten möchten Sie den Entwickler auf einige Ressourcen hinweisen, wie leicht SQL-Injection-Probleme ausgenutzt werden können, z. B. sqlmap , ein automatisiertes SQL-Injection-Exploitation-Tool.

Ich habe festgestellt, dass es effektiv ist, die Ernsthaftigkeit dieser Art von Problemen in der Vergangenheit zu demonstrieren, indem ich zeige, was man damit machen kann, wenn man so etwas gegen einen Entwickler ausführt. Kopie der Site, um zu zeigen, wie sie Daten extrahiert usw. Sie könnten sie von der Ernsthaftigkeit überzeugen.

Røry McCune
quelle
4
Seien Sie sich bewusst, dass dies einige Risiken mit sich bringt, denn Sie können dazu gebracht werden, wie ein "Hacker" zu wirken. Führungskräfte verstehen nicht unbedingt Begriffe wie "vorhandene Sicherheitslücke", "Entwicklungskopie" und "White Hat Security Analyst"
Deworde
0

Zuerst und nur; Das Management will nichts von Problemen hören. Ich wurde vom Büro für Personalmanagement (Sicherheitsüberprüfungen für das Weiße Haus) entlassen, weil ich darauf hingewiesen habe, wie unsicher ihr System war. Das ist eine Weile her, aber die Einstellungen des Managements haben sich nicht geändert.

Besprechen Sie das Problem mit dem Entwickler per E-Mail, damit Sie eine Spur haben, und gehen Sie dann zu Fuß oder rennen Sie davon. Wenn sie schließlich als Auftragnehmer ein Problem haben, werden sie versuchen, Ihnen die Schuld zu geben, unabhängig davon, ob eine Beteiligung auch nur aus der Ferne mit dem Problem verbunden ist.

Ein Problem, das so grundlegend ist wie eine SQL-Injection, weist darauf hin, dass es zu Beginn der Entwicklung des Systems billig war. Holen Sie sich, was Sie können, von ihnen, während sie noch im Geschäft sind, aber suchen Sie die Geschäftsentwicklung woanders.

Joe
quelle
3
„ Das Management will nicht über Probleme hören“ - fügen Sie einige Begründung / Referenzen Ihre Behauptung zu unterstützen (was mir plausibel klingt , aber das ist nicht wirklich wichtig ) und ich werde widerrufen Downvote
gnat