Hertzbleed nedir, ne onu bu kadar eşsiz kılar?

Son zamanların en karmaşık ama bir o kadar da anlaşılması kolay bilgi güvenliği araştırmalarından biri

Haziran ayında üç ABD üniversitesinden araştırmacılar, CPU frekansındaki değişikliklerin üzerindeki yüke bağlı olmasını (modern CPU’ların standart davranışı) kötüye kullanan gerçek bir saldırıyı anlatan bir makale yayınladı. Hertzbleed adı CPU frekansının hertz birimiyle ölçülmesinden geliyor. İsim, frekanstaki değişikliğin veri sızıntısına yol açmasına işaret ediyor.

Bu yöntem bir donanım saldırısı olarak, yani donanımdaki güvenlik açıklarını ya da diğer belirli zayıflıklıkları kötüye kullanan bir saldırı olarak sınıflandırılabilir. Bu türde birçok saldırı olsa da neredeyse hepsi hedef bilgisayara veya belirli bir çipe doğrudan erişim gerektiriyor. Ancak Hertzbleed uzaktan çalışabiliyor!

Büyük ilgi gören araştırma karmaşık olmasına rağmen basit ve anlaşılır bir dille özetlenebiliyor. Ancak konunun inceliklerini anlayabilmek için biraz arkaplan bilgisi gerekli. Bu yüzden hem Hertzbleed’in basit bir açıklamasını hem de daha karmaşık (fakat yine de süslü grafikler veya anlaşılması güç hesaplamalar içermeyen) bir açıklamasını yayınlamaya karar verdik.

Artık alışıldığı üzere Hertzbleed’in kendi sitesi ve logosu var. Logo, güvenlik açığının özünü, yani CPU frekansı değiştirmenin sızıntılara yol açmasını yansıtıyor. Kaynak.

 

Basit açıklama

Modern CPU’lar güçten tasarruf etmek için sürekli aynı frekansı sürdürmezler. Bunun yerine frekans (ve CPU voltajı) CPU’nun yüküne göre otomatik olarak ayarlanır. Görevler az olduğunda frekans çok düşük olabilir (örneğin nominal 3,2GHz’in yerine 900MHz). Çok fazla görev varsa bir veya tüm CPU çekirdeklerinin frekansı taban çizgisinin üstüne yükseltilebilir. Pratikte frekans değişiminin tek kriteri yük (yani görevlerin sayısı ve karmaşıklığı) değildir. Örneğin, CPU fazla ısındığında da frekans düşürülebilir.

Araştırmacılar bu yerel fonksiyonu kullanarak CPU’nun bir veri şifreleme programı kullanırkenki durumunu ölçmeyi ve böylece hassas bilgileri çalmayı başardı. Modern bir şifreleme algoritmasının belirli verileri işlerken CPU’yu frekans yükseltmeye “zorlayan” bir özelliğini buldular. Frekans arttıkça veriler daha hızlı işlenir ve saldırı altındaki bilgisayar isteklere daha hızlı yanıt verir. Araştırmacılar yanıt süresini ölçerek gizli şifreleme anahtarını yeniden oluşturabilmeyi başardı. Bu anahtarla teorik olarak sanal bir özel ağda hedef sistem tarafından diğer bilgisayarlarla paylaşılan verileri ele geçirip şifresini çözebilirler. Üstelik tüm bunları anahtarın “çalındığı” fark edilmeden yapabilirler.

Hertzbleed donanım saldırıları fikrini yan kanal denen şeylerle geliştiriyor. Aynı zamanda potansiyel kurbana ağ üzerinden istek göndererek uzaktan veri çalma olasılığını da teorik olarak mümkün kılıyor. Ancak şimdilik bu yalnızca modern CPU’larda karmaşık güvenlik açıkları ararken gerçekleştirilen tamamen teorik bir egzersizden ibaret. Ne var ki gelecekte bu tür saldırıların “basitleşmesi” olası.

Biraz daha karmaşık bir açıklama

Yan kanal saldırıları tek bir çipin veya bütün bilgisayarın faaliyetlerini izleyerek dolaylı yoldan gerçekleştirilir. Klasik yan kanal saldırı yöntemi, çipin tükettiği elektrik akımındaki değişiklikleri gözlemlemeyi gerektirir. Örneğin, çip gizli bir anahtar kullanarak veri şifresi çözmekle meşgulse bazı durumlarda güç tüketimindeki değişiklikler anahtarı yeniden oluşturmak için kullanılabilir.

