KeePassXC első biztonsági audit jelentés

A KeePassXC nevű jelszószéf projekt egy biztonsági auditot rendelt meg, amelynek célja a KeePassXC alkalmazás és kódbázisának átvilágítása volt. Az audit során a KeePassXC 2.7.4-es verziót vizsgálták. A vizsgálat, amelyet Zaur Molotnikov független biztonsági szakértő végzett, 2023. január 19-én fejeződött be. A vizsgálat egyebek mellett a következőket állapította meg:

KeePassXC provides sufficient cryptographic protection (confidentiality, integrity and authenticity) to the confidential information the user is storing in the database, given that the user selects a strong authentication method, e.g. a strong passphrase and a confidential random key file, and that the user will use KeePassXC with its latest secure file format.

KeePassXC is written well and exercises defensive coding sufficiently. The memory deallocation could be improved to not to contain secrets after the database is locked though.

I have reviewed the core features of KeePassXC focusing mainly on its database reading and writing features and the cryptography use. I could discover no major problems. To the best of my knowledge, disclaiming warranties and/or liability, I can recommend the use of core KeePassXC 2.7.4 functionality as of December 2022: reading and writing the database files with confidential user information.

Részletek itt.

Hozzászólások

itt is az a problema mint a wp-nel: regiment kulso plugin van, aminek a kodminosege nincs vizsgalva. hiaba jo a keepassxc, ha egy fos pluginen keresztul kiszivhato a teljes db :/

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Már csak a Keepass2Android (Play Store) hiányzik a felsorolásból :D

Keepass2Android is a password manager app. It allows to store and retrieve passwords and other sensitive information in a file called "database". This database is secured with a so-called master password. The master password typically is a strong password and can be complemented with a second factor for additional security. The password database file can be synchronized across different devices. This works best using one of the built-in cloud storage options, but can also be performed with third-party apps. Keepass2Android is compatible with Keepass 1 and Keepass 2 on Windows and KeepassX on Linux.

trey @ gépház

Hát, akkor ChatGPT-be be kell csak írni, hogy fordítsa le az angol szöveget és mehet is a felsorolásba:

A Keepass2Android egy jelszókezelő alkalmazás, amely lehetővé teszi a jelszavak és más érzékeny információk tárolását és visszakeresését egy ún. "adatbázis" nevű fájlban. Ez az adatbázis egy úgynevezett főjelszóval van biztosítva. A főjelszó általában erős jelszó, és kiegészíthető második faktorral a további biztonság érdekében. Az adatbázis fájlt különböző eszközökön lehet szinkronizálni. Ehhez a beépített felhőtárolási lehetőségek valamelyikét célszerű használni, de harmadik fél által készített alkalmazásokkal is végezhető. A Keepass2Android kompatibilis a Windows-on futó Keepass 1 és Keepass 2, valamint a Linux-on futó KeepassX programokkal.

trey @ gépház

És ha már ott voltam:

Én:

Mi a KeePass, a KeePassX és a KeePassXC közt a különbség?

ChatGPT:

A KeePass, a KeePassX és a KeePassXC mind olyan szabad és nyílt forráskódú jelszókezelő alkalmazások, amelyek lehetővé teszik a jelszavak és más érzékeny információk tárolását és biztonságos kezelését.

A KeePass az eredeti változat, amelyet Windows operációs rendszerre fejlesztettek ki. Az alkalmazás támogatja a plugineket és a kiegészítőket, amelyekkel bővíthető a funkcionalitása. Az adatbázis fájlok .kdbx vagy .kdb formátumban menthetők el.

A KeePassX az eredeti KeePass Linux és macOS változata, amelyet azonban már nem aktívan fejlesztenek. Az adatbázis fájlok .kdb vagy .kdbx formátumban menthetők el.

A KeePassXC egy több platformot támogató változat, amely a KeePassX-en alapul, de továbbfejlesztett funkciókkal és több nyelven is elérhető. Az adatbázis fájlok .kdbx formátumban menthetők el.

Összességében az összes változat célja ugyanaz: biztonságosan tárolni és kezelni a jelszavakat és az egyéb érzékeny információkat. A különbség az egyes változatok között a funkcionalitásban, a platformtámogatásban és az adatbázis fájlformátumokban van.

trey @ gépház

Mi a forrása az előbbi válaszodnak?

