Ist KeePass nicht mehr Sicher? Dank eines Tools namens KeeFarce lassen sich Inhalte einer entsperrten KDBX durch den Nutzer unbemerkt in Klartext exportieren.
Panikmache oder Funktioniert das wirklich?
Ein Kurzer Versuch an KeePass 2.30 exportierte erfolgreiche alle Daten ohne das ich darauf aufmerksam geworden wäre. KeeFarce kann Passwörter aus einer geöffneten KDBX Datenbank auslesen, ist eure Datenbank gesperrt besteht keine Gefahr. KeeFarce kann KeePass nicht von sich "Entschlüsseln"! Dabei ist es egal ob Win7, 8, 10 in 32 oder 64 Bit das Prinzip greift überall.Das Resultat war dann dieses:
Hilfe! Was tun?
Erst mal keine Panik, nun aus Eile KeePass von der Platte löschen ist absolut unnötig. Was wirklich hilft ist sich Gedanken über das eigene Sicherheitskonzept zu machen. Generell gilt, hat ein Angreifer erst mal die Möglichkeit Code auf eurem PC Auszuführen, ist kein Password Manager mehr sicher. Daher schließt die Datenbank möglichst schnell nach der Verwendung, nutzt eine Two Factor Methode als Teil der Verschlüsselung und deaktiviert Problematische Funktionen. Gerade Keepass bietet viele Einstellmöglichkeiten um die Datenbank automatisch zu sperren; Sei es bei Inaktivität, bei wechseln in den Energiesparmodus oder beim sperren dies Screens. Wie gesagt, keine Panik - KeeFarce ist kein Remote Angriff und benötigt Ausführungsgewalt an eurem PC.Generell empfehle ich dennoch bei KeePass die nicht verwendeten Funktionen unter Policy einfach zu deaktivieren. Speziell bei KeeFarce hilft aber auch ein deaktivieren der Export funktion leider nichts.
KeeFarce identifiziert den Prozess am Namen, ein Schritt dagegen wäre es KeePass.exe nicht als solches laufen zu lassen. Dazu einfach die EXE Datei und entsprechende Config umbenennen. Dies ist aber auch nur ein "Pflaster" gegen ungezielte Malware welche explizit nur nach "KeePass" sucht und kein wirklicher Gewinn an Sicherheit. Da ein Prozess auch anderweitig identifiziert werden kann würde ein "Echter" Bösewicht hier andere Methoden verwenden. Die KeeFarce Routine selbst identifiziert den Prozess dagegen lediglich am Namen:
Nach den Änderungen des Namen sind die Auswirkungen nun folgende:
(1) Normale Ausführung
(2) Nach umbenennen der EXE Datei
(3) Nach Verbot der Exportfunktionen
Lässt man Keepass unter anderem User Prozess laufen so können "Normale User" ohne die Zustimmung eines erweiterten Adminrechts auch nicht auf die geöffnete DB zugreifen:
Ein Password Manager im Allgemeinen ist natürlich immer ein gewisses Risiko - wenn euch jemand böses will und Vollzugriff zu eurem System erhält ist es nur eine Frage der Zeit bis er an alle Daten kommt die er möchte. Von daher immer als Hinweis das man eine Verschlüsselte PW Datenbank am besten immer mit einem zweiten Faktor absichert (Yubico Security Key oder OTP z.B.) und die DB auch möglichst sofort nach Verwendung wieder sperrt. Denn es nutzt der stärkste Tresor nichts wenn man die Tür offen lässt.
Totale Sicherheit ist ein Trugschluss - aber nur weil man diese 100% Sicherheit nicht erreichen kann muss man ja dennoch nicht resignieren und direkt auf 0% runterfahren:)
Das Problem
KeeFarce nutzt nicht etwa eine Schwachstelle in KeePass selbst sondern vielmehr eine "Schwachstelle" im Betriebsystem aus. Windows bietet nur wenige Effektive Möglichkeiten Apps in einem "geschlossenem" Container zu packen. Intel strebt hier seit Jahren mit der Trusted Computer Platform etwas in der Richtung an, doch aktuell können die meisten Windows Anwendungen auf den Speicher anderer zugreifen. Dies ist das gleiche Prinzip nach dem viele Cheats Tools in Games funktionieren. Es werden Funktionen des eigentlichen Programms "gekapert" und deren Ausgabe abgefischt oder noch schlimmer sogar verändert und das ohne das der Nutzer dies wahrnehmen kann.Im Windows Server Bereich ist es bereits Möglich das Anwendungen in Virtuellen "Containern" laufen und damit von anderen Anwendungen abgeschirmt werden. In Windows Dekstop ist dies leider nur sehr begrenzt machbar und hier greift KeeFarce an. Durch das einschleusen einer DLL wir sich Quasi an den KeePass Prozess angehängt (1), der Speicher dann nach dem im Hintergrund laufendem KeePass UI durchsucht (2) und letztlich alle hier gefundenen Objekte ausgelesen (3) & (4) und die Datenbank damit einfach exportiert (5). Hierbei ist es völlig Egal ob die KeePass Export Funktion aktiviert ist oder nicht.
Wieso das kein reines KeePass Problem ist?
Der Autor von KeeFarce hat die Sourcen Veröffentlicht um auf das Allgemeine Problem Aufmerksam zu machen. Selbe Methodik lässt sich nahezu auf alle Windows Anwendungen oder auch Browser Plugins adaptieren und anwenden. Der panische Wechsel weg von KeePass ist also Augenwischerei und unnötig. KeePass selbst kann da auch nur recht Wenig gegen unternehmen da es ein Grundlegendes Problem ist. Eine Möglichkeit wäre die Erweiterung der Anwendung um geschützte Virtualisierung per Hardware wie sie in neuen Prozessoren vorhanden ist. Sicherlich nicht unaufwändig. Weitere Ansätze, wie z.B. Funktions API Zugriff auf X Keys / Minute, entschlüsselung bei Zugriff usw. gibt es viele und ich bin auch sicher das bei den KeePass Machern eine Reaktion auf KeeFarce nicht ausbleiben wird.Und nun?
Das Thema polarisiert sehr; Möchte der "Endverbraucher" einfach nur eine "Sichere" am besten "One-Klick" Lösung kann der erfahrene Anwender oftmals nur den Kopf schütteln. Ich habe auch schon viel erlebt; Kunden die ihren Private Key ohne Password auf einem im Free Wifi liegendem NAS Share liegen hatten. Bis hin zu Rechnern welche direkt als Adminstrator Account ohne Password und deaktiviertem UAC Betrieben werden. Wer wundert sich da noch?Wie immer gilt; Ist ein Angreifer erst mal in der Lage Dateien auf eurem System und das womöglich noch als Admin auszuführen, ist eh jegliche Sicherheit verloren. Als erste Regel gilt daher immer: Ist eine Anwendung nicht vertrauenswürdig - nicht ausführen! Schon garnicht als Administrator. Manchmal kommt man nicht herum, dann gibt es immer noch Möglichkeiten diese "seltsamen" Anwendungen manuell in einem Container, einer sogenannten "Sandbox" zu packen oder eine Test VM dafür zu verwenden. Erscheint im Windows der UAC Prompt nicht einfach "JA" klicken, sondern Lesen und schauen was da eigentlich gerade passiert. Wer immer JA Klickt ohne das Gehirn zu verwenden dem ist auch hier nicht mehr zu helfen.
Abseits dieses Grundverständniß
Wer sicherstellt das das verwendete KeePass selbst authentisch ist und auch keine dubiosen Plugins darin betreibt der kann den KeePass Prozess selbst als "Elevated Process" starten - Sprich auf Administrator Ebene. Dies hat den entscheidenden Vorteil das Programme anderer User ebenfalls Admin Rechte benötigen um oben beschriebenen Diebstahl durchführen zu können. KeeFarce liefert dann nur zurück:Das zuvor beschriebene umbenennen des KeePass Prozess ist im Endeffekt Kosmetik welche vielleicht "General Purpose" Malware reinlegt, aber wie bereits gesagt - es schadet auch nicht. Eine bessere Absicherung dagegen ist es die KeePass Einstellungen etwas restriktiver zu gestalten und die Datenbank z.B. sich immer automatisch schließen zu lassen so das möglichst niemals im Hintergrund eine geöffnete DB bereit steht. KeePass bietet hierzu zahlreiche Einstellugen:
Eine sehr Wichtiger Punkt hier ist es sich am besten nicht nur auf ein einziges Passwort für die DB zu verlassen sondern auf Two Factor zu setzen. Hier gibt es zahlreiche Möglichkeiten; Das aus dem Google Authenticator bekannte OTP Verfahren oder Challenge Response mit einem Hardware Faktor wie einem YubiKey USB Stick. Hiermit lässt sich die Datenbank dann nur entschlüsseln wenn besagter zweiter Faktor neben dem Hauptkennwort vorhanden ist.
Auch wenn man einen YubiKey verwendet ist es natürlich wichtig das dieser auf "Touch Aktivierung" eingestellt ist und am besten nicht ständig im PC steckt. Ist die Datenbank einmal entschlüsselt ist auch bei Verwendung der Two Factor Auth das Programm anfällig ausgelesen zu werden. Die Entschlüsselung der Daten erfolgt einmalig beim öffnen der DB.
Eine Möglichkeit mit mehr Sicherheit allerdings umständlicher in der Handhabung ist es KeePass selbst in eine VM zu packen. Diese "Kastriert" man soweit das sie weder Internet Zugriff noch Zugriff auf andere Parts des Dateisystems hat. Wie meistens ist der Zugewinn an Sicherheit oft mit dem Verlust der Bequemlichkeit / Komfort einhergehend. Für jeden gilt es das richtige Verhätniss auszuloten. Denn auch das händisch geführte Notizbuch mit Passwörtern ist zwar Offline aber damit nicht zwangsläufig "sicher".
Im entsprechenden ARS Technica Beitrag gibt es in den Usercomments viele Sinnige äußerungen und Vorschläge die teils noch weiter gehen.