Yan kanallar hem yazılım hem donanım tabanlı olabilir. Ünlü Spectre çalışması, hassas bilgileri çalmak için spekülatif yürütme özelliklerini kötüye kullanan, doğrudan CPU’nun içerisinde yer alan bir yan kanal kullanır. Dahası, bazen CPU güç tüketimini izlemek için bilgisayara voltmetre takmaya da gerek kalmaz çünkü çoğunlukla entegre voltmetreleri bulunur. Intel işlemcilerin ortalama güç tüketimini izleyen bir sistem kullanarak Hertzbleed’le ilişkili bir saldırı geliştirildi bile.

Şimdi CPU frekansının dinamik ayarlarına bir bakalım. Bu, DVFS, yani dinamik voltaj ve frekans ölçeklendirme tekniğiyle mümkün oluyor. Optimal çalışma koşullarını sağlamak için (düşük yükte düşük tüketim, en üst kapasitede stabil faaliyet) gerçekten de frekansın yanında CPU voltajı da değişiyor. Araştırmacılar Intel işlemcilerde nasıl çok sayıda DVFS deneyi yürüttüklerini ayrıntılı olarak açıklamış (Intel bu teknolojiye Turbo Boost diyor). CPU’ya gözardı edilebilir miktarda yük yükleyip (temel aritmetik hesaplamalar) frekansın nasıl değiştiğini gözlemlemişler. Birden fazla patern ortaya çıkmış; mümkün olduğunca özetlemek gerekirse CPU frekansı, bir hesaplama verisi setiyle artarken bir başkasında artmamış. Ayrıca, artan frekans daha hızlı hesaplamalara, dolayısıyla da daha hızlı sonuca yol açmış.

Tüm bunlarla ilgili üçüncü bir teknoloji terimine bakalım: Sabit zamanlı programlama. Bu kavram bir programa şifreleme algoritması uygularken önem kazanıyor. Girdi olarak verilen belirli bir ifadenin şifreli halde çıktısını veren bir programımız olduğunu varsayalım. Veri girebiliyoruz ama gizli şifreleme anahtarını bilmiyoruz. Bu anahtarı yürütme süresini gözlemleyerek belirleme çalışıyoruz, çünkü fonksiyonun yürütme süresi girilen veriye bağlı. Bu durum, girilen sayı dizisi gizli dijital koda yakın olduğunda biraz daha farklı bir tepki vererek “sıcak/soğuk” ipuçları veren kilitli bir kasayı açmaya çalışmaya benzetilebilir.  Şifreleme algoritması uygulayan programların çoğu, anahtarı bu yolla belirlemeye yönelik girişimleri önlemek için bir koruma mekanizmasına sahiptir, sabit zamanlı programlamanın prensibi budur.

Hertzbleed çalışmasının en önemli sonucu, CPU frekansının dinamik ayarlanmasının sabit zamanlı programlama prensibini, yani şifrelemede zamanın değişmemesi kuralını bozması. Yazarlar bundan nasıl faydalanılabileceğini de gösteriyor. Bunun için gerçek zamanlı veri şifreleme yazılımına sahip bir sisteme karakter dizisi beslemesi yapıyorlar, ardından program şifreyi çözmeye çalışıyor. Girdiler bir saldırganın şifreleme anahtarını yeniden oluşturmasına izin verecek şekilde seçiliyor. Dahası, anahtar bir yan kanal üzerinden alınıyor, yani veri sızıntısı CPU frekansındaki, dolayısıyla program yürütme ve saldırganın isteğine yanıt verme süresindeki bir değişiklik sonucu oluşuyor.

Eksik sonuçlar

Hertzbleed ile ilgili “biraz daha karmaşık açıklamamızda” araştırmacıların sunduğu bilginin yaklaşık %0,05’ini kapsayabildik. Çalışma biçimiyle ilgili sayısız başka nüans var. Özellikle belirtmek gerekirse yanıt süresindeki veya frekanstaki değişiklikler üzerinden sızıntıyı mümkün kılmak için gerekli koşulları yaratmak üzere SIKE anahtar kapsülleme algoritmasının bir özelliğini kullandılar. Bu, yukarıda bahsettiğimiz gibi, saldırılan yazılımda önemli bilgilerin çalınmasını sağlamak için doğru koşulların oluşmasını gerektiren Spectre saldırısına benziyor. Açıkçası çalışmanın sonuçlarına bakarak güvenlik açığının CPU’da mı yoksa programda mı olduğunu tartışmasız biçimde söyleyebilmek mümkün değil.