Az előbbi válaszom az én nyelvi modellből származik, amely a GPT-3.5 architektúrán alapul és képzése a 2021 szeptemberében elérhető adatokon alapul. Az információk forrása az interneten elérhető nyilvános információkból, dokumentációkból, forrásokból és felhasználói véleményekből származik. Az információk pontosságára és aktualitására mindig törekszem, de nem garantálhatom, hogy minden esetben teljesen pontosak és naprakészek.

Közte van-e a https://zrubi.hu/2018/keepassxc/ link?

Az én képességeim nem tartalmazzák a weboldalak memóriába rögzítését, így nem tudom megmondani, hogy a https://zrubi.hu/2018/keepassxc/ link szerepelt-e az előbbi válaszomban vagy sem. Azonban, ha szeretnél több információt a KeePassXC-ről, akkor szívesen segítek!

(Bocs, tanulok prompt engineer-nek! :D :D :D)

trey @ gépház

A legtöbb KeePass-képes app tudja az 1.x és 2.x-es KeePass-adatbázisokat olvasni. Én anno Androidon KeePassDroid-ot használtam, Linuxon meg a KeePassXC-t, amit felváltott egy idő után a kp-cli (Perl-ben írt CLI KeePass jelszókezelő). Ez anno be is vált, de a kp-cli Perl-frissítésekkor szeretett eltörni, bizonyos új Perl crypto modulok nem tetszettek neki. Az adatbázist kézzel frissítettem az eszközök között, simán átmásolva a .kdbx fájlt.

Így átálltam saját OpenGPG-s megoldásra, amit szintén CLI-ből használok, lényegében egy GPG AES256-tal titkostott text fájlban tartom a jelszavakat, amit saját scripttel kezelek, Androidon meg az OpenKeychain nevű ingyenes, reklámmentes alkalmazással nyitogatom. Sokkal spártaibb megoldás, de nekem elég, és ami fontos, hogy szikla szilárd megoldás, nincs függősége, sose törik el,  abszolút platformfüggetlen, nem tehetik fizetőssé, stb.. Windowson a Gpg4win kezeli ugyanezt az adatbázist. A titkosított szövegfájlt szintén kézzel másolgatom a rendszerek között. Ilyen minimalista megoldásnál nincs audit, online sync, böngészőplugin, stb.., minden kézi.

Gondolkoztam az alap pass parancs használatán, de az nem tűnt kényelmesnek, meg nem találtam hozzá passzentos mobilappot. Igazából nekem már password manager sem kéne, mióta a rendszereim újra titkosítva vannak, de ugye a mobilom stock Android, az nincs titkosítva, meg az Android biztonságilag egy nagy 0, így ott muszáj valami normális, megbízható password manager appot használni, meg néha Windowson is szükség lehet hasonlóra. A másik megoldás hasonló lenne, openssl-lel titkosítani, de ahhoz nem találtam kulturált mobilappot, meg windowsos klienst. OpenGPG-hez van rengeteg.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Érdekesek lehetnek az ilyen 'saját megoldások'... állatorvosi lónak.

Ugyanis az esetek 100%-ban kiderül róluk hogy több sebből elvéreznek a gyakorlatban.

 

A megoldásodat támogató magyarázat is eléggé összefüggéstelen, de a legvadabb talán ez:

Igazából nekem már password manager sem kéne, mióta a rendszereim újra titkosítva vannak

Szerinted milyen összefüggés van a password manager és a 'rendszertitkosítás' - bármit is értesz alatta - között??!

Ezek a jelszómenedzserek lényegében titkosított tárolók, adatbázisok. Ha az egész rendszer, egész lemez titkosítva van, az is felfogható egy titkosított tárolónak. A saját megoldásnak meg az az előnye, hogy egyedi, ha van is benne tegyük fel sérülékenység, egy támadó akkor se fog foglalkozni vele, túl sok munkát nem tesz bele, mivel csak egy jelszót nyer rajta. Ha tömeges megoldásról van szó, akkor sokkal motiváltabb lesz valaki a törésre. Plusz azért nem annyira egyedi megoldás ám, az OpenGPG egy teljesen általános megoldás, csak nem a default asszimetrikus titkosítással használom, hanem szimmetrikussal, amit szintén támogat a kezdetektől fogva.

Mint írtam, jelszómenedszer is csak azért kell végül nekem, mert néha kénytelen vagyok andoridos és windowsos szutyok elé is elülni.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Ezek a jelszómenedzserek lényegében titkosított tárolók, adatbázisok

