11. marraskuuta 2022

Toinenkin potentiaalinen Bitlocker haavoittuvuus Windowsissa!

Kirjoitin kesällä potentiaalisesta haavoittuvuudesta Bitlocker-salauksessa. Nyt olen löytänyt toisenkin potentiaalisen haavoittuvuuden siitä, eikä tietenkään tälläkään kertaa se kiinnosta varmasti ketään. Mitäpä sillä niin väliä, että maailman yleisimmin käytetty suojaus vuotaa, ei kait se mitään, samapa tuo. Mutta onpahan taas kerran varoitettu ja voitte sitten netin syövereistä myöhemmin taas tarkistaa, kuka oli oikeassa tässäkin asiassa.

Haavoittuvuus on varsin julkeakin jopa: Bitlockerin "protectors" eli esim. PIN voi vaihtaa tietämättä vanhoja "protectoreita". Tai siis voi vaihtaa, jos osaa tehdä sen oikealla tavalla. Mikäli koetat vaihtaa esim. PIN-koodin ohjauspaneelin Bitlocker-työkalun kautta, sinun pitää syöttää vanha PIN, kuten kuuluukin. Mutta, jos käynnistät komentorivityökalun järjestelmänvalvojana ja syötätkin siihen komennon (ilman lainausmerkkejä) "manage-bde -changepin C:" niin saat syötettyä sukkana sisään uuden PIN-koodin C-asemallesi tietämättä vanhaa. Samalla konstilla voit vaihtaa muutkin "protectors" tietämättä vanhoja.

Tällä kikalla voi kuka tahansa järjestelmänvalvojan oikeudet omaavat paitsi tehdä kiusaa lukitsemalla koneen jatkossa muilta vaihtamalla "protectors" joksikin, jotka vain hän tietää, mutta myös paljon vakavampaa. Oletetaanpa vaikkapa, että ylläpitäjä on suojannut koneen Bitlockerilla ja käynnistää/käynnistyttää sen vaikkapa AD:n kautta tai fyysisesti itse menemällä paikalle vaikkapa työpäivän aluksi. Tällöinhän homma on todella turvallinen, koska tumpeloille käyttäjille ei anneta mahdollisuutta sössiä asiaa millään muotoa, vaikka miten haluaisivatkin ja koneet ovat turvassa, jos joku vaikkapa varastaa ne (paitsi toki, jos ne ovat läppäreitä ja ne varastetaan lukitsemattomina päällä ollessa). Mutta ei enää. Senkun järjestelmänvalvojan oikeudet omaava käyttäjä menee ja muuttaa "protectors" haluamakseen ja noh, niin, se siitä sitten.

Koko ajatus siitä, että voit vaihtaa vanhoja salasanoja tai muita turvallisuustekijöitä tietämättä vanhoja, on käsittämättömän typerää, lapsellista mokata! Vuosikymmenet näissä on ollut - hyvästä syystäkin - periaatteena se, että jos haluat ne vaihtaa muuksi, sinun on tiedettävä ne vanhat tai sitten koetettava jotain hankalaa palautussysteemiä. Nyt Microsoft on tämäkin periaatteen romuttanut näillä seurauksilla ja mahdollistaa näiden turvallisuustekijöiden tehokkaan kiertämisen, jos järjestelmänvalvojan oikeudet omaava on sattumalta kirjautunut sisälle koneelle.

Joo ja tiedän, heti alkaa tulla jollakin pakottavaa tarvetta ns. selitellä tätä parhain päin, esim.

  1. "No jos on järjestelmänvalvojana sisällä voi tehdä muutakin pahaa!"
    - Niin voi, olenko väittänyt, että ei voisi? Niin? NIIN? Luitko, mitä kirjoitin?

  2. "Järjestelmänvalvojan pitääkin voida muuttaa asioita miten haluaa!"
    - Ööh, no ei todellakaan missä tahansa tilanteessa miten tahansa ja ilman tunnistautumista. Huomaa, että komentorivikehoitteen käynnistäminen järjestelmänvalvojan oikeuksin omaavalla tilillä ei edellytä järjestelmänvalvojan salasanan uudelleensyöttämistä (oletusasetuksin).

  3. "No mitä sitten! Voi asentaa troijalaisenkin! Tai muuta! Mitä väliä!?!"
    - Bitlocker toimii käyttöjärjestelmän alapuolella. Se lukittautuu UEFI ja secureboot -ominaisuuksiin ja varmistaa, että jos vaikkapa kiintolevylle on ujutettu rootkit-ohjelmisto, Bitlocker pysyy suljettuna, eikä avaa tietokonetta. Nyt tämän voi käytännössä kiertää tällä konstilla, koska Bitlockerin määrityksiä voi muuttaa ilman, että tietää vanhoja määrityksiä ja ilman, että edes (oletusasetuksilla) tietää järjestelmänvalvojan salasanaa (jos on kirjautuneena sisälle järjestelmänvalvojana).

  4. "Microsoft ei pidä tätä vakavana, koska ei ole korjannut sitä, joten..."
    - Ihan vitun sama minulle, Microsoft ei monia muitakaan mokia ole pitänyt vakavana, ei esimerkiksi yli 20v sitten löytämääni "mokaa", että Windows2000 EFS:n salainen avain ei ollut käyttäjän salasanasta luodun salausavaimen kryptaamana, vaan heilui muutenvaan irrallaan kiintolevyllä ja aikoinaan resetoimalla millä tahansa keinolla käyttäjän salansanan, kykeni kirjautumaan ko käyttäjänä sisälle ja sitä kautta(kin) saamaan tuon salaisen avaimen haltuunsa ja purkamaan käyttäjän sillä salaamat tiedostot. Microsoft korjasi tämän massiivisen mokansa sitten seuraavissa Windowsin versioissa hissukseen.

  5. "Ota yhteyttä Microsoftiin, tee bugiraportti..."
    - En ota, en tee, haistakoot vitut, koska eivät ole aiemmistakaan minulle krediittiä antaneet, eivätkä välittäneet vittuakaan. Käyttökööt kaikki hakkerit hyväkseen tätäkin aukkoa mielinmäärin, koska sen Microsoft on ansainnut omalla politiikallaan.

 

