Datenschutz

 5.0  6.x  6.0  6.0.x  6.0.3  6.5.x  7.x 

Lotus Notes legt Benutzerpasswort offen

Michael Siegrist  18 Juli 2007 21:36:28
 
Lotus Notes hat ab Version 5 eine Debug-Funktion, die dazu geeignet ist, beim Wechseln des Benutzerpasswortes eine Datei mit dem neuen Passwort im Klartext zu schreiben. Diese Funktion dient eigentlich dazu, die Bewertung der Passwortgüte transparent zu machen. Trägt man in der Konfigurationsdatei

Notes.INI zwei zusätzliche Zeilen ein, so protokolliert Notes die Bewertung:

KFM_ShowEntropy=1
Debug_Outfile=c:\testvowe.txt

Beim nächsten Passwortwechsel erstellt Notes die Datei mit folgendem Inhalt:

testvowe_TLANB_2007_07_18@17_07_33.txt
18.07.2007 17:07:36 Lotus Notes client started
18.07.2007 17:07:47 Index update process started
Entering SpellCheckInit
entropy.c SpellCheckAccess Get 13A834 0
Initializing spell checking code
SPELLInitialize succeeded; spell checking DLL loaded
SPELLInitMainDict succeeded
SPELLInitUserDict succeeded
Password Entropy: spell checking code initialized
SpellCheckInit succeeded
Bytes per char: 1
Distribution base multiplier: 6
Resulting entropy limit: 60
[c]alp[c]: 0
[c]alp[t]: 0
[-]alp-s[-]: 18
[t]nalp-s[t]: 18
[t]alp[e]: 18
[t]alp[s]: 18
[t]alp[t]: 18
Testing word: [test]
Searching for [test]
Found [test], worth 12 bits
[2]alp-s[2]: 36
[2]nalp[3]: 42
[2]nalp[4]: 48
Entropy as determined by the state machine: 48

Entropy Limit: 60
Current Entropy: 48
Final Entropy: 48

Final Entropy: 48 bits, 12 chars
entropy.c SpellCheckAccess Put 422EB60 F01069BD

Das Passwort findet sich in den Zeilen nach "Resulting entropy limit: 60" jeweils als Einzelbuchstaben in eckigen Klammern: ct-test234.

Der Debug-Parameter wurde von IBM als Support-Dokument veröffentlicht, vor Kurzem jedoch wieder entfernt. Das Dokument ist derzeit noch im Google Cache zu lesen.

Da die Datei Notes.INI auf der Festplatte des Benutzers manipuliert werden muss, benötigt man zunächst einen physischen Zugang zum Rechner. Es gibt jedoch eine Reihe von Möglichkeiten innerhalb von Notes, diese Datei zu manipulieren. Diese lassen sich zugleich als Abwehrmaßnahme gegen diese Schwachstelle nutzen:

Seit Notes 7 können Einstellungen in der NOTES.INI über Workstation Policies vorgenommen werden. Auf diesem Wege läßt sich die Einstellung "KFM_ShowEntropy=0" erzwingen.
In Notes 6 gibt es eine undokumentierte Möglichkeit, die gleiche Einstellung vorzunehmen. Dazu muss das Policy-Dokument um ein Feld mit dem Namen $PrefKFM_ShowEntropy mit dem Wert 0 erweitert werden.
Alternativ kann die Einstellung über dieses kurze Lotuscript gesetzt werden:

Dim s As New NotesSession
Call s.SetEnvironmentVar("KFM_ShowEntropy","0", true)

Lädt man dieses Skript automatisch beim Öffnen der Maildatenbank aller Benutzer, so wird diese Einstellung jedesmal erneut vorgenommen. Siehe dazu auch dieses Support-Dokument von IBM.

Notes schützt mit dem Passwort den Zertifikatspeicher Notes.ID, den jeder Benutzer zur Authentisierung gegenüber Notes nutzt. Diese Datei wird mit dem Benutzer-Passwort ver- beziehungsweise entschlüsselt. Notes.ID speichert mit den Notes-Zertifikaten auch die privaten Schlüssel des Benutzers sowie gegebenenfalls X.509-Zertifikate. Es ist deshalb eminent wichtig, dass niemand gleichzeitig eine Kopie von Passwort und Notes.ID anfertigt. Sollte jemand die Logdatei und die Notes.ID gleichzeitig in Besitz nehmen, kann er sich jederzeit gegenüber Notes ausweisen.

Auch wenn sich der Missbrauch dieser Debug-Funktion durch administrative Eingriffe weitgehend ausschließen lässt, so ist ein Notes-Administrator mit geeigneten Rechten in der Lage, die Passwörter aller Benutzer auszuspähen.

Anders als etwa bei Windows ist es für den Notes-Administrator nicht möglich, ein vergessenes Passwort zurückzusetzen, da es nur für die Entschlüsselung der Notes.ID benötigt wird. Einige Notes-Kunden haben deshalb aufwändige Lösungen, die Passwort-Änderungen zentral ablegen, eine Wiederherstellung von Passwörtern aber nur mittels eines Vieraugenprinzips in Zusammenarbeit von Administration und Revision ermöglichen. Diese Sicherheit wird durch die Debug-Funktion unterlaufen. (vowe/c't)