Una dintre pachetele însoțitoare din NixOS a prezentat o tehnică de atac care permite accesul la datele stocate pe partiții de disc criptate, în configurații ce nu necesită introducerea unei parole de deblocare la pornire, datorită plasării de informații pentru decriptare în TPM2 (Trusted Platform Module). Astfel de configurații sunt adesea utilizate pe servere sau stații de lucru multi-utilizator, unde este problematic să se introducă manual parola după fiecare repornire.
Atunci când se folosește o asemenea metodă de criptare a discurilor, decriptarea se realizează folosind o cheie suplimentară, stocată în TPM și furnizată doar după confirmarea stării inițiale a sistemului. Starea sistemului este salvată sub formă de hash-uri în registrele PCR (Platform Configuration Register) și este legată de semnătura digitală cu care este semnat bootloaderul, precum și de sumele de control ale bootloaderului și ale mediului de boot inițial (initrd). Accesul la cheia din TPM este disponibil doar atunci când toate registrele PCR asociate se află în aceeași stare ca atunci când a fost salvată cheia.
Se subînțelege că lanțul de încărcare al sistemului de operare este verificat prin UEFI Secure Boot și accesul la chei poate fi obținut doar dintr-o imagine initrd nemodificată. La o verificare reușită, discul se deblochează automat, dar accesul la datele decriptate se poate obține doar prin autentificarea în contul propriu din sistem. În cazul unei încercări de acces fără o încărcare verificată sau în cazul încercării de a modifica sau de a schimba initrd pentru a intercepta cheile, lanțul de încredere va fi încălcat, starea registrelor PCR se va schimba și TPM2 nu va furniza informațiile necesare pentru decriptare.
Metoda de atac publicată permite evitarea modificării conținutului initrd în configurațiile care nu identifică partițiile criptate LUKS. Se observă că includerea unei astfel de verificări a partițiilor nu este descrisă în toate instrucțiunile găsite pentru configurarea criptării discurilor, deoarece identificarea partiției complică semnificativ configurarea (este necesară implicarea unui înregistrator PCR suplimentar pentru a verifica cheia partiției și generarea initrd având în vedere valoarea sa). Exemplele de realizare a atacului sunt demonstrate pentru Fedora Linux în asociere cu instrumentele clevis și pentru NixOS în asociere cu systemd-cryptenroll. Pentru a efectua atacul, este necesar acces fizic la computer și capacitatea de a extrage unitatea de stocare.
Metoda se bazează pe faptul că atacatorul poate înlocui partiția criptată de bază existentă cu propria sa partiție criptată, creată cu același UUID și cu cheile de decriptare cunoscute de atacator. Mediul initrd va transmite controlul procesului init în partiția atacatorului. Deoarece conținutul initrd nu a fost modificat, starea TPM nu va fi afectată și, obținând controlul în propriul său mediu, atacatorul va putea folosi TPM pentru a decripta cheia partiției de bază.
Atacul constă în următorii pași:
- Extracția discului și efectuarea analizei datelor necriptate într-o altă unitate de calcul în partiția /boot. Identificarea informațiilor despre partiția criptată și UUID-ul acesteia din imaginea initrd, aflată în partiția /boot.
- Crearea unei copii de siguranță a primelor 64MB ale partiției LUKS criptate.
- Încărcarea celor 64MB menționați cu o imagine a propriei partiții de bază, criptată folosind o cheie cunoscută de atacator și având UUID-ul identic cu al vechii partiții.
- Restituirea discului în computerul inițial și încărcarea din partiția de bază înlocuită. Deoarece deblocarea automată folosind cheia din TPM pentru partiția înlocuită eșuează, initrd va solicita introducerea manuală a parolei.
- Obținerea cheii inițiale din TPM, utilizând metadatele despre TPM și tokenul criptat din antetul LUKS al vechii partiții.
- Reinstalarea discului pe computerul atacatorului, restaurarea părții suprascrise a partiției LUKS din copia de rezervă și utilizarea cheii inițiale obținute pentru accesul la date.
Sursa: opennet.ro
