Geçtiğimiz hafta, şifre tabanlı yöntemlere göre daha güvenli bir alternatif sunan yeni kimlik doğrulama yöntemi passkey'lerde "yeni bir saldırı yüzeyi" olduğu iddia edilen bir durum ortaya çıktı. Ancak yapılan incelemeler, bu saldırıların aslında yeni olmadığını ve passkey'lere özgü olmadığını gösteriyor. Bu ayrım önemli çünkü araştırma, son kullanıcılar ve güvenlik uzmanları arasında bu yeni mekanizmanın gerçekten güvenli olup olmadığını değerlendirirken kafa karışıklığına neden oldu.
Saldırının adı 'Pass-ta-key' olarak konuldu. Bu isim, 'passkey' kelimesi ile 'anahtarı ver' anlamına gelen 'pass the key' ifadesinin birleşiminden oluşuyor. Bir güvenlik firmasında araştırmacı olan Arie Olshtein, geçtiğimiz hafta paylaştığı bir blog yazısında, Windows'ta kötü amaçlı yazılımla enfekte olmuş bir makinede çalışan Google Parola Yöneticisi (GPM) uygulamasında depolanan tüm passkey'lerin nasıl elde edilebileceğini detaylandırdı. Bu durum, passkey'lerin yalnızca Windows makinelerdeki kriptografik anahtarlar ve diğer hassas bilgileri depolamak üzere ayrılmış, kilitli bir bölüm olan Güvenilir Platform Modülünde (TPM) saklandığına inanan birçok kişi için sürpriz oldu. Eğer passkey'ler TPM'de saklanıyorsa, Pass-ta-key'in uygulama tarafından depolanan tüm passkey'leri nasıl çıkarabildiği sorusu akıllara geldi.
Yerel passkey depolaması sorunsuz, bir istisna hariç
Cevap ise şu: Yaygın inanışın aksine, endüstri grubu FIDO Alliance tarafından yönetilen FIDO 2 spesifikasyonları, passkey'lerin TPM'lerde veya herhangi bir özel donanımda saklanmasını zorunlu kılmıyor. Aslında, passkey'leri yöneten çoğu platform ve üçüncü taraf yazılım, passkey'leri bu tür özel donanımlarda saklamıyor. Neredeyse tek istisna, kullanıcılara passkey'leri Windows TPM'de saklama seçeneği sunan Microsoft. Şirket bu tercihi genellikle kurumsal kullanıcılara öneriyor, bireysel tüketicilere değil.
Bu makale için araştırma yapmaya başlayana kadar fark etmediğim bir nokta, Windows dışındaki tüm platformların passkey'leri yerel olarak cihazda sakladığı. Bu yerel depolamaya geçiş, işletim sistemi ve üçüncü taraf uygulama geliştiricilerinin, passkey'lerin kullanıcıların tüm cihazlarıyla kolayca senkronize edilemezse yaygın kullanım şansı olmayacağını fark etmelerinden birkaç yıl önce gerçekleşti. TPM depolaması gerekliliği, senkronizasyonu imkansız hale getirdi. Yeni bir cihazın TPM'sine yüklemenin tek yolu her birini tek tek yeniden oluşturmaktı.
Nihayetinde, FIDO spesifikasyonlarının mimarları, passkey'lerin cihazlarda saklanmasının genel olarak güvenli olduğuna karar verdiler. Düşünce şuydu: Uygulama izinleri o kadar ayrıntılı ki, cihazdaki kötü amaçlı yazılımların passkey güvenliğinin kilit noktası olan özel anahtarlara erişme yeteneği olmayacaktı. Örneğin macOS, iOS ve Android çalıştıran bir cihazda yüklü olan kötü amaçlı yazılımların, işletim sisteminin kendisi sıra dışı bir sıfır gün açığıyla ele geçirilmediği sürece bu izolasyonu yenme yeteneği yok. Şu ana kadar bu varsayımlar gerçek dünyada doğru çıktı.
Tek istisna Windows. Diğer tüm platformların aksine, Windows uygulamaları genellikle kullanıcının tüm yetkileriyle çalışırken, diğer platformlar varsayılan olarak her uygulamanın yetkilerini kısıtlamayı teşvik ediyor. Windows, uygulamaları izole etmek için bazı sanal alan korumaları sağlasa da, kötü amaçlı yazılımlar gibi sanal alan dışında kalan uygulamaların, sanal alanda çalışan bir uygulamanın verilerine erişmesini engellemiyor. Yani sanal alan yalnızca tek yönde koruma sağlıyor. Diğer platformlardaki sanal alan teknolojileri çok daha koruyucu.
Bu da, Windows kötü amaçlı yazılımlarının ayrı bir uygulama tarafından kullanılan verilere erişme konusunda belirgin şekilde daha az sorun yaşadığı anlamına geliyor. Passkey mimarları, büyük ölçüde Windows'un geriye dönük uyumluluk nedenleriyle gerekli olan bu farkın bilincinde. Windows cihazında saklanan passkey'lerin bir kötü amaçlı yazılım enfeksiyonu durumunda ele geçirilmeyeceğinden emin olamayan birçok üçüncü taraf geliştirici, yeni bir tasarım seçti: passkey'leri bulutta, uçtan uca şifrelenmiş veri blokları halinde saklamak. Sunucu tarafında saklanan passkey'ler artık sadece Windows için GPM'nin değil, Microsoft işletim sistemi için 1Password ve Dashlane gibi diğer üçüncü taraf uygulamaların da kullandığı tasarım.
Basitleştirilmiş düzeyde, şöyle işliyor: Bir Windows GPM kullanıcısı bir siteye giriş yapmak için passkey kullanmak istediğinde, cihaz TPM'den bir kullanıcı ve/veya cihaz anahtarını alır ve Google'ın arka uç kimlik doğrulayıcısına sunar. Anahtarın sunulması, cihazın zaten kullanıcının Google hesabına giriş yapmış olmasıyla birleşince, Google sunucusunun kullanıcının giriş yapmak istediği siteye bir kimlik doğrulama onayı sunmasını tetikler. Onay, özel anahtarla imzalanır; bu anahtar Google sunucusunda şifrelenmiş biçimde saklanır. Bununla kullanıcı oturum açmış olur. Tekrar belirtmek gerekirse, Windows için diğer üçüncü taraf uygulamaların çoğu da aynı şekilde çalışıyor.
Buna karşılık, diğer platformlar için aynı uygulamalar passkey'leri yerel olarak cihazda saklıyor. Bir kullanıcı passkey kullanarak giriş yapmak istediğinde, kimlik doğrulama onayını buluttaki cihaz değil, yerel cihaz sunuyor. Özel anahtar tarafından imzalanan bu onay, yerel cihazda da şifrelenmiş biçimde saklanıyor.
Cihazınız enfekte olduğunda, tüm bahisler geçersizdir
Pass-ta-key saldırılarındaki kötü amaçlı yazılım, Google hesabına erişimini ve bazı durumlarda TPM'de saklanan kullanıcı veya cihaz anahtarını kullanarak gizli passkey'leri ele geçiriyor. Üç saldırı varyantının en güçlüsü, enfekte olmuş Windows makinesinin bir iPhone gibi davranmasını sağlıyor. Bu, GPM'deki bir senkronizasyon yeteneğini tetikliyor ve kullanıcıların depolanan tüm passkey'leri yeni bir cihaza aktarmasına olanak tanıyor. Anahtarlar artık enfekte Windows cihazına aktarılmış oluyor.
Olshtein, Pass-ta-key'i passkey ekosistemindeki saldırı yüzeyini hedefleyen "yeni" bir saldırı olarak tanımladı. Gerçeklik ise daha incelikli. Enfekte olmuş bir Windows makinesinin diğer hassas uygulamalara tam olarak kimlik doğrulaması yapmış olması durumunda bu saldırının riskleri büyük ölçüde aynı olurdu. Klavye tarafındaki saldırgan muhtemelen kimlik bilgileri yönetim uygulamasındaki mekanizmaları etkinleştirerek bir siteye giriş yapabilir veya tüm şifreleri indirebilirdi.
Bu risk her zaman mevcuttu ve bazı kişilerin parola yöneticilerini kullanmayı güvensiz görmesinin nedeni budur. Olshtein'ın yazısına dayanarak, GPM'nin 1Password gibi parola yöneticilerinde bulunan, diğer işlemlerin belleğini okumasını kısıtlamak için işletim sistemi API'lerini çağırmak gibi bazı korumalardan yoksun olabileceği mümkün. Genel olarak konuşmak gerekirse, enfekte bir cihaza hassas bir hesapla giriş yapıldığında işlerin bittiği evrensel olarak kabul ediliyor. Başka bir deyişle, Pass-ta-key, bilgisayar güvenliği olduğu sürece var olan bir gerçeklik. Burada yeni bir şey yok ve saldırı yüzeyi, erişim için kimlik doğrulaması gerektiren herhangi bir veriye kadar uzanıyor.
Passkey'lerin amacı, kimlerin oltaya getirilebileceği veya sunucu ihlalleriyle elde edilebilecek paylaşılan bir sırrı ortadan kaldırmaktır. Passkey'ler, bunları depolayan cihazlara yönelik fiziksel saldırılara dayanmak üzere tasarlanmamıştır. Bir Windows cihazının ele geçirildiği durumlarda Pass-ta-key'in anahtarları çıkarabilmesi şaşırtıcı değil. Araştırma yeni olmasa da, bir cihazın -özellikle Windows çalıştıran bir cihazın- bir hesaba giriş yaparken ele geçirildiği takdirde, orada depolanan tüm verilerin alınmaya hazır olduğunu kullanıcılara anlatmaya yardımcı olacaksa yine de faydalı olacaktır.