Skip to main content
Bu saldırı türünde, hataları ve şüpheli faaliyetleri doğru, bütünlüklü ve zamanında kaydedememe ile bunları izleyip alarmlara dönüştürememe halidir. Saldırgan, hedef sistemde zararlı faliyetlerini log manipülasyonları ile değiştirir. Bu saldırı loglama tespitini geciktirir, kanıtları zayıflatır ve saldırganın kalıcılığını artırır.

Tanım

Uygulama, altyapı ve kimlik katmanlarında üretilen olayların (authentication, authorization, state change, config drift, network egress) eksik veya yanlış biçimde kaydedilmesi veya bu olaylardan telemetri üretilip uyarılara dönüştürülememesi loglarda verinin kanıtlanamaması, log bütünlüğünün korunamaması, saat senkronizasyonunun bozuk olması ve gözlemlenebilirliğin yetersiz olması.
Örneğin API bruteforce 8 saat sürdü, login failure loglanıyordu ama SIEMe forward edilmedi. Account Takeover ve para transferleri oldu.

Root cause’lar

  • “info-only” log seviyesi nedeniyle güvenlik olaylarının atlanması.
  • Login, token refresh, MFA ayrı ve yapılandırılmış.
  • Log bütünlüğü için hmac ve değiştirilemez worm olmaması.
  • Saat senkronizasyonu ve timezone eksikliği.
  • noise ve yüksek false-positive nedeniyle kapatılmış uyarılar.
  • SIEM hatalı ingest, mTLS/allowlistin olmaması.
  • forwarder config hataları (buffer overflow, drop-on-full).
  • Yetki modeli zayıf, geliştirici logları silebiliyor.
  • Üretim dışı logların prod SIEMe karışması .
  • Runbook ve oncall süreçlerinin olmaması.

Etkiler & riskler

  • Gecikmiş tespit (MTTD) ve uzun toparlanma (MTTR).
  • Forensic kanıtın yetersizliği, hukuki/sigorta süreçleri zayıflar.
  • Persistence ve ıateral movement gizlenir.

Tespit

  • Anormal login failure
  • Beklenmeyen kaynak IP’den admin oturumlar.
  • Log ingest hataları
  • Saat kayması
  • Audit boşlukları
  • Agent kalp atışı (heartbeat) kesilmesi
  • Ani whitelist/alert kuralı değişiklikleri

Örnek log

(Sahte: imza yok, negatif bakiye, “rum” kaynağı prod’a sızdırılmış.)

Vulnerable flow

  1. İstemci sahte log hazırlar
  1. Ingest proxy hiçbir doğrulama yapmadan geçirir
  1. Backend parser zayıf şema kontrolü ile kabul eder
  1. SIEM’de korelasyon yok; “source” whitelist dışı fark edilmez
  1. Saldırgan noise üretir, gerçek alarmlar gömülür
  1. SOC geç fark eder; forensic için provenance bulunamaz

Server-side mitigation snippet

Server-side mitigation snippet 2

SIEM detection

Tek istemciden ingest endpoint’ine ani artış (DoS)
Açıklama: 15 dk’da tek IP >500 POST anomalisini loglar. Beklenmeyen label kombinasyonu (app=pay-api, source=rum)
Açıklama: whitelist dışı kaynak ile app eşleşmelerini çıkarır.

SIEM detection / Elasticsearch Query DSL

Spike agg
Anomali: app-source uyumsuzluğu

Sigma rule (YAML)

Patch diff

KANLI ÖRNEK

bugbounty programından öncesinde bulduğum ve bildirdiğim bir poc’u teknik ve kanıtlayıcı parça parça anlatacağım. Kodun ne yaptığı, protokol akışı, neden kabul edildiği, hangi kontrollerin eksik olduğu, tespit ve düzeltme önerileri hepsi mevcut.
Gösterdiklerim eskiden var olan ama bildirmem ile kapatılan bir gerçek bir zafiyete aittir, zafiyeti tekrarlamaya çalışmayınız. Bu bilgiler sadece bilgilendirme amaçlıdır herhangibi bir artniyet yoktur.
Ekrangörüntüsü2025 10 02184419 Pn

1) Ne yapıyor kısaca

İstemci tarafındaki window.sdkConfig değerlerini (özellikle proxyUrl ve suffix) manipüle ederek, üretim Coralogix RUM ingest uç noktasına doğrulamasız log göndermek. İstemci (CSP ile izinli) kurum proxy’si /cxproxycxforward query’siyle Coralogix RUM ingest; burada kaynak/doğruluğu ispatlanmayan log, doğruymuş gibi kabul ediliyor.

