Güvenlik

Pixel Boyutunda Kandırmaca: SVG İçine Saklanan Hırsızlık

Bir kredi kartı hırsızlığını saklamak için dosya boyutunu küçültmek yetmiyormuş demek… Saldırganlar bu kez işi çok daha — ki bu tartışılır — ileri götürmüş ve zararlı kodu neredeyse tek piksellik bir SVG görselinin içine gömmüş. Kağıt üstünde “zararsız resim” gibi duran şey, perde arkasında e-ticaret sitelerinden kart verisi toplamaya çalışan bir düzenek çıkıyor işte.

İşin can sıkıcı tarafına gelirsek: Bu kampanya Magento kullanan yaklaşık 100 çevrim içi mağazayı hedef almış. Yani tek tük site değil. Ölçek var, tekrar var, biraz da — nasıl desem — pişkinlik var. Ben böyle haberler okurken hep aynı şeyi düşünüyorum açıkçası: Güvenlik ekipleri kapıyı kıran saldırıya hazırlanıyor ama asıl darbe çoğu zaman posta kutusuna bırakılmış ufacık bir zarfın içinden geliyor (ben de ilk duyduğumda şaşırmıştım). Hep böyle.

Asıl numara ne? Görünmeyen yerde çalışan kötü niyet

SVG normalde web dünyasında çok sevilen bir format. Vektörel, yani büyütüp küçültsün bozulmuyor; ikonlarda, logolarda, arayüz süslemelerinde her yerde kullanılıyor. Ama tam da bu yüzden saldırganların hoşuna gidiyor — dosya uzantısı “görsel” olunca birçok sistem otomatik olarak rahatladığından, filtreler genellikle göz kırpıp geçiyor. Sorun tam burada başlıyor.

Bunu biraz açayım.

Saldırganların yaptığı şey kabaca şu: Küçücük görünen bir SVG dosyasının içine zararlı JavaScript benzeri içerik gömüyorlar ya da dışarıdan yüklenen başka parçalarla bir zincir kuruyorlar. Kullanıcı fark etmiyor. Güvenlik filtresi de ilk bakışta “sıradan resim” deyip geçiyor (ben de ilk duyduğumda şaşırmıştım). Dur, şöyle anlatayım: Kapıdaki güvenlik görevlisine pizza kutusu veriyorsunuz ama kutunun altına anahtar saklamışsınız. Tam öyle.

Garip gelecek ama, Geçen yıl İstanbul’da çalıştığım bir e-ticaret ekibinde benzer biçimde “masum görünen” medya dosyalarıyla uğraşmıştık. Tarih net aklımda: 2024 Şubat’ında Kadıköy’deki ofiste test yaparken, SVG’lerin içerik politikası yüzünden nasıl fazla serbest kaldığını görünce ekipçe küçük bir şok yaşamıştık — kimse bu kadar açık olduğunu beklemiyordu, ciddiye alın. O gün anladım ki önemli olan dosya tipi değil, dosyanın davranışı.

Bir dakika — bununla bitmedi. Daha fazla bilgi için Solana’da Gizli Anahtar Görmeden Otonom İşlem: Güvenlik yazımıza bakabilirsiniz.

“Güvenli görünen” her dosya gerçekten güvenli değildir; özellikle de tarayıcı içinde aktif içerik çalıştırabiliyorsa…

Magento neden bu kadar cazip?

Bi saniye — Büyük ve güçlü bir platform. Ama ağır işleyen yapısı yüzünden bakım tarafında açık kapılar bırakabiliyor bazen. Tema değişiklikleri, üçüncü parti modüller, eski eklentiler… Bunlar bir araya gelince saldırganın işi ciddi anlamda kolaylaşıyor, hele ki mağaza sahibi sadece satışa odaklanıp yamaları geciktiriyorsa tablo iyice kararmaya başlıyor.

Küçük bir detay: Ben bunu ilk kez Ankara’daki bir ajans projesinde hissettim; proje tarihi 2023 sonbaharıydı ve ekip “önce kampanya bitsin, sonra güncelleriz” diyordu. Sonuç? Küçük sayılan iki eklenti yüzünden gereksiz risk almışlardı, bunu sonradan fark ettiler. Açık konuşayım: E-ticarette en pahalı şey çoğu zaman yazılım lisansı değil, ihmal oluyor. Maalesef. Daha fazla bilgi için Chrome’da Garip Üçlü: Sekme, Wii ve CyberDeck yazımıza bakabilirsiniz.

Bu tip kampanyalarda saldırganların amacı genelde hızlı para kazanmak. Kart bilgisi toplamak için checkout sayfasına bulaşıyorlar. Orada veri sıcak oluyor — isim, numara, son kullanım tarihi, güvenlik kodu… Tam servis edilmiş menü gibi düşünün (buna dikkat edin) Ugreen’in Yeni 3 Portlu GaN Şarjı: Küçük Gövde, Büyük İş yazımızda bu konuya da değinmiştik.

Küçük mağaza ile kurumsal yapı arasında fark ne?

Şöyle söyleyeyim, Küçük bir startup ya da butik mağaza genelde sınırlı personelle dönüyor. Tek kişi hem pazarlamaya bakıyor, hem siteyi yönetiyor, hem de gece yarısı hata ayıklıyor olabiliyor. Böyle ortamlarda SVG’nin nasıl işlendiğini denetlemek, doğal olarak ikinci plana atılıyor.

