2017-07-14 2 views
2

In meiner Pyramiden-App ist es nützlich, sich als Benutzer anmelden zu können (für Test/Debug, nicht in Produktion). Mein normaler Login-Prozess ist nur eine einfache bcrypt-Prüfung gegen das Hash-Passwort.Sicherheitsaspekte einer Pyramide/wsgi os.environ Backdoor?

Bei der Replizierung von Benutzer-Fehlerberichte fand ich es nützlich, einfach die SQLite-Datenbank zu klonen und ein einfaches Skript auszuführen, das das Passwort eines jeden in eine feste Zeichenfolge ändern würde (nur für lokale Tests). Jetzt, wo ich zu postgresql wechsle, ist das weniger bequem und ich denke daran, eine Hintertür zu meiner Login-Funktion zu installieren.

Grundsätzlich möchte ich überprüfen os.environ (set von der debug.wsgi-Datei, die von Apache über mod_wsgi geladen wird) für eine bestimmte Variable 'debug'. Wenn es existiert, dann erlaube ich die Anmeldung unter Verwendung irgendeines Passwortes (für irgendeinen Benutzer) unter Umgehung der Passwortüberprüfung.

Welche Auswirkungen hat dies auf die Sicherheit? Wie ich es verstehe, wird die wsgi-Datei einmal abgerufen, wenn Apache geladen wird. Wenn also die Datei production.wsgi diese bestimmte Variable nicht setzt, wie hoch ist dann die Wahrscheinlichkeit, dass ein Angreifer (oder inkompetenter Benutzer) es spoofiert?

+0

Sie sollten es etwas explizite wie 'ALLOW_LOGIN_WITH_EMPTY_PASSWORD' nennen und dann die Anmeldung mit dem richtigen Passwort verbieten, wenn es aktiv ist ... obwohl ich nicht sicher bin, wie das alles bewirkt, da Sie die Datenbank sowieso und einmal klonen müssen Das Einstellen von Passwörtern ist genauso einfach wie mit SQLite. (Und sollte wahrscheinlich getan werden - zusammen mit der Entfernung von anderen sensiblen Informationen - durch einen automatisierten Prozess, bevor Sie sogar die Kopie erhalten.) – Ryan

+0

Danke, aber dies ist nicht wirklich die Sicherheitsauswirkungen direkt zu adressieren. –

+0

Nun, es spricht Ihr "inkompetent Benutzer" -Szenario an, indem es eine spezifischere Benennung vorschlägt. Der "Angreifer" macht zunächst keinen Sinn. – Ryan

Antwort

1

Um die Serveranwendung mit dieser Debugfunktion in der Umgebung zu instanziieren, müsste der Angreifer den Webserver übergeben, höchstwahrscheinlich mit Administratorrechten.

Von einem externen Prozess kann ein Angreifer die Umgebung des ausgeführten Servers, der in den Arbeitsspeicher geladen wird, ohne mindestens Debugfunktionen und eine gute Nutzlast für das Neuschreiben von Arbeitsspeicher nicht ändern. Es wäre einfacher, den Server einfach neu zu laden oder ein Skript darin auszuführen.

Ich denke, Sie sind sicher, wie Sie gehen. Wenn Sie paranoid sind, stellen Sie sicher, dass Sie die Hintertür von den Builds zur Produktion isolieren (löschen).

Verwandte Themen