středa 13. února 2019

Pozor na KeePass

KeePass je jeden z často používaných správců hesel, který je uvolněný pod General Public Licencí veze 2.

Na rozdíl od různých cloudových správců funguje tak, že máte hesla uložené v jeho "databázi" (soubor), ke které získáte přístup po zadání hlavního klíče ("master password") nebo např. použitím souboru klíče v souboru ("Key File"). Způsobů existuje více.


Tento nástroj má implementovanou jednu vlastnost, na kterou mě dnes upozornil kolega Jirka V. Publikoval jsem ji na Twitteru, ale pak jsem usoudil, že si zaslouží samostatný článek.

V jeho konfiguraci lze nastavit tzv. triggery, což jsou události, které se spustí při určité akci. Na tuto událost lze pak provést další akce.  Jednou z událostí je i otevření/odemčení databáze s hesly a jednou z akcí je export této databáze. Stačí do KeePass.config.xml dopsat níže uvedenou část a při každém odemčení se současně databáze vyexportuje do souboru c:\temp\hesla.txt:

<TriggerSystem>
  <Enabled>true</Enabled>
  <Triggers>
    <Trigger>
      <Guid>esN+2TpQpUSxHM2rzGhXmw==</Guid>
      <Name>test</Name>
      <Events>
        <Event>
          <TypeGuid>5f8TBoW4QYm5BvaeKztApw==</TypeGuid>
          <Parameters>
            <Parameter>0</Parameter>
            <Parameter/>
          </Parameters>
        </Event>
      </Events>
      <Conditions/>
      <Actions>
        <Action>
          <TypeGuid>D5prW87VRr65NO2xP5RIIg==</TypeGuid>
          <Parameters>
            <Parameter>c:\temp\hesla.txt</Parameter>
            <Parameter>KeePass CSV (1.x)</Parameter>
            <Parameter/>
            <Parameter/>
          </Parameters>
        </Action>
      </Actions>
    </Trigger>
  </Triggers>
</TriggerSystem>

V domácím použití to není úplně kritické, protože pokud se vám někdo dostane do počítače, aby vám bez vašeho vědomí změnil konfigurační soubor KeePass.config.xml, tak máte velký problém tak jak tak. Horší je ale, pokud je KeePass používán ve firemním prostředí jako úložiště hesel pro více uživatelů, což je scénář, který KeePass přímo podporuje a uvádí.  

Představme si tedy scénář, kdy je databáze s hesly uložena na sdílení a přístup k ní mají jen oprávnění uživatelé, mezi které ale nepatří administrátor systému, na kterém je databáze a konfigurace uložena. Když takový administrátor do konfigurace doplní výše uvedenou část, tak stačí, aby někdo jiný (oprávněný), otevřel databázi s hesly, na což zareaguje trigger a spustí export hesel do textového souboru. V podstatě ji dostane naservírovanou na talíři. 

Pozor tedy na tuto (dokumentovanou) vlastnost, není to chyba. Jen mám pochybnosti, zda je tato vlastnost ve všeobecné známosti uživatelů, kteří KeePass používají. Já KeePass nepoužívám a nevěděl jsem o tom, ale i kdybych ho používal, tak upřímně, zase tak detailně nápovědu a možnosti konfigurace nestuduji a určitě bych o tom nevěděl.

Možná je čas se poohlédnout po nějakém jiném řešení, obzvláště v podnikovém prostředí. Inspirovat se můžete třeba na následujících stránkách:
https://smallbiztrends.com/2018/01/best-password-manager-apps-small-business.html

Na závěr přidávám doplnění od Michala Špačka, uznávaného odborníka na bezpečnost:
Asi je dobré poznamenat, že dávat do firemního správce hesel "nefiremní" přístupy, kde by vadilo, že se k nim dostane např. správce, který nakonfiguruje triggery, není dobrý nápad a ani dokumentace KeePassu takovou věc nezmiňuje. Zákeřný admin systému se k heslům v databázi vždy dostane, triggery, netriggery.