23. helmikuuta 2024

Windows Hello PIN-koodin haavoittuvuus

Windows Hello mahdollistaa Windows-tietokoneelle kirjautumisen esim. PIN-koodia, sormenjälkeä tai kasvokuvaa käyttäen. Tällöin Windows käyttää tietokoneen TPM-sirua käyttäjätietojen suojaukseen ja menetelmä on periaatteessa yhtä turvallinen kuin TPM siru on. Aiemmin on ollut löydöksiä, joissa Windows Hello hyödyntävät sormenjälkilukijat ovat olleet haavoittuvaisia ja mahdollistavat hakkereiden kirjautumisen paikallisesti koneelle sormenjälkilukijoiden haavoittuvuuksia hyväksikäyttäen.

Nyt löysin itse eräällä tietokoneella Windows Helloa testatessani haavoittuvuuden sen PIN-koodin käytöstä, joka on niin lapsellinen, että en tiedä, pitäisikö itkeä, vaiko nauraa: Windows paljastaa käyttäjän valitseman PIN-koodin pituuden kenelle tahansa, joka koettaa näpytellä ko. PIN-koodia tietokoneeseen – yksinkertaisesti hyväksymällä tai hylkäämällä PIN-koodin, kun oikein pituinen PIN-koodi on näpytelty!

Kokeile toki itse: Näpytä sattumanvaraisia numeroita PIN-koodikyselyyn ja laske päässäsi, miten monetta numeroa näpytät. Siinä kohtaa, kun Windows ilmoittaa PIN-koodin olevan oikea tai väärä, olet löytänyt oikein pituisen PIN-koodin sille käyttäjälle ja siihen tietokoneeseen. Luonnollisesti tämä helpottaa oikean PIN-koodin keksimistä huomattavasti ja on täten merkittävä haavoittuvuus Windows Hello PIN-koodisysteemissä.

Pakosta toki alkaa miettimään, MITEN Windows voi tämän edes tehdä? Jos PIN-koodi syötetään ja varmistetaan vain TPM-sirussa, miten Windows voi tietää, että olet syöttänyt “oikeanmittaisen” PIN-koodisi sille ja osaa syöttää sen TPM:ään varmistusta varten? Jos PIN-koodisi on 123456, ei Windows voi lähettää ensin “1”, sitten “12”, sitten “123” jne. TPM sirulle tai se laukaisisi TPM-sirun turvamekanismit, joten Windowsin pitää jollakin tavalla jonnekin kiintolevylle tallentaa oikeasti joko PIN-koodisi tai ainakin sen pituus. Mikä taas on räikeästi vastoin koko turvallisuuskonseptia, että vain ja ainoastaan TPM-siru säilöö ja tietää PIN-koodisi.


PS. Kukaan ei ole vieläkään kyennyt selittämään, miten Windows Hello suojaa EFS salaisen avaimesi, jos käytät sitä Windowsiin kirjautuessasi…salasanaa käyttäessäsi salasanastasi luodaan salausavain, jolla ko. EFS-(salainen)avain salataan ja avataan…mutta mikä ja miten tarkkaan ottaen salaa ko. EFS-avaimen, jos käytetäänkin vain (ja/tai) PIN-koodia (ja/tai) biometristä tunnistetta? TPM? Ei koko em. avain sinne mahdu, puhumattakaan esim. lukuisien eri käyttäjien EFS-avaimista. Ja jos EFS-avain salataan jollain TPM:n omalla avaimella ja tallennetaan kopio kiintolevylle, niin silloinhan kenellä tahansa käyttäjällä jolla on pääsy TPM:n avaamiseen (omalla Windows Hello PIN-koodillaan) on de facto pääsy kaikkien käyttäjien EFS-avaimien avaaviin avaimiin siellä TPM sisältä. Eli miten on? Onko tämäkin homma mokattu Microsoftin toimesta?


Edit:
Surkuhupaisaa, että KOLME PÄIVÄÄ KIRJOITUKSENI JÄLKEEN Microsoftin kehittäjä Raymond Chen otti asian puheeksi blogissaan ja vakuutteli, että kyseessä ei ole tietoturvahaavoittuvuus. Huppista. Eli taas löysin haavoittuvuuden ja taas se jätetään huomioimatta ja kertomatta, kuka sen kertoi. Noh, tämä on tämmköstä.