2) Kodun satır satır kritik noktaları

Sınıf, bir log gönderim istemcisi gibi davranıyor; konfigüasyonu alıp hedef URL/başlıkları hazırlıyor.
Burası kritik window.sdkConfig istemciden değiştirilebilir. coralogixDomain + suffix birleştirilerek doğrudan Coralogix RUM ingest URL’si üretiliyor ( /browser/v1beta/logs).
Eğer proxyUrl varsa (CSP’de izinli), site proxy’si devreye giriyor ve hedef gerçek ingest cxforward parametresi ile iletiliyor. Böylece CORS/CSP engelleri baypas ediliyor; proxy bir açık forwarder gibi.
public_key taşıyıcı olarak Authorization: Bearer ekleniyor. RUM SDK’larında public key sıklıkla kimliklendirme değil kota/tenant yönlendirme içindir; burada yetkilendirme yerine kullanılması, kaynağı doğrulanmamış logların meşrulaşmasına yol açıyor.
Son adımda POST ile log JSON’ı gönderiliyor; orijin kanıtı yok, proxy de doğrulamıyor.

3) Ağ/protokol akışı

İstemciden Proxye
Proxyden Coralogixe
Neden kabul ediliyor?
  • Kaynak doğrulaması yok: Proxy, cxforward’ı körlemesine forward ediyor (domain allowlist yok).
  • İçerik bütünlüğü yok: Log body’si imzasız (HMAC/EdDSA yok), replay koruması yok (X-Timestamp/nonce yok).
  • RUM ingest modeli: RUM uçları sıklıkla kamuya açık (tarayıcıdan veri bekler), “public key” tenant/stream eşlemesi olarak işlev görebilir; bu, kimlik doğrulama yerine kullanıldığında sahtecilik mümkün olur.

4) Güvenlik zafiyeti sınıflandırması

  • Security Logging & Monitoring Failures: Log provenance (kaynak kökeni) ve bütünlük garantileri yok; pipeline’a sahte telemetri giriyor → tespit/olay müdahalesi çarpıtılıyor.
  • Gözlemlenebilirlik kırılması: Alerting, forensics, SLO/SLA ölçümleri yanlış veriye dayanıyor.

5) İzlenebilir kanıtlar

  • Proxy access logları: /cxproxy için tek IP’den ani POST artışı; olağandışı cxforward hedefleri (regex ile dış domain).
  • RUM indeksinde anomaliler: labels.attacker=en es, injected=true gibi beklenmeyen label anahtarları/değerleri, aşırı ‘critical’ oranı ki onuda biz ayarlıyoruz, istesek low impact birşey gösterebilirdik.
  • Kaynak çeşitliliği: Aynı Authorization: Bearer <public_key> ile birçok ASN/IP.

6) Önerilen Düzeltmeler

Proxy tarafı
  • Sadece bu listeye forward et: ingress.(us1|eu1|ap1).rum-ingress-coralogix.com.
  • cxforward tam URL değil, önceden tanımlı anahtar olsun (örn. dst=rum_us1_logs).
  • İstemciden gelen Authorization strip et; sunucu kendi “upstream key”ini eklesin.
  • HMAC/time-bound imza zorunlu kıl: X-Timestamp, X-Signature.
Nginx (şablon)
filename
(b) İstemci tarafı — güvenilmez konfigürasyona güvenme
  • window.sdkConfigsalt okunur inline, runtime’da override edilmesin.
  • public_key Authorization olarak kullanılmasın; sadece stream/tenant routing için kalsın.
(c) HMAC (sunucu üretir, upstream doğrular)

9) Neden kritik?

Kaynak doğrulaması ve içerik bütünlüğü olmayan bir log pipeline’ı, saldırganın tek bir tarayıcı konsolu ile üretim gözlemlenebilirliğini çöpe çevirmesine izin verir: sahte alarmlar, bastırılmış gerçek olaylar, bozulmuş forensik ve güvenilmez metrikler. Bu, A09’un birebir örneğidir.
Testler yalnızca hedef sistem sahibiyle koordineli yapılmalı, üretim etkisi yaratmamak için oran sınırlaması/rate limit ile çalışılmalı ve kanıtlar PII içermemelidir. Açık kapatılana kadar teknik ayrıntılar (anahtarlar/endpoint’ler) kısmen redakte edilmelidir.