CVE-2026-25769 Analizi: Wazuh Cluster Üzerinde Güvensiz Deserialization Kaynaklı Uzaktan Kod Çalıştırma
1. Giriş – Genel Özet Güvenlik izleme platformları, bir kurumun ağındaki en ayrıcalıklı sistemler arasındadır: tüm uç noktalardan log toplar, dosya bütünlüğünü izler ve gerektiğinde uç noktalara komut gönderirler. Bu nedenle böyle bir platformun ele geçirilmesi, tek bir sunucunun düşmesinden çok daha ağır sonuçlar doğurur. CVE-2026-25769, tam olarak bu senaryoyu mümkün kılan bir zafiyettir. Wazuh’un […]

1. Giriş – Genel Özet
Güvenlik izleme platformları, bir kurumun ağındaki en ayrıcalıklı sistemler arasındadır: tüm uç noktalardan log toplar, dosya bütünlüğünü izler ve gerektiğinde uç noktalara komut gönderirler. Bu nedenle böyle bir platformun ele geçirilmesi, tek bir sunucunun düşmesinden çok daha ağır sonuçlar doğurur.
CVE-2026-25769, tam olarak bu senaryoyu mümkün kılan bir zafiyettir. Wazuh’un cluster (küme) mimarisinde, Worker node’ları ile Master node arasındaki DAPI iletişim kanalında kullanılan JSON deserialization mekanizması, gelen veri üzerinde hiçbir doğrulama yapmadan keyfi Python modülü yüklenmesine izin vermektedir. Sonuç olarak, bir Worker node’a erişim elde eden saldırgan, Master node üzerinde uzaktan kod çalıştırabilir.
Bu yazıda zafiyetin teknik kök nedenini, saldırı yüzeyini, ön koşullarını, kurumsal etkisini ve savunma tarafında alınabilecek önlemleri inceleyeceğiz.
Analiz, yalnızca izole laboratuvar ortamında, izinli sistemler üzerinde ve eğitim/araştırma amacıyla gerçekleştirilmiştir.
| Alan | Bilgi |
|---|---|
| CVE ID | CVE-2026-25769 |
| Etkilenen Ürün | Wazuh (Server / Manager) |
| Etkilenen Versiyonlar | 4.0.0 – 4.14.2 |
| Zafiyet Türü | Remote Code Execution (RCE) |
| CWE | CWE-502: Deserialization of Untrusted Data |
| CVSS Skoru | 9.1 / Critical — CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H |
| Etki | Gizlilik (Yüksek), Bütünlük (Yüksek), Erişilebilirlik (Yüksek) |
| Yayınlanma Tarihi | 17 Mart 2026 |
| Patch Durumu | 4.14.3 sürümünde giderildi |
2. Yasal Uyarı
Yasal Uyarı: Bu yazı yalnızca siber güvenlik farkındalığı, savunma, zafiyet yönetimi ve eğitim amacıyla hazırlanmıştır. Yazıda ele alınan teknik bilgiler, yalnızca izinli ve izole laboratuvar ortamlarında test edilmelidir. İzniniz olmayan sistemlerde zafiyet taraması, exploit denemesi, yetkisiz erişim girişimi veya hizmet kesintisine yol açabilecek işlemler hukuki ve cezai sorumluluk doğurabilir.
Türkiye Cumhuriyeti sınırları içerisinde bilişim sistemlerine yönelik yetkisiz erişim, müdahale, veri bozma, veri değiştirme veya hizmet engelleme gibi eylemler 5237 sayılı Türk Ceza Kanunu ve ilgili mevzuat kapsamında değerlendirilebilir. Bu çalışma herhangi bir sistemi hedef almayı veya kötüye kullanımı teşvik etmez.
Uygulama Notu: Bu yazıdaki testler internete kapalı, izole ve kontrollü bir lab ortamında yapılmıştır. Gerçek sistemlerde uygulanmamalıdır.
3. Terminoloji
| Terim | Açıklama |
|---|---|
| CVE | Common Vulnerabilities and Exposures – Güvenlik açıkları için kullanılan standart kimliklendirme sistemi. |
| CVSS | Common Vulnerability Scoring System – Zafiyetlerin teknik şiddetini puanlamak için kullanılan sistem. |
| CWE | Common Weakness Enumeration – Yazılım ve donanım zayıflıklarını sınıflandıran referans sistem. |
| RCE | Remote Code Execution – Uzaktan kod çalıştırma. |
| SIEM / XDR | Güvenlik olaylarının merkezî olarak toplanıp korele edildiği ve uç noktalarda yanıt üretilen platform mimarileri. |
| Deserialization | Serileştirilmiş (metin/bayt) verinin tekrar programatik nesnelere dönüştürülmesi işlemi. |
| object_hook | Python json.loads() fonksiyonuna verilen ve ayrıştırılan her JSON nesnesi için çağrılan geri çağırım (callback) fonksiyonu. |
| DAPI | Distributed API – Wazuh cluster’ında node’lar arası API isteklerini taşıyan dağıtık iletişim bileşeni. |
| Master / Worker Node | Wazuh cluster mimarisinde sırasıyla merkezî analiz düğümü ve veri toplayan yardımcı düğümler. |
| Fernet | Python cryptography kütüphanesinde bulunan, paylaşılan simetrik anahtara dayalı şifreleme şeması. |
| Allowlist | Yalnızca açıkça izin verilen değerlerin kabul edildiği güvenlik listesi yaklaşımı. |
| PoC | Proof of Concept – Bir zafiyetin varlığını kontrollü biçimde göstermek için hazırlanan kanıt çalışması. |
| Mitigation | Zafiyetin etkisini azaltmaya yönelik geçici veya kalıcı önlem. |
4. Zafiyet Kimlik Bilgileri
| Alan | Bilgi |
|---|---|
| CVE ID | CVE-2026-25769 |
| GHSA ID | GHSA-3gm7-962f-fxw5 |
| Ürün / Bileşen | Wazuh Server – Cluster iletişim katmanı (framework/wazuh/core/cluster/common.py, dapi/dapi.py) |
| Üretici | Wazuh Inc. |
| Etkilenen Versiyonlar | >= 4.0.0, < 4.14.3 (4.0.0 – 4.14.2) |
| Düzeltilen Versiyon | 4.14.3 |
| Zafiyet Türü | Remote Code Execution (Insecure Deserialization) |
| CWE | CWE-502: Deserialization of Untrusted Data |
| CVSS v3.1 Skoru | 9.1 / Critical |
| CVSS Vektörü | CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H |
| Saldırı Vektörü | Network (TCP 1516 – cluster portu) |
| Saldırı Karmaşıklığı | Düşük |
| Yetki Gereksinimi | Yüksek (geçerli cluster anahtarına / Worker node erişimine sahip olmak gerekir) |
| Kullanıcı Etkileşimi | Gerekli değil |
| Kapsam (Scope) | Değişmiş (Changed) – zafiyetli bileşen kendi güvenlik sınırının dışını etkiliyor |
| Yayın Tarihi | 17 Mart 2026 (NVD) |
| Bildiren | Texuguinho1234 (reporter), skraft9 (finder) |
| Kaynak | NVD, GitHub Security Advisory, Wazuh CTI |
5. Etkilenen Sistemler ve Versiyonlar
Zafiyet, yalnızca cluster modunda çalışan Wazuh kurulumlarını ilgilendirir. Tek sunuculu (standalone) kurulumlarda Master–Worker iletişim kanalı bulunmadığı için istismar yüzeyi oluşmaz.
- Etkilenen: Wazuh 4.0.0 – 4.14.2 (cluster modu etkin,
<cluster><disabled>no</disabled></cluster>) - Etkilenmeyen: 4.14.3 ve sonrası; cluster modu kapalı tekil kurulumlar
- CPE:
cpe:2.3:a:wazuh:wazuh:*:*:*:*:*:*:*:*— 4.0.0 (dahil) ile 4.14.3 (hariç) arası
Kurulum sürümünü doğrulamak için:
/var/ossec/bin/wazuh-control info
cat /var/ossec/etc/ossec.conf | grep -A5 "<cluster>"
6. Zafiyetin Arka Planı
Wazuh, kurumsal ağlarda tehdit önleme, tespit etme ve güvenlik olaylarına yanıt verme (SIEM/XDR) amacıyla kullanılan açık kaynaklı bir güvenlik platformudur. Sistemlerden log toplar, dosya bütünlüğünü izler (FIM), zafiyet taraması yapar ve anormallikleri tespit ederek uyarı üretir.
Büyük ve dağıtık ortamlarda Wazuh tek sunucu yerine Master ve Worker node’lardan oluşan bir küme mimarisiyle çalışır. Worker node’lar uç noktalardan topladıkları güvenlik loglarını, uyarıları ve agent durum bilgilerini Master node’a raporlar. Master node ise tüm kuralların, analizlerin ve veritabanının merkezidir.
Bu iletişimin akışı şöyledir:
- Worker node, ilettiği veriyi JSON formatına dönüştürür.
- Paket, node’lar arasında paylaşılan simetrik Fernet anahtarıyla şifrelenir.
- Şifreli paket TCP 1516 portu üzerinden Master node’a gönderilir.
- Master şifreyi çözer ve
json.loads()ile veriyi Python nesnelerine dönüştürür. - Elde edilen veri merkezî güvenlik kurallarından geçirilerek analiz edilir.
Zafiyet, 4. adımdaki dönüştürme işleminde ortaya çıkar. Master node, JSON’u ayrıştırırken object_hook parametresi olarak as_wazuh_object() fonksiyonunu kullanır. Mimarinin temel varsayımı şudur: Fernet ile şifresi başarıyla çözülebilen her paket güvenilirdir. Bu varsayım nedeniyle çözülen veri üzerinde hiçbir içerik doğrulaması yapılmaz.
7. Teknik Kök Neden Analizi
Zafiyet, framework/wazuh/core/cluster/common.py dosyasındaki as_wazuh_object() fonksiyonunda (satır 1830-1866) yer alır. Fonksiyon, JSON içinde __callable__ anahtarını gördüğünde şu adımları uygular:
- Kullanıcı kontrolündeki
__module__değerini okur. - Bu değeri hiçbir allowlist doğrulaması yapmadan
import_module()ile içe aktarır. getattr()ile modülden istenen fonksiyonu alır.- Elde edilen fonksiyon nesnesini döndürür — ve bu nesne daha sonra çağrılır.

