Zephyrnet Logosu

Ürününüzde İstemediğiniz Firmware Açıkları

Tarih:

Ürününüzde İstemediğiniz Firmware Açıkları
İllüstrasyon: © Herkes İçin IoT

Firmware güvenlik açıkları, bir cihazın firmware'inde bulunan güvenlik zayıflıkları veya kusurlarını ifade eder. Ürün yazılımı, donanım aygıtlarına gömülü olan ve düşük düzeyde kontrol ve işlevsellik sağlayan bir yazılım türüdür.

Donanım ile üst düzey yazılım arasında köprü görevi görür. Bu güvenlik açıkları, saldırganlar tarafından yetkisiz erişim elde etmek ve cihazı kontrol etmek veya manipüle etmek için kullanılabilir.

Geçtiğimiz on yılda ticari ve endüstriyel IoT cihazlarını hedef alan çok sayıda güvenlik ihlaline tanık olduk. Örneğin, siber suçlular Finlandiya'nın Lappeenranta kentindeki iki binanın ısıtma sistemini kapatabildiler ve aşağıdaki gibi diğer saldırıları gerçekleştirdiler: ShamoonNew York Barajı, Ve Mirai Bot Ağı Deutsche Telekom Router'lar gibi endüstriyel IoT cihazlarını etkileyerek hizmetlerin kesintiye uğramasına neden oldu.

Güvenliğin IoT cihazlarında zayıf bir nokta olduğu yaygın olarak bilinmesine rağmen, Rusya'nın Ukrayna'ya saldırdığı geçen yıla kadar bu sorunun çözümünde çok az ilerleme kaydedilmişti. Saldırı, Anonymous'un Kremlin CCTV sistemini hacklemesi ve Rusya'nın Ukrayna elektrik şebekesine saldırmasıyla siber saldırıların gerçek gücünü ortaya koydu.

Bu olayların ardından ABD ve Avrupa Birliği, çok ihtiyaç duyulan bir adım olan IoT/IIoT siber güvenlik duruşunun düzenlenmesiyle ilgilendiklerini ifade etti. Ancak şu soru hala geçerliliğini koruyor: Nereden başlamalıyız ve bu tür saldırılara yol açabilecek en tehlikeli güvenlik açıkları nelerdir?

Üreticileri bu saldırılardan koruyabilecek sihirli bir değnek var mı? En tehlikeli güvenlik açıklarından bazılarına ve bunların olası azaltımlarına bir göz atalım.

Güvenlik açıklarının kutsal kasesi: RCE

Çoğu BT uzmanı, en korkulan ürün yazılımı güvenlik tehditlerinden biri olan Uzaktan Kod Yürütme (RCE) kavramına aşinadır. Bir saldırgan RCE güvenlik açığından yararlanabilirse, cihazın veya cihazların tam kontrolünü ele geçirebilir ve potansiyel olarak bir botnet oluşturabilir.

Ayrıca saldırganlar kullanıcı verilerini çalabilir veya çeşitli üreticilere karşı casusluk faaliyetlerine girişebilir. Esasen bir saldırgan istediği sonucu elde edebilir.

Şu soru ortaya çıkıyor: Saldırganlar cihazlardaki RCE açıklarını nasıl bulabilir ve hangi türler RCE'ye yol açabilir?

En yaygın olanları görelim.

  • Kimlik Doğrulama Baypası: Saldırganlar, zayıf veya varsayılan parolalar kullanan IoT cihazlarındaki kimlik doğrulama mekanizmalarını atlayabilir. Bazen mantıksal hatalardan yararlanabilir veya belirli güvenlik kontrollerini atlatabilirler. Varsayılan parolalar, kaba kuvvet saldırıları, ağ güvenlik açıkları veya ürün yazılımı güvenlik açıkları dahil olmak üzere çeşitli teknikler kimlik doğrulamanın atlanmasına neden olabilir.
  • Arabellek Taşmaları: Bir program arabellekte tutabileceğinden daha fazla veri depolamaya çalıştığında arabellek taşması güvenlik açığı oluşur ve bu da verilerin bitişik bellek konumlarına taşmasına neden olur. Bir saldırgan, arabelleği aşan ve bitişik bellek konumlarının üzerine kötü amaçlı kod yazan giriş verileri oluşturarak bu güvenlik açığından yararlanabilir.
  • Enjeksiyon Kusurları: Ekleme kusurları, bir saldırganın bir web formu veya API gibi güvenli olmayan girişler veya arayüzler aracılığıyla bir IoT cihazına kötü amaçlı kod enjekte etmesiyle ortaya çıkar.

Bunların her birine derinlemesine dalacağız.

Kimlik Doğrulamasını Atlama

Kimlik doğrulama, gömülü sistemlerde güvenliğin çok önemli bir yönüdür. Cihaza ve işlevlerine yalnızca yetkili kişilerin erişebilmesini sağlar.

