Az egyik kísérőcsomag a NixOS-ban bemutatta azt a támadási technikát, amely lehetővé teszi az adatvédett lemezképekhez való hozzáférést, olyan konfigurációkban, amelyek nem igényelnek jelszót a feloldáshoz rendszerindításkor, a TPM2 (Trusted Platform Module) által tárolt dekódolási információk révén. Az ilyen konfigurációkat gyakran használják szervereken vagy többfelhasználós munkaállomásokon, ahol nehéz a kézi jelszóbeírás minden újraindítás után.
Az ilyen típusú lemezmeghajtók titkosítási módszere alkalmazásakor a dekódolás egy további kulcs segítségével történik, amelyet a TPM tárol, és amelyet csak a rendszer eredeti állapotának megerősítésekor ad ki. A rendszer állapota hashek formájában kerül tárolásra a PCR (Platform Configuration Register) regiszterekben, és digitális aláíráshoz van kötve, amely a betöltőt hitelesíti, valamint a betöltő és az induló betöltési környezet (initrd) ellenőrző összegeihez.
Feltételezhető, hogy az operációs rendszer betöltési lánca az UEFI Secure Boot segítségével van ellenőrizve, és a kulcsokhoz csak a módosítatlan initrd képből lehet hozzáférni. A sikeres ellenőrzés esetén a lemez automatikusan feloldódik, de a dekódolt adatokhoz való hozzáférés csak a felhasználói fiókba való belépés után lehetséges. Ellenőrizetlen betöltés esetén, vagy ha megpróbálják megváltoztatni vagy módosítani az initrd-t a kulcsok elkobzásának céljából, a bizalmi lánc megszakad, a PCR regiszterek állapota megváltozik, és a TPM2 nem adja ki a dekódoláshoz szükséges információkat.
A közzétett támadási módszer lehetővé teszi, hogy ne kelljen módosítani az initrd tartalmát az LUKS titkosított partíciókat nem azonosító konfigurációkban. Megjegyzendő, hogy az ilyen partíciók ellenőrzésének aktiválása nem szerepel az összes megtalált lemeztitkosítási beállítási útmutatóban, mivel a partíció azonosítása jelentősen bonyolítja a konfigurációt (további PCR regiszter szükséges a partíció kulcsának ellenőrzéséhez és az initrd generálásához annak értékével figyelembe véve). A támadás végrehajtásának példáit a Fedora Linux esetében a clevis eszközökkel, valamint a NixOS esetében a systemd-cryptenroll-lal mutatják be. A támadás végrehajtásához fizikális hozzáférés szükséges a számítógéphez és a tároló kiemelésének lehetősége.
A módszer azon alapul, hogy a támadó helyettesítheti a meglévő, titkosított gyökérpartíciót egy saját titkosított partícióval, amely ugyanazzal az UUID-azonosítóval és a támadó által ismert dekódoló kulcsokkal készült. Az initrd környezet átadja az irányítást a támadó által kezelt init folyamatnak. Mivel az initrd tartalma nem változott, a TPM állapota nem sérül, és a támadó a saját környezetében használhatja a TPM-et az eredeti lemeztitkosítási kulcs dekódolására.
A támadás a következő lépésekből áll:
- A lemez kiemelése és az arra az ún. számítógépre történő átkonvertálása, ahol a /boot partíción található titkosítatlan adatok elemzése végezhető. Az információk meghatározása a titkosított partícióról és annak UUID-azonosítójáról az initrd képből, amely a /boot partíción található.
- A titkosított LUKS-partíció első 64 MB-jának biztonsági másolatának létrehozása.
- A megadott 64 MB helyettesítése egy képpel, amely saját gyökérpartíciót tartalmaz, titkosítva a támadó által ismert kulccsal, és az UUID-azonosítója megegyezik a régi partícióéval.
- A lemez visszahelyezése az eredeti számítógépbe és a módosított gyökérpartíción való indítás. Mivel a TPM-ből származó kulcs automatikus feloldása a módosított partíció esetében nem sikerül, az initrd kérdést küld a jelszó kézi beírására.
- Az eredeti kulcs lekérése a TPM-ből, a TPM metaadatok és a régi partíció LUKS-élből származó titkosított token felhasználásával.
- A lemez áttétele a támadó számítógépére, a felülírt LUKS-partíció részének helyreállítása a biztonsági másolatból, és a megkapott eredeti kulcs felhasználása az adatok elérésére.
Forrás: opennet.ru