Çalıştırma noktası ise framework/wazuh/core/cluster/dapi/dapi.py dosyasındadır: json.loads(request, object_hook=c_common.as_wazuh_object) ile deserialize edilen fonksiyon, DistributedAPI.run_local() içinde f(**f_kwargs) şeklinde argümanlarıyla birlikte çağrılır.
Yani veri okumak için tasarlanmış bir mekanizma, saldırgan tarafından işletim sistemi seviyesinde komut çalıştırmaya dönüştürülebilir hale gelmektedir. Zincirin kırıldığı üç nokta özetle şudur:
- Örtük güven: Master, kimliği doğrulanmış her Worker mesajını sorgusuz kabul eder.
- Allowlist yokluğu: Deserialization sırasında yüklenebilecek modüller kısıtlanmamıştır.
- Doğrulamasız çalıştırma: Deserialize edilen çağrılabilir nesne ek bir tip/yetki kontrolünden geçmeden çalıştırılır.
8. Saldırı Yüzeyi ve Ön Koşullar
Ana saldırı yüzeyi, Master node’un cluster iletişimi için dinlediği TCP 1516 portudur. Bu port üzerinden hizmet veren DAPI modülü, Worker node’lardan gelen JSON verilerini kabul eden giriş noktasıdır.
Zafiyetin pratikte istismar edilebilmesi için iki ön koşul gerekir:
1. Ağ erişimi. Saldırganın Master node’un TCP 1516 portuna paket gönderebiliyor olması gerekir. Port firewall kurallarıyla yalnızca bilinen Worker IP adreslerine sınırlandırılmışsa, doğrudan dışarıdan saldırı mümkün olmaz; saldırının bir Worker node üzerinden gerçekleşmesi gerekir.
2. Geçerli cluster anahtarı. Gönderilen paketin Master tarafından kabul edilip şifresinin çözülebilmesi için, saldırganın node’lar arasında paylaşılan simetrik Fernet anahtarına sahip olması gerekir. Bu anahtar ossec.conf içindeki <cluster><key> alanında saklanır.
Bu ikinci koşul, CVSS vektöründeki PR:H (yüksek yetki gereksinimi) değerinin nedenidir. Ancak pratikte anahtar tüm Worker node’larda düz metin olarak bulunduğundan, tek bir Worker’ın ele geçirilmesi tüm cluster’ın ele geçirilmesi anlamına gelir. Zafiyetin kritik kabul edilmesinin nedeni budur: yatay bir sızıntıyı doğrudan merkezî bir çöküşe dönüştürür.
9. Etki Analizi
Master node yüksek yetkilerle çalıştığından, başarılı istismar kurumun güvenlik altyapısının tamamen ele geçirilmesi anlamına gelir.
Gizlilik. Ağdaki tüm cihazlardan toplanan güvenlik logları, agent verileri, Active Directory yapılandırmaları ve hassas konfigürasyon dosyaları açığa çıkar. Merkezî güvenlik sistemi, tanımı gereği kurumun en hassas verisinin toplandığı yerdir.
Bütünlük. Saldırgan kendi izlerini gizlemek için geçmiş logları silebilir veya değiştirebilir; merkezî tespit kurallarını devre dışı bırakabilir, kendi altyapısını allowlist’e ekleyebilir veya sahte alarmlar üreterek SOC ekibini yanlış yönlendirebilir. Bu, en tehlikeli senaryodur: saldırı devam ederken savunma tarafı hiçbir şey görmez.
Erişilebilirlik. Master sunucusu çökertilebilir, veritabanı silinebilir veya sistem fidye yazılımıyla şifrelenebilir.
Yayılma. Wazuh’un Active Response özelliği, Master’ın uç cihazlarda komut çalıştırmasına izin verir. Master’ı ele geçiren saldırgan bu merkezî yetkiyi suistimal ederek ağa bağlı tüm uç noktalara eşzamanlı olarak zararlı kod dağıtabilir. Bu nedenle zafiyet tekil bir sunucu problemi değil, zincirleme bir kurumsal risk olarak değerlendirilmelidir.
CVSS vektöründeki S:C (Scope: Changed) değeri de tam olarak bunu ifade eder: zafiyetli bileşen, kendi güvenlik sınırının ötesindeki kaynakları etkileyebilmektedir.
10. Lab Ortamı
Doğrulama, internete kapalı ve izole bir laboratuvar yapısında gerçekleştirilmiştir.
- Sanallaştırma: Docker / Docker Compose
- Hedef Sistem: Wazuh Manager (cluster modunda Master node)
- Zafiyetli Uygulama: Wazuh 4.x (4.14.3 öncesi sürüm)
- Saldırgan/Test Makinesi: Aynı izole ağdaki Worker node container’ı
- Ağ Yapısı: İzole bridge ağı, dışa kapalı
- İnternet Erişimi: Kapalı
- Loglama: Açık
- Snapshot: Alındı; test sonunda ortam sıfırlandı
11. Doğrulama Bölümü
Cluster Yapısı
Master node konfigürasyonu (master.xml); cluster adı, node tipi, paylaşılan anahtar ve bind adresini tanımlar.

