Fortinet, FG-IR-25–084 bülteniyle FortiOS ve FortiSwitchManager ürünlerini etkileyen kritik (High) seviyeli bir zafiyeti (CVE-2025–25249) duyurdu. Konuyu uzatmadan direkt teknik zemine inelim: Bu bir Heap-based Buffer Overflow zafiyeti ve cw_acd (Control Wireless Access Point Daemon) servisinde gerçekleşiyor.

Bu yazıda dokümandaki CVSS skorunu ezbere yazmak yerine, bu zafiyetin mimari olarak nasıl çalıştığını ve neden pre-auth (kimlik doğrulama öncesi) RCE (Remote Code Execution) imkanı verdiğini inceleyeceğiz.

Teknik Derinlik: cw_acd ve Bellek Yönetimi Hatası

Zafiyetin merkezinde cw_acd süreci var. Bu daemon, FortiGate'in bir "Wireless Controller" (WLC) olarak davranmasını sağlayan ve Access Point'ler (FortiAP) ile CAPWAP protokolü üzerinden konuşan servistir.

Mekanizma Nasıl İşliyor? Heap-based Buffer Overflow, uygulamanın dinamik bellek yönetimi (heap) sırasındaki bir hatadan kaynaklanır.

  1. Input: Saldırgan, cw_acd servisine özel olarak hazırlanmış (crafted) bir istek gönderir.
  2. Allocation: Servis, gelen veriyi işlemek için bellekte (heap) belirli bir alan ayırır.
  3. Overflow: Kod tarafında yeterli "Input Validation" (girdi doğrulama) yapılmadığı için, ayrılan alandan (buffer) daha büyük bir veri yazılır.
  4. Corruption: Taşan veri, heap içerisindeki bitişik bellek bloklarını (adjacent chunks) ezer. Bu bloklar genellikle fonksiyon işaretçilerini (function pointers) veya kritik nesne verilerini tutar.

Sonuç: Saldırgan, heap yapısını bozarak programın akışını (execution flow) kendi gönderdiği zararlı koda (shellcode) yönlendirebilir. cw_acd servisi FortiOS üzerinde yüksek yetkilerle (genellikle root) çalıştığı için, saldırgan cihaz üzerinde tam kontrol sağlar.

Kritik Nokta: Bu zafiyetin sömürülmesi için bir kullanıcı adı/şifre gerekmez (Unauthenticated). Cihazın ilgili portuna (genellikle CAPWAP — UDP 5246/5247) erişebilen herkes bu vektörü deneyebilir.

Çözüm Mimarisi: Upgrade Matrisi ve Workaround

Bir zafiyet analizi, aksiyon planı olmadan sadece bir haberdir. FG-IR-25–084 için uygulamanız gereken adımları Kalıcı Çözüm (Upgrade) ve Geçici Çözüm (Workaround) olarak ikiye ayırıyoruz.

1. Kesin Çözüm: Firmware Upgrade Planı

Fortinet mühendislik ekibi, ilgili zafiyeti aşağıdaki versiyonlarda giderdi. Mevcut versiyonunuzu kontrol edip, aşağıdaki tabloya göre hedef firmware'e geçiş planlamalısınız:

None

> Not: Upgrade öncesi "Upgrade Path" kontrolü yapmayı ve config yedeği almayı atlamayın. https://docs.fortinet.com/upgrade-tool

2. Workaround: Servis İzolasyonu (Yama Geçilemiyorsa)

Eğer operasyonel sebeplerle (Freeze period, 7/24 kritiklik vb.) hemen upgrade yapamıyorsanız, zafiyeti sömürülemez hale getirmek için Workaround uygulamanız şarttır.

Bu zafiyetin sömürülmesi için saldırganın cw_acd servisine (genellikle UDP 5246–5249) ulaşabilmesi gerekir. Bu servis, interface ayarlarında CAPWAP veya Security Fabric erişimi aktif edildiğinde çalışır.

Aksiyon: Kullanılmayan veya güvenilmeyen interfacelerden (özellikle WAN) bu erişimi kaldırın.

Hangi interface'lerde açık olduğunu tespit edin

show system interface | grep allowaccess

For each interface, remove "fabric" access. For example change : config system interface edit "port1" set allowaccess fabric ssh https next end

to : config system interface edit "port1" set allowaccess ssh https next end

3. Zorunlu Durumlar: Local-In Policy ile Kısıtlama

Bu işlem, trafik CPU'daki zafiyetli servise (daemon) ulaşmadan önce kernel seviyesinde (Local-In) engellenmesini sağlar.

For each interface with the "fabric" service, block CAPWAP-CONTROL access to port 5246 to 5249 through a local-in policy. config firewall service custom edit "CAPWAP-CONTROL" set udp-portrange 5246–5249 next end config firewall addrgrp edit "CAPWAP_DEVICES_IPs" set member "my_allowed_addresses" end config firewall local-in-policy edit 1 (allow from trusted devices) set intf "port1" (where fabric is enabled) set srcaddr "CAPWAP_DEVICES_IPs" set dstaddr "all" set service "CAPWAP-CONTROL" set schedule "always" set action accept next edit 2 (block everyone else) set intf "port1" (where fabric is enabled) set srcaddr "all' set dstaddr "all" set service "CAPWAP-CONTROL" set schedule "always" set action deny next end

FG-IR-25–084, basit bir "güncelleme geçin" uyarısı değil, çalışan servislerinizi ve interface izinlerinizi denetlemeniz için bir çağrıdır. Bir servisin "default" olarak açık gelmesi, onun güvenli olduğu veya sizin ona ihtiyacınız olduğu anlamına gelmez.