Päivitetty 20.11.2022:

Tuli mieleeni, että haavoittuvuus on ilmeisesti vakavampi, kuin aluksi luulin. Lyhyesti sanottuna ja hieman mutkia suoriksi vetäenhän, Bitlocker + TPM + PIN toimii siten, että TPM pitää lukittuna salaista avainta ja vapauttaa sen vain, mikäli Secure Boot onnistuu JA henkilö näpyttää PIN-koodinsa, jolla TPM vapauttaa sitten salausavaimen kiintolevyn salauksen purkamiseksi. Tämä kiintolevyn salausavain jää sitten tietokoneen muistiin käytettäväksi ja TPM salaisuus pysyy TPM:ssä. Okei. No, jos kerran tuota TPM pin-koodia voidaan muuttaa ilman, että vanhaa tarvitsee tietää, tämähän tarkoittaa, että TPM salaisuus ei olekaan suojattuna kunnolla TPM:ssä, eikö? Koska jos se olisi, eihän siihen pääsisi käsiksi/muuttamaan sitä ilman, että tietää vanhan PIN-koodin, eikö? Tuo salaisuushan ei päällekirjoitu uudella siitä, että PIN-koodia muutetaan, vaan salaisuus pysyy, sen suojaava PIN koodi vain muuttuu. Toisin sanoen, ilmeisesti TPM on siis suojaamattomana koko sen ajan jälkeen, kun PIN-koodi on kerran näpytetty sinne. Näinhän ei pitäisi olla. Tässä on nyt jotain todella hämärää ja outoa ja ilmeisesti siis Bitlockerin lisäksi TPM tuntuu olevan siis vaarantunut nyt jollain oudolla syyllä, koska muuten kuvailemani skenaario ei voisi olla mahdollinen.





4 kommenttia:

  1. Mitä järkeä tuota Bitlockeria on ylipäätään käyttää? Veracrypt toimii useammalla alustalla, eikä sisältäne viranomaisten (NSA) lisäämiä takaovia.
    Bitlockerin "tietoturva" lienee samaa tasoa kuin nämä Applen, Samsungin ym. älylaitevalmistajien hienot "salaukset". Siis suljetun koodin "salaukset", jotka ovat käytännössä Suomessakin polpon toimesta murrettavissa käden käänteessä, sopivilla työkaluilla.

    VastaaPoista
  2. Tuossa on väärinymmärrys, se TPM-chipin ja käyttiksen välinen suhde ei perustu PIN-koodiin, vaan ihan kunnon PKI-pohjaiseen varmennukseen. Eli TPM:n alustuksessa käyttöjärjestelmä ja TPM alkavat luottaa toisiinsa.

    PIN-kyselyn hoitaa käyttöjärjestelmä tai bootissa bootloader. Kun PIN on syötetty, käyttöjärjestelmä pyytää TPM:ää antamaan kryptausavaimen.

    PIN-koodilla ei ole mitään suoraa yhteyttä TPM-siruun vaan käyttöjärjestelmä (tai bootloader) on aina välissä. Bootloader-aikaisilla PIN-kyselyillä estetään "automaattinen" kryptonpurku jotta DMA:n kautta ei voida saada kryptoavaimia talteen.

    VastaaPoista
    Vastaukset
    1. Ei pidä paikkaansa. Jos näin olisi, voisi PIN-jutun ohittaa millä tahansa koodinpätkällä, joka vain nappaa PKI-jutut käyttöjärjestelmältä eli kiintolevyltä (nehän eivät voi olla salattuna tai käyttöjärjestelmä ei niitä voisi käyttää sitten) ja syöttää ne TPM:lle. Eli PIN-jutun merkitys ja suoja olisi käytännössä olematon. Toki kun PIN on kerran syötetty, TPM jättää itsensä auki kunnes järjestelmä sammutetaan, mikä on se juuri se ongelman ydin.

      Otappa selvää miten asia toimii, se on kyllä dokumentoitu.

      Poista
    2. Lue vaikka https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp1054.pdf

      PIN ei ole mitään muuta kuin tapa suojata TPM:llä olevaa SRK:ta (storage root key). Sillä puolestaan salataan VMK. VMK:lla puolestaan on salattu se varsinainen salausavain jolla dataa kirjoitetaan ja luetaan.

      Kun teet tuon --changepin-operaation, VMK *on* jo muistissa ja TPM-chipin kannalta käyttis on luotettavasti auki. Käyttis sanoo TPM:lle, että salaapa tämä VMK (jonka käyttis tietää) uudella SRK:lla ja tällä pinnillä.

      Sivulla 14 tuo väännetään vielä erikseen (joskin siinä tapauksessa tilanteessa jossa PIN otetaan käyttöön, mutta eroa ei ole resettitilanteeseen).

      Works as designed.

      Poista