Ik gebruik triggers om mijn database automatisch te syncen over SSH dus uitschakelen is voor mij ook geen optie. Aangezien ik niet vaak wijzigingen aanbreng in de configuratie is het natuurlijk een optie om alleen de global config te gebruiken en geen user config. Die kan dan ook niet aangepast worden door aanvallers die op user-niveau toegang hebben. Als er toegang is op systeem-niveau werkt ook jouw programmaatje niet meer dus in dat opzicht is er geen verschil.
Mogelijke alternatieven zijn delen van de configuratie verplaatsen naar de globale configuratie.
Ik heb dit zelf niet geprobeerd dus ik ga even af op de documentatie en mijn interpretatie ervan, die verkeerd kan zijn natuurlijk. In de globale config kan je instellen dat PreferUserConfiguration false moet zijn, alle configuratie-items die in de globale config staan gaan dan voor de items in de user-config.
Of Je kan daarmee alleen de <TriggerSystem>- of <Triggers>-tag
kan overriden en de rest kan laten voor wat het is
weet ik niet zeker.
Nog een alternatief is om daar een "enforced configuration file" voor te gebruiken, dat doet volgens mij min of meer hetzelfde als bovenstaande met de globale config, maar dan op een makkelijkere manier eigenlijk bedoeld voor netwerk-admins.
Edit: okee, net even gekeken
XML: KeePass.config.enforced.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| <?xml version="1.0" encoding="utf-8"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Application>
<TriggerSystem MergeContentMode="Replace">
<Triggers>
<!-- Mijn triggers hier -->
<Trigger>
<!-- Trigger 1 -->
</Trigger>
<Trigger>
<!-- Trigger 2 ... -->
</Trigger>
</Triggers>
</TriggerSystem>
</Application>
<Security>
<Policy>
<ExportNoKey>false</ExportNoKey>
<PrintNoKey>false</PrintNoKey>
<ChangeMasterKeyNoKey>false</ChangeMasterKeyNoKey>
<EditTriggers>false</EditTriggers>
</Policy>
</Security>
</Configuration> |
Dit zorgt ervoor dat alle triggers die ik in mijn user-config had zijn verdwenen en vervangen door de triggers die ik daar heb neergezet. Komt door de
MergeContentMode="Replace". Wijzigen van de triggers via de UI en het exporteren en printen zonder master password zijn allebei onmogelijk gemaakt, alsmede het wijzigen van het master password zonder het master password. De file is opgeslagen als KeePass.config.enforced.xml in de programmamap en niet writable zonder UAC. Maakt het ook nog eens enorm veel makkelijker om die stukken config te syncen naar nieuwe KeePass-installs
Met deze worden er helemaal geen triggers geladen, sowieso het trigger-systeem uitgeschakeld zonder optie om die in te schakelen en bovendien de passwordless export uitgeschakeld, ook zonder optie om die weer in te schakelen:
XML: KeePass.config.enforced.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?xml version="1.0" encoding="utf-8"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Application>
<TriggerSystem MergeContentMode="Replace">
<Enabled>false</Enabled>
</TriggerSystem>
</Application>
<Security>
<Policy>
<ExportNoKey>false</ExportNoKey>
</Policy>
</Security>
</Configuration> |
Dit overschrijft vervolgens wel de relevante tags in de user-config, dus als je ermee gaat klooien eerst even een backup maken als je bijvoorbeeld veel triggers ingesteld hebt staan, anders zijn ze verdwenen

Wat ik nu zelf heb gedaan is al m'n triggers en aangepaste config in de enforced config gezet zodat ik die makkelijk over kan zetten naar andere machines zonder dat er gezeik is met lokale paden die verschillen enzo

In het bovenste code-blok dus, deze post is een beetje een puinhoop geworden door de vele edits
Edit zoveel: kijkend naar jouw source code doe je alleen een check of het TriggerSystem uitgeschakeld is voordat je het programma laat starten. Daar zit nog een race attack in, tussen het checken en het daadwerkelijk starten van het programma kan een aanvaller de configuratie vervangen door zijn eigen ding. Ook kan malware gewoon KeePass killen en opnieuw opstarten zonder via jouw programmaatje te gaan dus de meeste mensen gaan er niet veel baat bij hebben of iets van merken, aangezien veruit de meeste mensen KeePass permanent (locked) in de tray zullen hebben draaien.
[Voor 58% gewijzigd door DataGhost op 31-01-2023 13:14]