Kimlik doğrulamayı atlama, bir saldırganın kullanıcı adı ve parola gibi gerekli kimlik doğrulama bilgilerini sağlamadan bir cihaza erişebilmesi durumunu ifade eder. Bu güvenlik açığı, saldırganların cihazın ve işlevlerinin kontrolünü ele geçirmesine olanak tanıyarak cihaza zarar verme veya hassas verilere erişme potansiyeline sahiptir.

Saldırganların kimlik doğrulamayı atlamak için kullanabileceği çeşitli teknikler vardır. Standart yöntemlerden biri, varsayılan veya zayıf parolalardan yararlanmaktır. Birçok IoT cihazının, yaygın olarak bilinen ve çevrimiçi olarak kolayca bulunabilen varsayılan oturum açma kimlik bilgileri vardır.

Saldırganlar, kimlik doğrulama sürecinden geçmeden cihaza erişmek için bu bilgileri kullanabilir. Ayrıca zayıf şifreleri tahmin etmek için kaba kuvvet saldırılarını da kullanabilirler.

Kimlik doğrulamayı atlamanın başka bir yöntemi, ürün yazılımının güvenlik açıklarından yararlanmayı içerir. Örneğin bu, açık kaynaklı bir yazılımın güvenlik açığı bulunan bir sürümünün kullanılmasıyla veya kimlik doğrulama akışındaki mantıksal bir hatanın kullanılmasıyla meydana gelebilir.

Ayrıca, kimlik doğrulamayı atlamak için ağdaki güvenlik açıklarından yararlanılabilir. Saldırganlar, oturum açma kimlik bilgilerini ele geçirmek için ağ trafiğini engelleyebilir veya cihazın kimliğine bürünüp kimlik doğrulamayı atlamak için ortadaki adam saldırılarını kullanabilir.

Kimlik Doğrulama Baypasını Azaltma

Varsayılan oturum açma kimlik bilgilerini değiştirmek ve kullanmak önemlidir. güçlü şifreler. Güçlü şifreler büyük ve küçük harfler, sayılar ve semboller içermeli ve 12 karakter uzunluğunda olmalıdır.

İkinci olarak, ürününüzde kullandığınız tüm 3. taraf açık kaynak bileşenleri hakkında güncel bilgi edinin.

Üçüncüsü, kimlik doğrulama bypassını azaltmak için ağın güvenliğini sağlamak çok önemlidir. Bu, ağ trafiğini şifrelemek için HTTPS veya TLS gibi güvenli iletişim protokollerinin uygulanmasıyla başarılabilir. Son olarak, her yeni ürün sürümünde düzenli olarak penetrasyon testleri yapın.

Arabellek Taşması

Arabellek taşması, yazılım sistemlerindeki en bilinen ve yaygın güvenlik açıklarından biridir. Bu güvenlik açıkları çeşitli nedenlerden dolayı ortaya çıkabilir. Yaygın nedenlerden biri, bir programda, saldırganın ayrılan arabellek boyutundan daha büyük verileri girmesine olanak tanıyan giriş doğrulamasının olmamasıdır.

Bu, fazla verinin bitişik bellek konumlarının üzerine yazılmasına ve beklenmeyen davranışlara veya çökmelere neden olan bir duruma yol açabilir. Arabellek taşması güvenlik açıklarının bir başka nedeni de strcpy ve strcat gibi sınır denetimi yapmayan güvenli olmayan işlevlerin kullanılmasıdır. Gerçek hayattaki bir senaryoda arabellek taşması hatasını göstereceğiz.

Bunu yapmak için kullanacağız DVRF (Lanet olası Savunmasız Yönlendirici Firmware) hedefimiz olarak. Ürün yazılımını platformumuza bıraktıktan sonra, potansiyel güvenlik açıklarını aramak için görüntüyü çıkaracak ve her ikili dosyayı kaynak koda dönüştürecektir.

Bu hedefi seçtik çünkü herkes tarafından erişilebilir ve halka açık herhangi bir üreticinin ürün yazılımından taviz vermek istemiyoruz.

Burada gördüğümüz gibi program iki tamsayı argümanı alıyor, parametre_1 ve parametre_2ve adı verilen yerel bir değişkeni bildirir. yerel_200 türü undefined2 (2 baytlık veya 16 bitlik, işaretsiz bir tamsayı). Aynı zamanda adı verilen bir diziyi de görüntüler. auStack510 boyutu 502 bayttır.

Program daha sonra şunu kullanır: memset() tüm baytları ayarlama işlevi auStack510 sıfıra. Daha sonra değerinin olup olmadığını kontrol eder. parametre_1 2'den küçüktür. Eğer öyleyse, program bir kullanım mesajı yazdırır ve 1 hata koduyla çıkar.

If parametre_1 2'den büyük veya ona eşitse, program bir karşılama mesajı yazdırır ve ikinci argümanın işaret ettiği dizenin içeriğini kopyalar _(*(karakter)(param_2 + 4))_** içine yerel_200 ile strcpy() işlev. Tampon taşması güvenlik açığının yattığı yer burasıdır.

