Samanlıkta iğne arama: Milyonlarca örnek içinden istenmeyen UEFI bileşenlerini ayırt etme

Sonraki hikaye
Filip Mazán ve Frédéric Vachon

UEFI (Birleşik Genişletilebilir Ürün Yazılımı Arabirimi) güvenliği son birkaç yılın en çok konuşulan konularından biri olsa da geçmişte, çeşitli sınırlamalar nedeniyle çok az sayıda UEFI tabanlı kötü amaçlı yazılım tespit edildi. LoJax olarak bilinen ve kullanımda olan ilk UEFI rootkit’inin keşfinden sonra, devasa UEFI çeşitliliğini etkili olarak keşfetmemize ve yeni çıkan UEFI tehditlerini güvenli bir şekilde fark etmemize yarayacak bir sistem oluşturmaya karar verdik.

Başlangıç noktası olarak ESET’in UEFI tarayıcısı tarafından toplanan telemetri verilerini kullandık ve UEFI yürütülebilir dosyaları için özel bir işlem hattı geliştirdik. Bu hat, gelen örnekler arasındaki tuhaflıkları algılamak için makine öğreniminden yararlanıyor. UEFI yürütülebilir dosyalarını belirlemeye yönelik güçlü özellikler göstermenin yanı sıra bu sistem, UEFI ortamı için gerçek zamanlı izleme sağlıyor ve sonuçlara göre analistlerimizin iş yükünü %90’a kadar azaltıyor.

İşlem hattımızı kullanarak UEFI tehditlerini avlarken birden fazla ilginç UEFI bileşeni bulduk. Bu bileşenler, UEFI ürün yazılımı arka kapıları ve işletim sistemi düzeyinde kalıcılık modülleri olmak üzere iki kategoriye ayrılabilir. Keşiflerimiz arasında en dikkat çekeni, bazı ASUS dizüstü bilgisayar modellerindeki bir UEFI ürün yazılımı arka kapısı olan ASUS arka kapısıydı. ASUS, bildirimimizin ardından bu açığı düzeltti. 

 

UEFI nedir?

UEFI, işletim sistemiyle cihazın ürün yazılımı arasındaki arabirimi tanımlayan bir spesifikasyondur. UEFI ürün yazılımında bulunan, “önyükleme hizmetleri” ve “çalışma süresi hizmetleri” adlı temel API’leri içeren bir dizi standartlaştırılmış hizmeti tanımlar. UEFI, BIOS’un (Temel Giriş/Çıkış Sistemi) teknik sınırlamalarını aşmak amacıyla BIOS ürün yazılımı arabiriminin yerine geçmiştir.

UEFI ürün yazılımı, sistemin anakartıyla lehimlenmiş bir yonga olan SPI flash belleğinde depolanır. Dolayısıyla işletim sisteminin yeniden yüklenmesi veya sabit sürücünün değiştirilmesi, ürün yazılımı kodunu etkilemez. UEFI ürün yazılımı fazlasıyla modülerdir, genellikle onlarca, hatta yüzlerce farklı sürücü/yürütülebilir dosya içerir.

 

Saldırı vektörü olarak UEFI

Ürün yazılımında değişiklik yaparak, etkilenen bilgisayarın güvenliğini aşmanın birden çok yolu vardır.

Bunlardan ilki ve en yaygın olanı, uzaktan tanılama veya bakım sağlamak için bilgisayar satıcısı tarafından ürün yazılımının değiştirilmesidir. Bu, düzgün yapılmadığında bir arka kapı olarak işlev görebilir. Diğer bir seçenek, saldırganın bilgisayara fiziksel erişimi olduğunda gerçekleştirebileceği manuel kurcalama ile kötü amaçlı flash yüklemedir. Üçüncü seçenek ise ürün yazılımını değiştirme özelliği olan kötü amaçlı yazılımlar kullanılarak yapılan uzaktan saldırılardır.

Bu son seçeneği, keşfedilen ilk UEFI rootkit’i LoJax üzerine yaptığımız araştırmada ele aldık. Hem Balkanlar hem de Orta ve Doğu Avrupa’da devlet kuruluşlarını hedef alan bir harekette Sednit APT grubu, kurbanın sistemine kötü amaçlı bir UEFI modülü dağıtmayı başardı. Bu modül, önyükleme işlemi sırasında diske kötü amaçlı yazılım bırakıp bu yazılımı yürütebiliyordu. Bu yöntem, işletim sistemi yeniden yüklemesinden sağ çıkmakla kalmayıp sabit disk değişiminden de etkilenmeden kurtulabilecekti.

 

UEFI çeşitliliğini keşfetmeye yönelik bir makine öğrenimi yöntemi

Kullanımda olan milyonlarca UEFI yürütülebilir dosyası varken ve bunlardan yalnızca küçük bir kısmı zararlıyken, LoJax gibi kötü amaçlı yazılımlar bulmak nadir bir durumdur. Sadece geçtiğimiz iki yıl içinde, altı milyar dosyanın içinde benzersiz 2,5 milyon UEFI yürütülebilir dosyası gördük. Bunların tek tek analiz edilmesi mümkün olamayacağından, insan emeği gerektiren örnek sayısını azaltacak otomatik bir sistem oluşturmamız gerekiyordu. Bu sorunu gidermek adına, UEFI yürütülebilir dosyalarındaki olağan dışı özellikleri bularak uç örnekleri öne çıkarmak üzere tasarlanmış bir sistem oluşturmaya karar verdik.

