Schneider Electric’in Modicon PLC’deki Zafiyet Endüstri’de Tehlike Yaratıyor
Fabrikalarda, enerji hizmetlerinde, HVAC sistemlerinde ve diğer kurulumlarda endüstriyel süreçleri otomatikleştiren Schneider Electric’in Modicon serisi bazı (PLC)’ler saldırganların kimlik doğrulama mekanizmalarını atlamasına ve kötü amaçlı kod yürütmesine (RCE) olanak verebilecek zafiyet tespit edildi.
Güvenlik açığını bulan ve bildiren güvenlik firması Armis’ten araştırmacılar, etkilenen denetleyicilere ağ erişimi olan saldırganlar, denetleyicilerin çalışmasını değiştiren ve üzerinde değişlikler yapılan yazılımları iş istasyonlarından ve onları yöneten operatörlerin farkında varmadan sistemlere yükleyerek sorunlara sebep olabiliyor.
Bu tarz yaşanan olaylar ilk değil aslında daha önce İran’ın Natanz nükleer tesisinde uranyum zenginleştirme santrifüjlerini kontrol etmek için kullanılan Siemens PLC’lerine bulaşan siber zararlısı Stuxnet büyük sorunlara yol açmıştı.
Buradaki sistemlerdeki sorun ise iş istasyonları tarafından PLC’lerle iletişim kurmak ve yürütülecek programları yüklemek için kullanılan protokoldeki bir komuttan kaynaklanıyor. UMAS olarak bilinen bu protokol, ilk olarak 1979’da tasarlanan ve PLC’leri seri veya TCP/IP bağlantıları üzerinden kontrol etmek için yaygın olarak kullanılan Modbus protokolünün bir uzantısıdır. UMAS, donanım yazılımı güncellemeleri, ikili aktarımlar ve kimlik doğrulama dahil olmak üzere Modbus’ta eksik olan işlevleri tamamlıyor.
PLC’nin veya üzerinde çalışan programın konfigürasyonunu değiştirebilen UMAS komutları, kimlik doğrulama gerektirir. M340, M580 ve muhtemelen diğer Modicon PLC’lerde bulunan sorun, parolanın nasıl doğrulandığıdır. İstasyonunda yeni bir proje oluşturulduğunda, Schneider Electric’in EcoStruxure yazılımı, kullanıcıyı yeni bir uygulama şifresi oluşturmaya zorlar. Proje dosyası ilk kez PLC’ye aktarıldığında, PLC doğrulamasını etkinleştiren parola da ayarlanır. Daha sonra, yazılımın kimlik doğrulama gerektiren bir komut göndermesi gerektiğinde, kullanıcıdan parola istenir ve yazılım parolası PLC’de depolanan parolayla eşleştiğini doğrular.
Geçen yıl, Armis araştırmacıları M340 PLC’lerin donanım yazılımını analiz ettiler ve kimlik doğrulama gerektirmeyen pu_ReadPhysicalAddress adlı daha önce belgelerde bulunmayan bir komut keşfettiler. Bu komut, parola dahil olmak üzere PLC’nin tüm belleğinin okunmasına izin veriyor. CVE-2020-7537 olarak izlenen sorun, Kasım ayında Schneider Electric’e bildirildi ve kimlik doğrulamayı zorunlu kılan bir güncelleme Aralık ayında yamalandı.
Araştırmacılar daha sonra EcoStruxure yazılımının kullanıcı tarafından girilen şifreyi nasıl doğruladığını analiz etmeye ve yazılım ile PLC arasındaki trafiğe bakmaya başladılar. Bu yazılımın PLC’den parola okumak ve bunu kullanıcı tarafından girilen parola ile karşılaştırmak için ön kimlik doğrulama kullandığı MemoryBlockRead adlı başka bir komutu keşfetmelerini sağladı. MemoryBlockRead komutunun varlığı da bir kimlik doğrulama atlamasına neden olabilir. Zafiyet CVE-2021-22779 olarak izleniyor.
Araştırmacılar yeni bir raporda, “Söylemeye gerek yok, bu mekanizma temelde kusurlu, parola şifrelenmemiş bir protokol üzerinden geçiriliyor hem de sadece bellek bloğu okuma komutunu uygulayan kimliği doğrulanmamış herhangi bir saldırgan tarafından okunabiliyor” dedi. Esasen, savunmasız bir PLC ile aynı ağda bulunan bir saldırgan, PLC’nin belleğinden parola okumak için bu komutu kullanabilir, ardından sorgulama yanıtını tamamlayabilir ve kimliği doğrulanmış komut yürütülmesini sağlayacak gizli belirteci elde edebilir.
Devre Dışı Bırakılmış Komutlar Aracılığıyla Uzaktan Kod Yürütme
Geçmişte Schneider Electric, Modicon PLC’lerine karşı denial-of-service attack gerçekleştirmek için kötüye kullanılabilecek diğer UMAS komutlarını devre dışı bıraktı. Bu komutlardan ikisi WritePhysicalAddress (işlev kodu 0x29) ve PrivateMessage (işlev kodu 0x6D) idi ve o sırada CVE-2019-6829 ve CVE-2018-7852 olarak izlendi. Schneider’in bunlara yönelik güncellemesi, bir PLC’de bir uygulama parolası ayarlandığında komutların tamamen devre dışı bırakılmasını içeriyordu. Armis araştırmacılarına göre, her iki komut da aslında sistem düzeyinde ayrıcalıklarla uzaktan kod yürütmeye (RCE) yol açabiliyor.
Armis araştırmacıları WritePhysicalAddress hakkında “Bu komutun (belleği rastgele verilerle değiştirerek) neden DoS’a yol açabileceği açık olsa da, bu güvenlik açığının neden uzaktan kod yürütme olarak sınıflandırılmadığı açık değil” dedi. yeni rapor’da “Saldırgan kontrollü bir adresteki belleği zararlı bir kod ile değiştirmek, muhtemelen RCE’ye yönelik en kolay istismar yoludur” dendi. Çok sayıda işlev işaretçisi, yığın değişkeni veya C++ vtable işaretçisi, değiştirilebilen ve yürütme durumunu değiştirilebilen bellekte bulunur. Bunları daha sonra saldırgan kontrollü koda ulaşmak için kullanmak için ROP teknikleri kullanılarak yapılabilir.Benzer bir istismar, URGENT/11’i kullanan bir istismar olduğundan Armis araştırmacıları tarafından geliştirilmiştir. Aralık 2020’den itibaren bir teknik incelemede Modicon PLC’leri etkilediği gözlendi”
Schneider’in WritePhysicalAddress ve PrivateMessage için düzeltmesi eksik çünkü PLC’de uygulama parolası ayarlanmadığında komutlara hala erişilebilir, muhtemelen yeni UMAS kimlik doğrulama özelliğini desteklemeyen eski araçlarla geriye dönük uyumluluk sorunu bulunmakta. Sorun şu ki, Armis tarafından bulunan yeni CVE-2021-22779 güvenlik açığı, kimliği doğrulanmamış saldırganların kimlik doğrulamasını atlamalarına izin veriyor ve daha sonra parolasız bir proje yükleyerek PLC’de kimlik doğrulamasını tamamen devre dışı bıraktıkan bir sürümü yüklemelerine olanak tanıyor. Bu da WritePhysicalAddress ve PrivateMessage komutlarının rastgele kod yürütme için kullanılmasını sağlayarak aygıtın tamamen ele geçirilmesine neden oluyor.
Araştırmacılara Göre, Saldırı Adımları Şöyle:
- CVE-2021-22779 ile kimlik doğrulamayı atlatılıyor ve PLC’yi rezerve ediyor
- Uygulama parolası yapılandırılmamış yeni bir proje dosyası yükleniyor.
- PLC rezervasyonunu bırakılıyor ve cihazla bağlantısını kesiliyor.
- Temel rezervasyon yöntemiyle PLC’ye yeniden bağlanılıyor ve bu sefer şifre gerekmiyor.
- RCE’ye (WritePhysicalAddress veya PrivateMessage) ulaşabilen komutlardan birini kullanarak uzaktan kod çalıştırılıyor.
Armis’in araştırma başkan yardımcısı Ben Seri, son bir adım olarak hacker’ın yeni kazanılan RCE ayrıcalığını PLC’ye kötü amaçlı yazılım yüklemek için kullanabileceğini ve bunun PLC’yi daha önceki parola korumalı durumuna döndürebileceğini söyledi. Bu saldırı zinciri otomatikleştirilebilir ve hızlı bir şekilde gerçekleştirilebilir, bu da herhangi birinin fark etme şansını önemli ölçüde azaltır. Kötü amaçlı yazılım daha sonra üzerinde çalışan programı değiştirebilir ve yanlış verileri iş istasyonuna geri yüklenebilir.
Armis’e göre, Schneider salı günü bir geçici çözüm içeren ve 4. çeyrekte kimlik doğrulama atlamasını ele almak için yamalar yayınlamayı planlayan bir danışma belgesi yayınlayacak. Sorun, MemoryBlockRead komutuna erişim kaldırılsa ve bu kimlik doğrulama atlama tekniği azaltılsa bile, UMAS protokolünün kendisindeki şifreleme eksikliğinden yine de başka teknikler kullanılarak yararlanılabilir. Örneğin, ortadaki adam (MitM) senaryosunda, iş istasyonu ile PLC arasındaki trafiğe müdahale edebilecek bir konumda bulunan bir saldırgan, yetkilendirme belirtecini yakalayabilir ve çıkarabilir veya brute-force yapabilir.
Şu anda protokolün ortadaki adam saldırısını algılamasının bir yolu olmadığından, kimlik doğrulama paketlerini PLC’ye iletmek, daha sonra herhangi birini çalıştırmak için kötüye kullanabileceği bir rezervasyon belirteci kazanmasına izin verecektir. Armis araştırmacıları, “PLC konfigürasyonunu değiştirmek veya RCE’ye yol açabilecek komutları tetiklemek için kullanılabilecek komutlar var” dedi. Sözlerini şöyle devam eden araştırmacılar “Bu MiTM kimlik doğrulama atlamasını düzeltmek, iş istasyonu ile PLC arasında, hem iletişimi şifreleyebilen hem de her iki tarafın kimliğini doğrulayarak bağlantının bir MiTM’den geçmediğini doğrulayan güvenli bir bağlantı gerektirecektir.” dediler.
Kaynak: csoonline.com