Worker konfigürasyonu (worker.xml) büyük ölçüde aynıdır; yalnızca node_type değeri worker, node_name değeri worker01 olarak ayarlanır. Her iki node da aynı key değerini paylaşır — Worker’ın Master ile kimlik doğrulamasını sağlayan şey de budur.
Payload Yapısı
Doğrulama için, Wazuh’un deserialization mekanizmasını tetikleyen bir JSON objesi hazırlanır. __callable__ anahtarı Python’un subprocess modülündeki bir fonksiyonu işaret edecek şekilde ayarlanır; çalıştırılacak argümanlar f_kwargs içine yerleştirilir ve request_type değeri local_master olarak belirlenerek isteğin doğrudan Master üzerinde işlenmesi sağlanır.

Doğrulama Scripti

Script, Wazuh’un LocalClient sınıfını framework dizininden dinamik olarak import etmek için load_module() kullanır; bu, container içinde çalışırken oluşabilecek Python import path sorunlarını önler. Ardından bir LocalClient örneği oluşturarak yerel cluster soketine bağlanır ve dapi komutuyla payload’u iletir.

Script, hazırlanan payload’u şifrelenmiş cluster kanalı üzerinden Master node’a iletir. Master paketi çözüp deserialize ettiğinde, belirtilen fonksiyon Master üzerinde çalışır ve komut çalıştırma doğrulanmış olur.

