Przykład użycia systemu triggerów w KeePass do automatycznego eksportu haseł użytkownika.
Opublikowano 25.01.2023 17:44
TL;DR: Jeżeli atakujący posiada dostęp do pliku konfiguracyjnego KeePass.config.xml
może użyć złośliwego triggera do eksportu haseł użytkownika.
To udokumentowana funkcja KeePassa a nie żaden nowy błąd. Jeśli ktoś ma dostęp do Twojego komputera - to masz przechlapane. I żaden menadżer haseł tutaj nie pomoże.
Triggery to funkcja KeePassa, która pozwala na automatyzowanie niektórych czynności.
Spróbujmy wykorzystać tą ostatnią funkcję i stwórzmy swój własny pierwszy "exploit".
Tools->Triggers
.Add
.Events
. Kliknij Add
.Opened database file
.Actions
. Kliknij Add
.Export active database
. W polu File
podaj ścieżkę gdzie chcesz zapisać wyeksportowane hasła. Jako File format
podaj KeePass CSV (1.x)
.C:\test\bug.csv
z Twoimi hasłami."Account","Login Name","Password","Web Site","Comments"
"Mój blog","kacper","moje_tajne_haslo","",""
POC dla CVE-2023-24055 zawiera dodatkową akcję - wysłanie zawartości pliku na zewnętrzny serwer przy pomocy powershella. To po prostu użycie triggera execute command line
. To też da się "wyklikać" z GUI.
Jeśli ktoś może modyfikować pliki na Twoim dysku to równie dobrze może zmienić zawartość KeePass.exe
. A zmodyfikowana wersja programu może być złośliwa i nie trzeba do tego wykorzystywać pliku z konfiguracją.
Błąd został zgłoszony do twórców. Cały wątek znajdziesz tutaj.
KeePass.config.enforced.xml
w miejscu z uprawnieniami tylko do odczytu
. Wtedy zmienienie konfiguracji nie jest takie proste. Bo jeśli nie masz uprawnień do zapisu - to nie zmienisz treści pliku. Ale warto pamiętać, że użytkownik może pobrać wersję portable i uruchomić ją z innego katalogu. Wtedy uruchomi się jego konfiguracja - a nie Twoja.<?xml version="1.0" encoding="utf-8"?>
<Configuration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Application>
<LanguageFile />
<TriggerSystem>
<Enabled>false</Enabled>
</TriggerSystem>
</Application>
<Security>
<Policy>
<Plugins>false</Plugins>
</Policy>
</Security>
</Configuration>
Options->policy
możesz odznaczyć Export - No Key Repeat
. Teraz gdy ktoś spróbuje wyeksportować zawartość bazy przy pomocy triggerów - zostaniesz poproszony o hasło główne jeszcze raz. Export
. Chociaż to nic nie zmienia. Bo atakujący może stworzyć trigger, który ściągnie i uruchomi inny złośliwy plik - no chyba, że je wyłączyłeś. Patrz punkt 1.