İkinci argümanın işaret ettiği dize 16 bayttan uzunsa (boyutu) yerel_200strcpy() fonksiyon sonuna kadar yazacak yerel_200 ara belleğe alın ve bitişikteki içeriğin üzerine yazın auStack510 tampon eklendi.

Bu, programın çökmesine veya bir saldırganın ürün yazılımının açıklarından kötü amaçlı kod çalıştırmasına izin verilmesi gibi öngörülemeyen davranışlara yol açabilir.

Bu tür arabellek taşması saldırısını önlemek için, ara belleğe yazılan veri miktarını sınırlayan işlevlerin kullanılması önemlidir. strncpy() or snprintf(). Ek olarak programlar, arabellek taşması korumalarıyla derlenmelidir; yığın kanaryalar ve adres alanı düzeni rastgeleleştirmesi (ASLR, fASLR).

Komut Enjeksiyonları

Komut enjeksiyonu, bir saldırganın hedef cihazda rastgele komutlar yürütmek için bir komut kabuğuna kötü amaçlı kod enjekte ettiği bir saldırıdır. Bu saldırı, web arayüzleri, giriş alanları ve API'ler dahil olmak üzere birçok yolla gerçekleştirilebilir.

Firmware'de komut enjeksiyonu genellikle web arayüzleri veya API'ler aracılığıyla gerçekleştirilir, çünkü bunlar kullanıcıların cihazla etkileşim kurmasının yaygın yollarıdır.

Firmware'e komut eklemenin sonuçları ciddi olabilir. Komut kabuğuna başarılı bir şekilde kod enjekte eden bir saldırgan, hedef cihazda rasgele komutlar yürütebilir.

Bu, saldırganın hassas verilere erişmesine, cihazı kontrol etmesine ve hatta ağdaki diğer cihazlara karşı saldırılar başlatmasına olanak tanıyabilir. Ek olarak, genellikle meşru trafik olarak göründüğü için komut eklemenin tespit edilmesi zor olabilir.

Bu kod, adı verilen bir işlev gibi görünüyor wsc_generate_pin Wi-Fi Korumalı Kurulum (WPS) PIN'i oluşturur. WPS PIN'i, kablosuz bir cihazın Wi-Fi ağında kimliğini doğrulamak için kullanılan sekiz haneli bir sayıdır.

Ancak bu kodda potansiyel bir komut ekleme güvenlik açığı bulunmaktadır. Güvenlik açığı, bir kabuk komutunu çalıştıran sistem işlevinin kullanılmasından kaynaklanmaktadır. Özellikle, sprintf işlevi, girişin uygun şekilde doğrulanması veya temizlenmesi gerekmeden sisteme aktarılan bir komut dizesi oluşturmak için kullanılır.

Güvenlik açığı bulunan kod, vurgulanan satırdır:

Bu kod, değerini yazan bir kabuk komutu oluşturur. yerel_18 için / Dev / random dosya. Eğer bir saldırgan değerini kontrol edebiliyorsa yerel_18ek kabuk komutları enjekte edebilirler acStack141 arabellek, keyfi kod yürütülmesine yol açar. Bu değişken kullanıcıdan (WPS Pin) geldiği için bu güvenlik açığından yararlanılabilir.

Bu güvenlik açığını önlemek için, kabuk komutlarını oluşturmak için kullanılan tüm girdilerin uygun şekilde doğrulanması ve temizlenmesi önemlidir. Giriş doğrulama, normal ifadeler veya beyaz liste filtreleme kullanılarak yapılabilir.

Beyaz liste filtreleme, girişin içerebileceği izin verilen bir karakter veya değer kümesinin tanımlanmasını içerir. Geliştiricilerin, yukarıda tartışıldığı gibi arabellek taşması saldırılarını önlemek için girişin sahip olabileceği karakter sayısını da sınırlaması gerekir.

IoT Güvenliğinin Zorlukları

IoT güvenliğinin önemli bir zorluk olduğunun farkındayız ve birçok üretici bu alanda güvenlik profesyonellerini işe almakta zorluk yaşıyor. Yukarıda belirtilen risk azaltma tekniklerini uygulayarak cihazlarınızın güvenliğini sağlamaya yönelik önemli adımlar atabilirsiniz.

Ayrıca, güvenliği iyileştirme yolculuğunun en kolay ilk adımı olarak derleme zamanı sağlamlaştırma bayraklarını kullanmanızı önemle tavsiye ederiz.

Düzenli güvenlik denetimleri ve testleri yürütmek, olası güvenlik açıklarını tespit etmek ve bunları derhal ele almak için de önemlidir. Bunu başarmak için üçüncü taraf güvenlik laboratuvarlarından yararlanmanızı veya en azından ürün yazılımı analiz araçlarını kullanmanızı öneririz.

spot_img

En Son İstihbarat

spot_img