CVE-2021-26828 · Bilgilendirme

OpenPLC ScadaBR Unrestricted Upload of File with Dangerous Type Vulnerability

OpenPLC ScadaBR'deki zafiyet, kimlik doğrulaması yapılmış kullanıcıların JSP dosyası yüklemesine izin veriyor.

Üretici
OpenPLC
Ürün
ScadaBR
Seviye
Orta
Yayın Tarihi
01 Nisan 2026
Okuma
8 dk okuma

CVE-2021-26828: OpenPLC ScadaBR Unrestricted Upload of File with Dangerous Type Vulnerability

Zorluk Seviyesi: Orta | Kaynak: CISA KEV

Zafiyet Analizi ve Giriş

CVE-2021-26828, OpenPLC ScadaBR platformunda önemli bir güvenlik zafiyetidir. Bu zafiyet, kimlik doğrulaması yapılmış uzaktan kullanıcıların, tehlikeli türdeki dosyaları sisteme yükleyebilmesine olanak tanır. Bu durum, zararlı JSP (JavaServer Pages) dosyalarının yüklenmesi ve uzaktan kod yürütme (RCE - Remote Code Execution) gerçekleştirilmesi riski taşır. Zafiyetin temelinde, dosya yükleme işlemlerini kısıtlayacak bir kontrol mekanizmasının eksikliği yatmaktadır.

ScadaBR, açık kaynaklı bir SCADA (Supervisory Control and Data Acquisition) çözümü olup, endüstriyel kontrol sistemleri için görselleştirme ve veri yönetimi sağlamakta kullanılır. Zafiyet, view_edit.shtm adlı bir bileşende bulunur. Bu bileşen, kullanıcıların dosya yüklemesine izin verirken, yüklenen dosyaların türlerini denetlememektedir. Bu eksiklik, kötü niyetli bir kullanıcının sistemde komut dosyaları çalıştırmasına ve sistem üzerinde tam denetime sahip olmasına yol açabilmektedir.

Zafiyetin etkileri geniş bir yelpazeye yayılmaktadır. İlgili sistemler, enerji, su arıtma, fabrikalar ve diğer sanayi sektörlerinde yaygın şekilde tercih edilmektedir. Örneğin, bir enerji santrali, bu tür güvenlik açıklarından istifade eden bir saldırgana bağlı olduğu otomasyon sistemlerini ele geçirme ve hizmetleri aksatma riski ile karşı karşıya kalabilir. Ayrıca, bu tür sistemlerin kritik öneme sahip olmaları, zafiyetlerin bundan dolayı daha tehlikeli hale geldiğini göstermektedir.

Bu güvenlik açığı, 2021 yılında keşfedilmiştir ve futbol sahalarında kullanılan genel nesnelerin interneti (IoT - Internet of Things) cihazları ile birlikte birçok sektörde önemli güvenlik sorunlarına yol açmıştır. Zafiyetin tarihçesi boyunca, dünya genelinde analistlerin ve güvenlik uzmanlarının dikkatini çekmiştir. Çeşitli güvenlik grupları ve araştırmacılar, zafiyeti gidermek amacıyla çözüm önerileri sunmuş olsa da, sistem yöneticilerinin bu tür güvenlik açıklarına karşı proaktif tutum sergilemeleri gerekmektedir.

CWE-434 adı verilen bu zafiyetin çözümü, yüklenen dosyalar üzerinde sıkı denetim ve kısıtlamalar getirilmesiyle mümkündür. Kullanıcıların sadece belirlenmiş dosya uzantılarına izin vermek, yükleme işlemlerini denetlemek ve dosya içeriklerinin analizini yapmak, bu tür saldırılara karşı etkili bir savunma mekanizması geliştirilmesine yardımcı olacaktır. Bunun yanı sıra, sistem güncellemeleri ve yamanın (patch) hemen uygulanması, güvenliği artırmak adına önemli bir adımdır.

Vaka çalışmaları, bu tür zafiyetlerin nasıl istismar edilebileceğini ve etkilerinin nasıl minimize edilebileceğini göstermektedir. Birçok saldırgan, benzer zafiyetleri hedef alarak sistemlere sızmakta ve kritik verilere ulaşmaktadır. Potansiyel saldırı senaryoları arasında, kötü amaçlı dosyaların yüklenmesi, sistem kontrollerinin geçersiz kılınması ve veri sızıntısı yer almaktadır. Bu tarz durumların yaşanmaması için, özellikle endüstriyel kontrol sistemlerinin güvenliğini sağlamak adına güncel tehditlere karşı bilgi sahibi olmak ve gerekli savunma stratejileri geliştirmek şarttır.