ez csak egy a sok hasznos fícsör közül, amit egy ilyen program ad.

 

Ha az egész rendszer, egész lemez titkosítva van, az is felfogható egy titkosított tárolónak

Semmiképpen sem.

A 'rendszertitkosítás' - már ha a full diszk titkosításra gondolsz - használat közben mindig nyitva van, így az kizárólag a gép kikapcsolt állapotábanban nyújt védelmet.... szemben egy password manager titkosított adatbázisával, ami beállítás szerint auto lock-ol, időre, és/vagy eseményre (pl lid close)

 

A saját megoldásokban pedig természetesen nem a GPG a probléma, hanem a 'körétákolás'.

És akkor még nem beszéltünk az olyan elengedhetetlen fícsörökről, mint:

- paraméterezhető jelszó generálás,

- copy-paste lehetőség anélkül, hogy a képernyőn látszódna a jelszó

- adott idő után törli a vágólapról a jelszót

- stb, stb.

Ha jól rémlik, KeePass-ban nemhogy nem látszik a jelszó, de nem is dekódolja, amíg nincs rá szükség.

Autotype esetén vágólapra sem kerül.

Stb. stb-be tartozóan még fontosnak tartanám kiemelni:

- több adatbázis/felhasználó esetén biztosított a szinkronizáció

- vannak előzmények, ami például mentésből történő visszaállításkor kifejezetten hasznos lehet

Ebben igazad van elvi síkon, de hangsúlyozom, hogy elvi síkon. Pl. az én megoldásom a rendszer futásakor nyitva van, amikor fel van oldva a titkosított tároló és fut a rendszer, meg a jelszó is látszik a képernyőn, de gyakorlatilag mikor ez már probléma, akkor már a támadó olyan szinten fért fizikailag a géphez, hogy ezt látja, akkor már megevett a fene mindenféle védelmet. A vágólapról viszont törlődik nálam a jelszó, mert ahogy beillesztettem a weboldalba, utána bezárom ezt az egyedi megoldásom, és mivel nincs fent clipboard manager, az X szabályai szerint a kliens bezáródása után törlődik az is, amit a vágólapra tett. Random jelszót meg szintén saját scripttel generálok, ami ezen az egyszerű megoldáson alapul
cat /dev/random | tr -cd "[:print:]" | head -c $karakterszam; printf "\n"

Van erre kész CLI megoldás is, pwgen és hasonlók, de az megint függőség lenne, amit nem akarok. Ez a szép a shell scriptekben, hogy egyszerű core utils-szal egy csomó minden megoldható, függőségek és GUI nélkül. Ezt a jelszó látszódik a képernyőn dolgot el tudnám kerülni, egy saját grep + fzf scriptes megoldással, ami nem kiírja, hanem csendben vágólapra teszi egy időre, de nem látom akkora issue-nak, hogy bonyolítsam vele a dolgot.

Nálam a fő dolog az egyszerűség volt, hogy ne legyen GUI-s, ne legyen függősége, hordozható legyen mindenféle unixlike rendszeren, és egyéb platformon (mobil). Cserében valóban spártaibb egy kicsit, nem írja be a böngészőbe magától a jelszót, nincs online szinkronizáció, nincs audit, jelszó látszódik a képernyőn. De lényegében az igényeim se nagyok, csak egy jelszóadatbázisra van szükségem, azt is csak azért, hogy ne felejtsem el a jelszavakat, belépési adatokat, és legyen az egész titkosított, ne mindenkinek elérhetően készítsem be a lábtörlő alá, főleg, ha titkosítatlan rendszeren kell megnyitni. Cserében van előnye más profibb rendszerekhez képest, pl. nincsenek az adataim idegenek kezében a felhőben, ahol adatszivárgással megszerezheti bárki, meg mivel egyedi megoldás, nem éri meg senkinek támadni. Ennek ellenére mint írtam, a KeePass-szal sem volt semmi probléma, csak a függőségek néha, ha a CLI változat jobb lenne belőle, akkor a mai napig azt használnám, mert az is bevált.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