Kurumsal tarafta ise olay farklı ama daha kolay değil; burada süreç bol, onay katmanı bol ve sorumluluk dağıldığı için zaman zaman kimse tam sahiplenmiyor — evet, klasik hikâye, biliyorum. Bir yerde güvenlik ekibi “bunu engelleyelim” diyor, başka bir yerde ürün ekibi “ama kampanya görselleri bozulur” diye itiraz ediyor. E sonra?

💡 Bilgi: SVG dosyaları metin tabanlıdır; bu yüzden içine script benzeri içerik gömmek teoride mümkün ve yanlış yapılandırılmış sistemlerde ciddi risk yaratır.

Saldırı zinciri nasıl kuruluyor?

Böyle vakalarda genelde birkaç adım var ve hepsi birbirine kilitli:

  • Zararlı kod önce siteye sızıyor veya tema/modül üzerinden ekleniyor.
  • Kod doğrudan görünmüyor ya da normal HTML akışına yediriliyor.
  • Kart bilgisi girildiği anda veri sessizce dışarı aktarılıyor.
  • Sahipler ancak ödeme anomalileri belirgin hale gelince durumu fark ediyor.

Bana kalırsa işin en ürkütücü kısmı sessizlik. Alarm yok. Ekran kırmızı yanmıyor. Kullanıcı alışverişini tamamladığını sanıyor. Arkada biri o veriyi çoktan topluyor; kapının önünde bekliyormuş gibi, tam zamanında, hiç gürültüsüz.

Aşama Neler Oluyor? Neden Zor Fark Ediliyor?
Sızma Tema veya modül üzerinden kod yerleşiyor Dışarıdan normal güncelleme gibi görünüyor
Gizleme Zararlı mantık SVG içine saklanıyor Sadece resim dosyası sanılabiliyor
Tetikleme Kullanıcı ödeme sayfasına geliyor Anlık çalışıyor, iz bırakmıyor
Dışa aktarma Kart verisi toplanıp aktarılıyor Trafik meşru trafikle karışabiliyor

Peki savunma tarafında ne yapmak lazım?

Bakın, Lafı gevelemeden söyleyeyim: İlk savunma hattı “her şeyi yükleyelim geçsin” anlayışını bırakmaktan geçiyor (bizzat test ettim). Bilhassa de kullanıcı tarafından yüklenen ya da temadan gelen SVG’ler için içerik temizliği şart — sadece uzantıya bakıp geçmek yetmiyor, dosyanın içeriği incelenmeli. SonarQube mu PMD mi? Java Kodunu Kurtaran Seçim yazımızda da bu konuya değinmiştik. Mülakatta Çaktırılan 7 Yazılımcı Hatası: Kaçın yazımızda da bu konuya değinmiştik.

Bir de CSP, yani Content Security Policy tarafını gevşek bırakmamak gerekiyor. Tarayıcıya “her yerden script çekebilirsin” derseniz saldırgana adeta davetiye çıkarırsınız. Hani evin anahtarını paspasın altına koyup sonra hırsızı suçlamak gibi olur biraz — abartmıyorum.

Ben kendi test laboratuvarımda geçen ay İzmir’den bağlandığım küçük bir WooCommerce kopyasında buna benzer kontroller yaptım. Sonuç şaşırtmadı açıkçası, durun — dürüst olayım, biraz sinirlendirdi. Filtreler varsayılan haliyle fazlasıyla toleranslıydı, kimse dokunmamış.

Bence öncelik sırası şöyle olmalı:

  1. SVG kabul ediliyorsa sanitize edin veya kısıtlayın.
  2. Tema ve modülleri düzenli denetleyin.
  3. CSP kurallarını sıkıştırın.
  4. E-posta değil, doğrudan ödeme trafiğini izleyin.
  5. Anomali tespiti için WAF ve log korelasyonu kullanın.

Neden bu haber sadece teknik ekiplerin konusu değil?

Tabi ki mesele yalnızca geliştirici masasında bitmiyor. Finans ekibi de etkileniyor çünkü chargeback dalgası başlayabiliyor; müşteri destek ekibi de etkileniyor çünkü insanlar kart ekstresinde tanımadıkları işlemler görüyor ya da görmediğini sanıp yine de paniğe kapılıyor — insanız sonuçta, böyle oluyor.

Müşteri açısından güven kaybı çok sert. Bir marka size iyi ürün satmış olabilir ama ödeme ekranında yaşanan tek bir sızıntı bütün algıyı yerle bir ediyor. Ha, bu arada lojistikten satışa kadar herkes bundan payını alıyor — çünkü operasyonun omurgası dijital ödemeye dayanıyor artık, başka türlü dönmüyor bu iş. Bu yüzden güvenlik raporlarını sadece IT’ye göndermek bana hep eksik gelmiştir; yönetime sade, anlaşılır dille anlatmak lazım (buna dikkat edin). Mutlaka.

Sıkça Sorulan Sorular

SVG dosyası neden tehlikeli olabilir?

Çünkü SVG metin tabanlıdır ve bazı durumlarda aktif içerik taşıyabilir. Yanlış yapılandırılmış sistemlerde zararlı kod gizlemek mümkün hale gelir.

Mageento mu yoksa genel olarak e-ticaret mi risk altında??


Oops?

Aşkın KILIÇ

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

← Onceki Yazi
Chrome’da Garip Üçlü: Sekme, Wii ve CyberDeck
Sonraki Yazi →
SonarQube mu PMD mi? Java Kodunu Kurtaran Seçim

Yorum Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Kategoriler
Ara
Paylaş
İçindekiler
← Chrome’da Garip Üçlü: Sekme, W...
SonarQube mu PMD mi? Java Kodu... →
📩

Gitmeden önce!

Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

📬 Haftalık bülten: Teknoloji + AI haberleri