Sonuç olarak, CVE-2021-26828 zafiyeti, SCADA sistemleri ve otomasyon endüstrisi için ciddi bir tehdit oluşturmakta ve güvenlik bilgisi ve önlemlerinin sürekli geliştirilmesinin gerekliliğini vurgulamaktadır. Eğitimli personel ve sürekli güncellemeler, bu tür zafiyetlerin etkisini azaltmak için kritik öneme sahiptir.

Teknik Sömürü (Exploitation) ve PoC

CVE-2021-26828, OpenPLC ScadaBR platformunda bulunan ve tehlikeli türde dosya yüklenmesine olanak tanıyan bir güvenlik açığıdır. Bu zafiyet, uzaktan kimlik doğrulamasını geçmiş (authenticated) kullanıcıların, JSP (JavaServer Pages) dosyalarını yüklemelerine ve çalıştırmalarına olanak verir. Bu tür bir istismar, özellikle endüstriyel kontrol sistemleri üzerinde ciddi tehditler oluşturabilir. Özellikle, uzaktan kod çalıştırma (RCE - Remote Code Execution) potansiyeli nedeniyle saldırganlar için cazip bir hedef haline gelir.

Bir zafiyetin istismar edilmesi için öncelikle sistemin zayıf noktalarının tespit edilmesi gerekir. Bu bağlamda, öncelikle saldırının yapılabilmesi için gerekli olan kimlik doğrulama süreci atlanabilir. Bu aşamada, genellikle sosyal mühendislik yöntemleri veya zayıf parolaların kullanılması yoluyla yetkilendirilmiş bir kullanıcı hesabına erişim sağlamak önemlidir.

Kimlik doğrulama süreci aşıldıktan sonra, hedef sistemdeki dosya yükleme işlevinin çalıştığı sayfa üzerine odaklanılır. OpenPLC ScadaBR’deki view_edit.shtm dosyası, dosya yükleme işlemleri için kullanılan bir bileşendir ve bu bileşen, tehlikeli dosya türlerinin yüklenmesine izin verecek şekilde yapılandırılmıştır. Bu aşamada, JSP dosyalarının uzantısı, sisteme yüklenip yüklenemeyeceğini belirleyen bir faktör değildir. Kullanıcı, bir JSP dosyasını sistemde uygun bir konuma yükleyerek, bu dosyanın zararlı kod barındırmasına ve çalıştırılmasına olanak tanıyabilir.

İlk adım olarak, sistemdeki ilgili sayfaya bir dosya yükleme isteği göndermelisiniz. Aşağıda, tipik bir yükleme isteği için kullanılan HTTP POST isteğine bir örnek verilmiştir:

POST /scadabr/view_edit.shtm HTTP/1.1
Host: hedef-sunucu.com
Content-Length: <length>
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="uploadedFile"; filename="malicious.jsp"
Content-Type: application/octet-stream

<jsp:scriptlet> 
    // Kötü niyetli kod buraya
</jsp:scriptlet>
------WebKitFormBoundary7MA4YWxkTrZu0gW--

Bu istekte, uploadedFile alanı, zafiyeti istismar etmek için göndermek istediğiniz JSP dosyasını içermektedir. Bu dosya, hedef sunucuda saklanacak ve çalıştırılacaktır. Eğer yükleme başarılı olursa, dosya URL'sini belirleyerek çalıştırma aşamasına geçebilirsiniz.

Başarılı bir yükleme sonrası, JSP dosyasını çalıştırmak için tarayıcıda ya da bir HTTP istemcisinde aşağıdaki gibi bir istek gönderin:

GET /uploads/malicious.jsp HTTP/1.1
Host: hedef-sunucu.com

Eğer saldırı başarılı olduysa, kötü niyetli kodunuz uzak bir sistemde çalışacaktır. Bu aşamada, sistemin kontrolünü elde etme şansı doğar; örneğin, zararlı yazılımların yüklenmesi, veri çalınması veya sistemin diğer bileşenlerine saldırılar gerçekleştirmek gibi.

Bu yöntemin güçlü bir şekilde istismar edilmesi, yalnızca teknik bilgi gerektirmez; aynı zamanda güvenlik protokollerinin etkili bir şekilde uygulanmasını da sağlar. Yazılım güncellemeleri, güvenlik yapılandırmaları ve kullanıcı erişim denetimleri, böyle zafiyetlerin oluşumunu önlemek için kritik öneme sahiptir. White Hat hackerların rolü, bu tür zafiyetleri tespit edip, sistem yöneticilerine karşı alınacak önlemleri sunmaktır.