PoC Notu: Bu bölümde yalnızca izole laboratuvar ortamında çalıştırılmış, doğrulama amaçlı çıktılar paylaşılmıştır. Gerçek sistemlerde kötüye kullanıma yol açabilecek tam exploit kodu, hazır payload veya otomasyon ayrıntıları bilinçli olarak yayımlanmamıştır. Teknik detayın tamamı üreticinin resmî advisory’sinde kamuya açıktır.
12. Tespit ve Log Analizi
Bu zafiyetin istismarı şifreli cluster kanalı içinde gerçekleştiği için ağ seviyesinde içerik denetimiyle yakalanması zordur. Bu nedenle tespit çabası Master node üzerindeki davranışa odaklanmalıdır.
Süreç (process) telemetrisi
wazuh-clusterdsüreci altında beklenmeyen child process oluşumu — özelliklesh,bash,curl,wget,nc,pythonçağrıları- Master üzerinde normal iş akışında görülmeyen
subprocesskaynaklı komut çalıştırmaları - Wazuh servis kullanıcısı bağlamında beklenmedik giden ağ bağlantıları
Cluster ve DAPI logları
/var/ossec/logs/cluster.logiçinde alışılmadık DAPI istek tipleri veya artan exception yoğunluğurequest_type: local_masteristeklerinde ani ve açıklanamayan artış- Beklenmeyen node adlarından gelen cluster bağlantı denemeleri
Ağ seviyesi
- TCP 1516 portuna bilinen Worker IP listesi dışından gelen bağlantılar
- Cluster trafiğinde normal dışı paket boyutları
Bütünlük izleme
/var/ossec/etc/ossec.conf, kural dosyaları ve Active Response yapılandırmalarında beklenmeyen değişiklikler- Master üzerinde
/tmpve benzeri dizinlerde yeni oluşan çalıştırılabilir dosyalar - Log dosyalarında geriye dönük silme veya kesilme belirtileri
Bir istismar şüphesi durumunda Master node’un ürettiği alarmlara artık güvenilemeyeceği unutulmamalıdır; doğrulama, Wazuh dışındaki bağımsız bir telemetri kaynağı üzerinden yapılmalıdır.
13. Mitigasyon ve Çözüm Önerileri
Kalıcı Çözüm
- Wazuh’u 4.14.3 veya daha güncel bir sürüme yükseltin. Düzeltme, deserialization sırasında keyfi modül import’unu engelleyen bir allowlist getirmektedir.
LocalClientile hangi kullanıcıların ve süreçlerin etkileşime girebileceğini denetleyin ve kısıtlayın.
Geçici Önlemler (patch uygulanamıyorsa)
- Ağ erişimini kısıtlayın. TCP 1516 portuna yalnızca bilinen Worker IP adreslerinden bağlantıya izin verin; portun internete açık olmadığından emin olun.
- Ağ segmentasyonu uygulayın. Master ve Worker node’ları ayrı, sıkı denetlenen bir segmentte tutun.
- Worker node bütünlüğünü izleyin. Zincirin ilk halkası Worker’ın ele geçirilmesi olduğu için, Worker’lardaki anormallikler erken uyarı işlevi görür.
- Cluster anahtarlarını rotasyona alın. Düzenli periyotlarla ve her şüpheli olay sonrasında
<cluster><key>değerini yenileyin. - Anahtar dosyası izinlerini sıkılaştırın.
ossec.confdosyasının gereksiz hesaplar tarafından okunmasını engelleyin.
Yama Sonrası Doğrulama
# Sürüm kontrolü
/var/ossec/bin/wazuh-control info
# Cluster sağlık kontrolü
/var/ossec/bin/cluster_control -l
Yükseltme sonrası tüm node’ların (Master ve tüm Worker’lar) aynı sürümde olduğundan emin olun; karışık sürümlü bir cluster’da zafiyetli node’lar açık kalmaya devam eder.
14. Sonuç
CVE-2026-25769, Wazuh cluster mimarisinde CWE-502 sınıfında değerlendirilen ve uygun koşullarda kurumun tüm güvenlik altyapısının ele geçirilmesine yol açabilen kritik bir zafiyettir. Kök nedeni, node’lar arası iletişimde şifrelemenin veri doğrulamasının yerine geçtiği varsayımıdır — as_wazuh_object() fonksiyonu, kimliği doğrulanmış bir kaynaktan geldiği için içeriği güvenilir kabul etmekte ve keyfi modül yüklenmesine izin vermektedir.
Buradaki asıl ders teknik detaydan daha geneldir: taşıma katmanı güvenliği, uygulama katmanı girdi doğrulamasının yerini tutmaz. Fernet şifrelemesi paketin kaynağını doğrular, ancak içeriğinin zararsız olduğunu garanti etmez. Deserialization gerçekleştiren her bileşen, veri kaynağının güvenilirliğinden bağımsız olarak allowlist tabanlı tip ve modül kısıtlaması uygulamalıdır.
En etkili savunma yaklaşımı; üretici yamasının hızla uygulanması, saldırı yüzeyinin ağ segmentasyonuyla daraltılması, cluster anahtarlarının düzenli rotasyonu ve Master node üzerinde bağımsız süreç telemetrisiyle izleme yapılmasıdır.
15. TL;DR
- CVE-2026-25769, Wazuh cluster’ında güvensiz deserialization kaynaklı bir uzaktan kod çalıştırma (RCE) zafiyetidir.
- Etkilenen versiyonlar: 4.0.0 – 4.14.2 (yalnızca cluster modu). Düzeltilen: 4.14.3
- CVSS: 9.1 / Critical —
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H, CWE-502 - Kök neden:
as_wazuh_object()fonksiyonunun JSON içindeki__module__değerini allowlist doğrulaması olmadanimport_module()ile yüklemesi. - Ön koşul: Worker node erişimi + paylaşılan Fernet cluster anahtarı. Tek bir Worker’ın ele geçirilmesi tüm cluster’ı düşürmeye yeter.
- Etki: Master node üzerinde yüksek yetkiyle kod çalıştırma; log manipülasyonu ve Active Response üzerinden tüm ağa yayılma.
- En güvenilir çözüm: 4.14.3’e yükseltmek. Yapılamıyorsa TCP 1516 erişimini kısıtlayın, segmentasyon uygulayın, cluster anahtarını rotasyona alın.
- Testler yalnızca izole lab ortamında yapılmalıdır.
16. Kaynaklar
- NVD – CVE-2026-25769: https://nvd.nist.gov/vuln/detail/CVE-2026-25769
- MITRE – CVE-2026-25769: https://www.cve.org/CVERecord?id=CVE-2026-25769
- GitHub Security Advisory (GHSA-3gm7-962f-fxw5): https://github.com/wazuh/wazuh/security/advisories/GHSA-3gm7-962f-fxw5
- Wazuh CTI – Vulnerability Database: https://cti.wazuh.com/vulnerabilities/cves/CVE-2026-25769
- CWE-502 – Deserialization of Untrusted Data: https://cwe.mitre.org/data/definitions/502.html
- CVSS v3.1 Calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator
- Tenable – Wazuh Server 4.0.0 < 4.14.3 RCE: https://www.tenable.com/plugins/nessus/303595
- Resecurity – CVE-2026-25769 Analizi: https://www.resecurity.com/blog/article/cve-2026-25769-critical-remote-code-execution-in-wazuh-via-unsafe-deserialization
- TryHackMe – Wazuh: CVE-2026-25769 (uygulamalı lab odası): https://tryhackme.com/room/wazuhcve202625769
Yazar hakkında
İsmail Özdoğan
Author
Bültene abone olun
Yeni siber güvenlik yazıları, araştırmalar ve donanım-lab notları — doğrudan gelen kutunuza.
İlgili yazılar

CVE-2026-31431 Teknik Analizi: Linux Kernel Üzerinde “Copy Fail” Yerel Yetki Yükseltme Zafiyeti