Araştırmamızda, seçilen tekniklerin performansını ve gerçek zamanlı özelliklerini göz önünde bulundurarak sürecin her adımı (özellik ayıklama, metin gömme, verimli depolama yoluyla çok boyutlu verileri gömme ve nihai bir skor algoritması oluşturmak için örneklerin komşularını sorgulama) için farklı yaklaşımları inceledik ve karşılaştırdık. Gelen herhangi bir UEFI ikili dosyasının en yakın komşularını alacak etkili bir yöntem ortaya koyduktan sonra, gelen yürütülebilir dosyaları önceden karşılaşılan dosyalarla kıyaslayarak bunlara sıfırla bir arası bir benzerlik skoru atayacak bir sistem oluşturduk. Daha sonra bir analistimizle birlikte öncelikli olarak en düşük benzerlik skoruna sahip dosyaları inceledik.

Kavram kanıtlama aşamasında son sistemi, LoJax UEFI sürücüsü başta olmak üzere daha önce veri kümemizde yer almayan ve şüpheli ya da kötü amaçlı olduğu bilinen UEFI yürütülebilir dosyalarında test ettik. Sistem, LoJax sürücüsünün daha önce gördüğümüz dosyalardan çok farklı olduğunu başarıyla tespit etti ve sürücüye 0 skorunu atadı.

Bu testin başarısı bize, benzer bir UEFI tehdidi ortaya çıktığında bunun tuhaflığını fark edebileceğimiz, durumu hızla inceleyebileceğimiz ve gereken algılamayı oluşturabileceğimiz konusunda bir miktar özgüven sağlıyor. Bunun yanı sıra, makine öğrenimi tabanlı yaklaşımımız analistlerimizin iş yükünü %90’a kadar (aksi takdirde gelen her örneği inceledikleri düşünülürse) azaltıyor. Son olarak, yeni gelen her UEFI yürütülebilir dosyasının veri kümesine eklenmesi, işlenmesi, dizinlenmesi ve gelecek örnekler için değerlendirme ölçütü olarak kullanılması sayesinde çözümümüz, UEFI çeşitliliğinin gerçek zamanlı izlenmesini sağlayabiliyor.

 

İstenmeyen UEFI bileşenlerini avlama

İşlem hattımızı bilinen kötü amaçlı örneklerde test ettikten sonra sıra, kullanımda olan UEFI modüllerini avlamaya geliyor. Bulduğumuz ilginç bileşenler, UEFI ürün yazılımı arka kapıları ve işletme sistemi düzeyinde kalıcılık modülleri olmak üzere iki kategoriye ayrılıyor.

 

UEFI ürün yazılımı arka kapıları

Peki, UEFI ürün yazılımı arka kapısı nedir? Çoğu UEFI ürün yazılımı kurulumunda, önyükleme işleminin ilk aşamalarında parola yoluyla sistemi yetkisiz erişimden korumak için bazı seçenekler vardır. Bunlardan en yaygın olanları, sistemin önyükleme yapmasını önlemek ve diske erişmek amacıyla UEFI ürün yazılımı kurulumuna erişimi korumak için parola ayarlamayı sağlayan seçeneklerdir. UEFI ürün yazılımı arka kapıları, kullanıcı tarafından yapılandırılan parolayı bilmeye gerek kalmadan bu korumaları aşmaya imkan veren mekanizmalardır.

Son derece yaygın olan bu tür UEFI ürün yazılımı arka kapıları (ağırlıklı olarak bilgisayar sahibinin parolayı unutmasına karşı kurtarma mekanizması olarak kullanılır), güvenlikle ilgili bazı olumsuz sonuçları da beraberinde getirir. Etkilenen bilgisayara fiziksel erişimi olan saldırganların çeşitli güvenlik mekanizmalarını aşmasına imkan sunması dışında, arka kapıların farkında olmayan kullanıcıların kendini güvende sanmasına ve parolayı bilmeyen kişilerin bilgisayarda önyükleme yapamayacağını düşünmesine de yol açar.

Analiz ettiğimiz UEFI ürün yazılımı arka kapıları arasında en çok öne çıkan, ASUS arka kapısı oldu. Araştırmamız, müşteriye teslim edilen en az altı ASUS dizüstü bilgisayar modelinde arka kapı olduğunu doğrulasa da gerçek sayı büyük olasılıkla çok daha fazla (her bir ASUS dizüstü bilgisayar modelinin manuel olarak kontrol edilmesi, araştırmamız kapsamında değildi). Nisan 2019 tarihinde ASUS’a arka kapıyla ilgili yaptığımız bildirim sonucunda satıcı bu sorunu ortadan kaldırdı ve 14 Haziran 2019 tarihinde ürün yazılımı güncellemeleri yayımladı.

 

İşletme sistemi düzeyinde kalıcılık modülleri

Bulgularımızın kalan kısmı, işletim sistemi düzeyinde yazılım yüklemekle görevli ürün yazılımı bileşenleri olan işletme sistemi düzeyinde kalıcılık modülleridir. Ürün yazılımı sunmanın karmaşık doğasından ötürü bu kalıcılık modüllerindeki ana güvenlik problemi, savunmasız bir ürün yazılımı bileşeniyle gönderilen bilgisayarların kullanım ömrü boyunca savunmasız kalacak olmasıdır. Bu nedenle, ürün yazılımı kalıcılığının mümkün olduğunca kaçınılması ve hırsızlığa karşı savunma çözümleri gibi kesinlikle gerekli olduğu durumlarda kullanılması gereken bir şey olduğunu düşünüyoruz.

Araştırmamız hakkında daha fazla bilgi edinmek için lütfen tam makaleye bakın: A machine-learning method to explore the UEFI landscape (UEFI çeşitliliğini keşfetmeye yönelik bir makine öğrenimi yöntemi).