Forensics (Adli Bilişim) ve Log Analizi

OpenPLC ScadaBR, endüstriyel kontrol sistemlerine entegre bir denetim yazılımıdır ve bu tür sistemlerin güvenliği son derece kritik bir öneme sahiptir. CVE-2021-26828 zafiyeti, OpenPLC ScadaBR uygulamasında tespit edilen "unrestricted upload of file with dangerous type" (tehlikeli türde dosya yüklemesine sınırsız izin) açığı ile ilgilidir. Bu açık, uzaktan kimlik doğrulaması yapılmış kullanıcıların, tehlikeli JSP (JavaServer Pages) dosyalarını yükleyip çalıştırmalarına olanak tanımaktadır. Bu tür bir saldırı, siber suçluların uzaktan kod yürütme (RCE) etkinlikleri yapmasına ve sistemin bütünlüğünü tehdit etmesine yol açabilir.

Siber güvenlik uzmanları, bu zafiyetin kötüye kullanıldığını tespit etmek için SIEM (Security Information and Event Management) ve log dosyalarında belirli imzalara odaklanmalıdır. Öncelikle log kayıtlarının düzenli olarak incelenmesi, sistemdeki anormal aktivitelerin tespit edilmesine yardımcı olur. Aşağıda, bu durumun anlaşılmasına yönelik dikkate alınması gereken bazı imzaları ve log kayıtlarını ele alalım:

  1. Access Log Analizi: Açıkla ilgili log dosyalarında, özellikle view_edit.shtm dosyasına yönelik yapılan istekler dikkatlice incelenmelidir. Eğer kimlik doğrulaması yapılmış bir kullanıcı, bu sayfaya anormal veya şüpheli dosya yükleme istekleri gönderiyorsa, bu bir güvenlik açığının işareti olabilir. Bu tür log kayıtları, aşağıdaki şekilde görünebilir:
   192.168.1.10 - user [10/Oct/2023:14:20:00 +0000] "POST /view_edit.shtm HTTP/1.1" 200 2524 "filename.jsp"

Burada, "filename.jsp" gibi uzantılara sahip dosya yüklemeleri, tehlikeli bir durumun belirtisi olabilir.

  1. Error Log İncelemesi: Hedef sistemdeki hata logları (error log), sistemin hangi dosyalar için hata verdiğini gösterir. Burada JSP dosyalarının yürütülmesi sırasında meydana gelen hatalar derinlemesine incelenmelidir. Kötüye kullanılan dosyalardan biri çalıştırılmaya çalışıldığında, loglarda şu tür hatalar tespit edilebilir:
   [ERROR] java.lang.Exception: Error loading JSP file

Bu tür hataların sıklığı ve tipi, olası bir saldırının büyüklüğüne dair bilgi verebilir.

  1. Yükleme İşlemleri: Yükleme işlemleri sırasında, yüklenen dosyaların içindeki veri yapılarına ve uzantısına dikkat edilmelidir. Tehlikeli dosya türleri tarih ve zaman damgası ile kayıt altına alınmalı ve sayfanın alındığı yollar analiz edilmelidir. Bu tür aktiviteler, genellikle aşağıdaki gibi log kayıtlarında yer alır:
   192.168.1.10 - user [10/Oct/2023:14:25:00 +0000] "PUT /uploads/filename.jsp HTTP/1.1" 201 3568

Burada, "PUT" komutu ile yapılan yüklemelerde, dosya uzantısına ve içerik tipine dikkat edilmelidir.

  1. Şüpheli Kullanıcı Davranışları: Saldırganlar genellikle kimlik doğrulama sonrası sistemde daha fazla gezinti yapar. Şüpheli kullanıcı davranışına örnek olarak, kısa süre içinde birçok dosya yükleme denemesi veya aynı dosyanın tekrar yüklenmesi gibi aktiviteler öne çıkabilir.

Sonuç olarak, CVE-2021-26828 zafiyeti sebebiyle olası bir saldırının varlığına dair tespitlerde bulunurken, dikkatli bir log analizi yapılması kritik öneme sahiptir. SIEM sistemleri bu bağlamda güvenlik kayıtlarının merkezi olarak yönetilmesine ve analiz edilmesine olanak tanır. Bu saldırının tespit edilmesi, siber güvenlik uzmanlarının etkin bir şekilde hareket etmesine ve gerekli önlemleri almasına yardımcı olur. Özetle, saldırıya dair log analizi yapılırken, yükleme yolları, dosya uzantıları ve kullanıcı aktiviteleri titizlikle değerlendirilmelidir.