Ayrıca, uygulamanın göze batan bir yönünden de bahsetmemiz gerekiyor: Araştırmacılar gerçek ve pratik (teorik değil) bir saldırı düzenlemiş olsalar da bunu kontrollü koşullar altında gerçekleştirdiler. Girdi başına yanıt süresindeki değişiklik daima sabitti. Peki ya CPU aynı anda yanıt süresini etkileyen ve veriyi daha gürültülü hale getiren başka görevler de yürütüyor olsaydı? Son olarak, bu ideal koşullar altında bile şifreleme anahtarının yeniden oluşturulması (iki farklı deneyde) 36 ve 89 saat sürdü! Bu süre zarfında şifreleme programına saniyede binlerce istek gönderildi; yazılım ve donanım operasyondaki tüm gerekli özelliklerin sızıntıyı ortaya çıkarmak üzere uyumlanmasını sağlamanın tek yolu buydu. Bu çok uzun bir süre.

Bu yüzden çalışmaya verilen tepkiler muğlak. Bir yandan, güvenlik açıklarına her zamanki gibi tanımlayıcılar atandı: Intel için CVE-2022-23823, AMD için ise CVE-2022-24436. Ne de olsa sorun CPU’larda gibi görünüyordu. Ancak Intel ve AMD, etkilenen sistemler için (Intel’de 8. ila 11. nesil CPU’lar) herhangi bir güncelleme yayınlama planları olmadığını açıkladı. Aslına bakılırsa SIKE algoritmasındaki değişiklik, gösterilen bu saldırıyı imkansız hale getiriyor. Şifreleme sistemlerindeki unsurlardan biri olarak SIKE’yi kullanan Microsoft ve Cloudfare kendi yazılımlarını güncelleri.

Yine de çalışmanın önemi büyük. 2018’deki Spectre gibi, bu yeni sınıf saldırılarla yine karşılaşacağız. CPU frekansının dinamik ayarı üzerinden veri sızıntısının bir örneği gösterilebiliyorsa diğer örnekler de arkadan gelecektir. Ayrıca çalışma kriptograflar için de önemli. “Kuantum sonrası kriptografi çözümü” unvanına aday olan SIKE oldukça yeni bir algoritma. Yan kanal saldırılarına karşı sağlamlığı analiz edildi ve oldukça dayanıklı olduğu görüldü. Ancak Hertzbleed çalışması yeni opsiyonların ortaya çıktığını gösteriyor.

Sonuçta bu tür çalışmalarda genellikle olduğu gibi bu saldırı “keşfedilmiş” olsa da gerçek hayatta eksiksiz ve başarılı bir şekilde uygulanamıyor. Hacklenmeye karşı hassas olan CPU ve program geliştiriciler bu çalışmadan kendilerine göre sonuçlar çıkarıp gerçekte herhangi bir şey çalmak mümkün hale gelmeden önce gerekli değişiklikleri yapacaklar. Ancak bu veya başka araştırmacıların bir sonraki sefer saldırganların şifrelenmiş ağ trafiğine sızmasına ya da anonim kalarak şifreyi kırmasına olanak veren başka bir şey bulmaları olasılıklar dahilinde. Bu çalışmada gösterilenlerin o boyutta nasıl olabileceğini hayal etmek mümkün. Fakat böyle bir şey henüz kanıtlanmadı ve Hertzbleed çalışması da bunun kolay bir iş olmadığını gösteriyor (basit bir dille anlatmakta bu kadar zorlanmamızdan anlaşılıyor). Spectre sınıfı güvenlik açıkları için dört yıldan uzun süredir böyle bir keşif ortaya konmadı. Burada da işler büyük olasılıkla aynı olacak. Birkaç yıl sonra ilk raporu biraz daha geliştiren ve netleştiren başka bir rapor çıkacak. Bu da gayet olumlu bir çıkarım. Ne de olsa bilgi güvenliği alanında yeterince sorunumuz var!

İpuçları

Ev güvenliğinin sağlanması

Güvenlik şirketleri, evinizi hırsızlık, yangın ve diğer olaylardan korumak için başta kameralar olmak üzere çeşitli akıllı teknolojiler sunuyor. Peki ya bu güvenlik sistemlerinin kendilerini davetsiz misafirlerden korumak? Bu boşluğu biz dolduruyoruz.