egyszer en is elgondolkoztam azon, hogy egy jelszoval titkositott txt-ben kene tarolni egy barhonnan ssh-n elerheto gepen tarolni a jelszavakat, de ugy voltam vele, ha a gep kompromittalodott akkor mar ugyis mind1 mert modosithatjak a toolokat vagy rakhatnak valami mekkoria dumpolast ra, es akkor nem er semmit az egesz. igy maradt a titkositatlan txt :)  persze ezek nem kritikus dolgok voltak, leginkabb szreverek konzol jelszavai, ami tavolrol ugyse hasznalhato, helyben meg ha mar ott ul elotte valaki maskepp is feltorheti stb. vagy olyan gepeke amit ugyis csak fix iprol es/vagy vpn-rol lehet elerni... de mar attertem a keepassx-re azota.

de gyakorlatilag mikor ez már probléma, akkor már a támadó olyan szinten fért fizikailag a géphez, hogy ezt látja

Elég szűk felhasználási körben gondolkodsz/dolgozol...

 

Én pl rendszeresen tartok előadást/meetinget/workshop-ot ahol ki van vetítve és/vagy meg van osztva (screen share) a képernyőm. Amiket ráadásul rögzytenek is általában...

Ilynekor azért gáz (lenne), ha azzal kéne szarakodnom, hogy "Sorry, I must stop sharing" mert előbogarászom a épp szükséges jelszót.

Aki ezt csinálja, az nem csak nem professzionális, de egészen biztosan ki volt már vetítve a jelszava közönség elé. 

 

De úgy általában is, a napi munkám során ~100 szor kell valahová jelszót/usernevet 'beírnom'... a KeePassXC - vagy hasonló képességű app - könnyű, gyors és biztoságos fícsörei nélkül el sem tudom képzelni hogy lehetne ezt megoldani.

 

Sőt, én már azon is szoktam csodálkozni, amikor látom hogy valaki (aki szintén IT security szakembernek modja magát) bepötyögi a jelszavát.

Mert olyankor 101%, hogy az biztosan nem megfelelő jelszó. vagy nem elég hosszú, vagy nem elég random, és várhatóan nem is egyedi. De általában mindez együtt.

 

Szóval tök jó hogy te barkácsolsz megadnak valamit, csak  másoknak ne javasold ezt mint szipiszupi megoldás. Mert nem az.

(Arról nem is beszélve, hogy komoly helyeken nem is engednék az ilyen barkács megoldásokat éles szerverre 'tenni', mert biztosan megszegsz vele 10 különböző IT security policy-t. és/vagy ott figyel majd a jelszavad a SIEM-ben gyűjtött logokban)

 

szerintem.

Annyit hozzátennék, hogy nézd meg a Keepass-nak az egyedi eszköztár gomb funkcióját, még egy dimenzióval ugrik a kezelhetőség. Nekem 3 féle gombom van:

- minden autotype-ra 1-1 gomb, így tipikusan egy kattintást meg lehet spórolni: PW (jelszó módosításkor hasznos), PW enter, USER tab PW enter, USER enter PW enter, + domain formában (user@domain domain\user)

- kdbx megnyitása: ha egy másik kdbx bejegyzésében benne van az URL-ben az útvonal (fájlrendszer), megnyitja

- ssh/rdp/http(s): url-ben levő címet megnyitja adott alkalmazásban

Rengeteg kotorászást/egerészést megspórol.

MAC-en miként használod a Keepass-t? Ősszel új gépet tervezek venni, de ahogy nézem nincs MAC OS-re, legalábbis friss. Küzdeni nincs kedvem, ellenben annyira kényelmes a Keepass Trigger/Eszköztár/Autotype hármas, hogy arról nem mondok le, inkább maradok Windows-on.

Ha érdekel az eszköztáram, elküldöm.

van egy ilyen cikk kezdeményem is (évek óta) draft állpotban...

csak se időm se kedvem mindegyiket legalább annyira kipróbálni, hogy értelmes technikai váleményt formálhassak róluk.

(meg aztán még lehet be is perelnének, ha nekik nem tetsző véleményt fogalmaznék meg a "profit orientált" szolgáltatásaikról)

Szerkesztve: 2023. 04. 17., h – 11:52

> The memory deallocation could be improved to not to contain secrets after the database is locked though.

ez mondjuk kicsit ehh...

> disclaiming warranties and/or liability, I can recommend the use

es ezert meg fizettek is vajon? :)

Jelenleg Google Drive-on tartott adatbázissal a sima KeePasst használom, aminek igen szimpatikus vonása, hogy amikor menteném az adatbázist, észreveszi, ha közben másik eszközről módosítottam, és összefésüli a változásokat. Számomra a doksijából nem derült ki, ezt a KeepassXC is tudja?