Savunma ve Sıkılaştırma (Hardening)

OpenPLC ScadaBR, endüstriyel otomasyon ve kontrol sistemleri için kullanılan popüler bir yazılımdır. Ancak, CVE-2021-26828 olarak bilinen ve "tehlikeli türde dosya yüklenmesine izin veren" bir zafiyete sahiptir. Bu zafiyet, uzaktan doğrulanmış kullanıcıların view_edit.shtm dosyası aracılığıyla rastgele JSP (JavaServer Pages) dosyaları yüklemelerine ve çalıştırmalarına olanak tanımaktadır. Bu durum, kötü niyetli kullanıcıların uzaktan kod yürütme (RCE) gerçekleştirme şansını artırır ve ciddi güvenlik açıklarına yol açabilir.

Tehdit senaryoları düşünüldüğünde, bir saldırganın sistemi ele geçirebilmesi için ilk adım, bu zafiyeti kullanarak tehlikeli bir dosya yüklemek olacaktır. Örneğin, bir saldırganın bir JSP dosyası yükleyip, bu dosyayı çalıştırması durumunda, sunucu üzerinde komut çalıştırabilir, veritabanına erişim sağlayabilir ya da kritik sistem bilgilerini çalabilir. Bu tür bir senaryo, bir endüstriyel kontrol sisteminin (ICS) güvenliğini tehlikeye atabilir ve büyük maddi kayıplara yol açabilir.

Bu zafiyetin etkilerini minimize etmek ve sistem güvenliğini artırmak için birkaç kritik adım önerilmektedir. İlk olarak, zafiyetin bulunduğu yazılımın en güncel sürümüne güncellenmesi önerilir. Geliştiriciler, zafiyeti gidermek için güvenlik güncellemeleri yayınlamış olabilir. Yazılım güncellemeleri, bilinen güvenlik açıklarını kapatmanın en etkili yoludur.

Bununla birlikte, uygulamanın sunucusunda yüklenebilir dosyaların türlerini sınırlamak için ek güvenlik önlemleri alınmalıdır. Örneğin, aşağıdaki gibi bir WAF (Web Application Firewall) kuralı ekleyerek belirli dosya uzantılarını yasaklamak mümkündür:

SecRule REQUEST_FILENAME "@rx \.(jsp|php|asp)$" "id:1001, phase:2, deny, status:403, msg:'File upload denied'"

Bu kural, JSP, PHP ve ASP gibi potansiyel olarak tehlikeli dosya türlerinin yüklenmesine izin vermez ve bu tür bir yükleme gerçekleştirildiğinde 403 Hata kodu döndürür.

Alternatif olarak, uygulama üzerindeki kullanıcı erişim kontrollerinin gözden geçirilmesi gerekir. Özellikle, yetkilendirilmiş kullanıcıların dosya yükleme izinlerinin en az düzeyde tutulması gerekmektedir. Kullanıcı rolleri ve yetkileri, ihtiyaç duyulan izinle sınırlı olmalıdır. Böylelikle, sadece belirli kullanıcı gruplarının dosya yükleme işlemlerine izin verildiğinden emin olunabilir.

Kalıcı sıkılaştırma önerileri arasında, dosya yükleme dizinlerinin ve sunucu yapılandırmalarının güvenliği önemli bir yere sahiptir. Dosyaların yüklendiği dizin, uygulama tarafından doğrudan erişilebilir olmamalıdır. Bu tür dizinlerin dışardan erişimini kapamak, aynı zamanda sunucu konfigürasyonları üzerinde de gerekli önlemleri almak kritik bir husustur. Örneğin, yüklenen dosyaların çalıştırılabilirliğini sınırlandırmak için şu yapılandırmalar yapılabilir:

&lt;Directory /path/to/uploaded/files&gt;
    Options -Indexes
    AllowOverride None
    Require all denied
&lt;/Directory&gt;

Son olarak, uygulamanın düzenli olarak güvenlik testlerine tabi tutulması ve zafiyet tarayıcıları kullanılarak sürekli izlenmesi önerilir. Böylece, yeni keşfedilen zafiyetlere karşı proaktif bir yaklaşım sergileyerek, tehditlerin önüne geçebilir ve sistem güvenliğini önemli ölçüde artırabilirsiniz. Unutulmamalıdır ki, güncel ve güvenli bir sistem, her zaman tehditlere karşı en dayanıklı olandır.