0Pricing
Cyber Security Academy · Ders

Gizli Bilgilerin Dağınık Hâle Gelmesi Sorunu

Sabit kodlanmış gizli bilgilerin neden tehlikeli olduğu.

Gizli Bilgilerin Dağınık Hâle Gelmesi Sorunu, CoddyKit'te ücretsiz bir Cyber Security Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cyber Security Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cyber Security Academy kursu toplamda 4 dersten oluşur.

Gizli Bilgilerin Kontrolsüz Yayılması Nedir?

Gizli bilgilerin kontrolsüz yayılması, hassas kimlik bilgilerinin bir kuruluş içinde denetimsiz biçimde dağılmasıdır. Gizli bilgi, erişim sağlayan her şeydir: uygulama programlama arayüzü anahtarları, veritabanı parolaları, OAuth belirteçleri, TLS özel anahtarları, SSH anahtarları ve şifreleme anahtarları.

Bu yayılma, gizli bilgiler hiçbir zaman bulunmamaları gereken yerlere dağıldığında gerçekleşir:

  • Kaynak kodu ve yapılandırma dosyaları
  • CI/CD işlem hatları ve ortam değişkenleri
  • Konteyner görüntüleri ve kod olarak altyapı
  • Sohbet iletileri, vikiler ve talep yönetim sistemleri

Bir gizli bilgi birçok yerde bulunduğunda, onu güvenilir biçimde izleme, yenileme veya iptal etme olanağınızı kaybedersiniz.

Sabit Kodlanmış Secret

En yaygın temel neden, kaynak koda doğrudan yazılmış bir kimlik bilgisi olan sabit kodlanmış secrettır. Geliştirme sırasında kullanışlı görünür, ancak kalıcı bir güvenlik açığına dönüşür.

Uygulama kodunda sabit kodlanmış bir veritabanı parolası şöyle görünür:

Artık bu dosyaya okuma erişimi olan herkes üretim parolasına sahiptir. Buna her geliştirici, her CI çalıştırıcısı ve daha sonra depoyu klonlayan herkes dahildir.

# config.py  (ANTI-PATTERN - do not do this)
DB_HOST = "prod-db.internal"
DB_USER = "app_service"
DB_PASSWORD = "S3cr3t!Pr0d_2024"   # hardcoded - dangerous
API_KEY  = "sk_live_4eC39HqLyjWDarjtT1zdp7dc"

Git Geçmişi Neden Hiçbir Şeyi Unutmaz

Sabit kodlanmış secret'ların kritik bir tehlikesi sürüm denetimi geçmişidir. Daha sonraki bir kayıtta bir secret'ı silseniz bile, her klonun Git geçmişinde kalıcı olarak varlığını sürdürür.

Sızdırılmış bir secret'ı geçmişten istediğiniz zaman geri alabilirsiniz:

Bu nedenle bir secret'ı en son kayıttan silmek sızıntıyı gidermez. Secret ele geçirilmiş kabul edilmeli ve hemen yenilenmelidir.

# A secret deleted in HEAD is still in history
git log -p --all -S 'S3cr3t!Pr0d_2024'

# Searching all branches and tags reveals it
git grep 'API_KEY' $(git rev-list --all)

Herkese Açık Depo Felaketi

Sabit kodlanmış secret'lar içeren bir depo GitHub gibi herkese açık bir sunucuya gönderildiğinde, otomatik botlar bu depoyu saniyeler ila dakikalar içinde tarar.

Gerçek dünyadaki sonuçlar arasında şunlar vardır:

  • Bulut faturası şokları sızdırılan AWS anahtarlarının kripto para madenciliği filoları kurmak için kullanılması ve bir gecede on binlerce dolarlık ücret oluşturması.
  • Veri ihlalleri açığa çıkan veritabanı kimlik bilgilerinin tüm verilerin dışarı aktarılmasına yol açması.
  • Yatay ilerleme sızdırılan tek bir belirtecin altyapının daha derinlerine ilerlemek için kullanılması.

Bulut sağlayıcıları ve GitHub artık sızdırılan anahtarları otomatik olarak algılayan ve bazen otomatik olarak iptal eden gizli bilgi taraması özelliklerini çalıştırıyor, ancak bir güvenlik ağı olarak buna güvenemezsiniz.

Konteyner Görüntülerindeki Gizli Bilgiler

Konteynerler, gizli bilgilerin dağılması için fark edilmesi zor bir yol oluşturur. Derleme sırasında bir görüntüye gömülen gizli bilgiler görüntü katmanlarında saklanır ve görüntüyü çeken her kayıt deposuna ve sunucuya gönderilir.

Yaygın bir hata, bir gizli bilgi dosyasını görüntüye kopyalayıp daha sonraki bir katmanda silmektir; ancak gizli bilgi önceki katmanda hâlâ bulunur:

Görüntüyü çeken herkes bu katmanı çıkarıp anahtarı okuyabilir. Bunun yerine derleme sırasında gizli bilgiler veya çalışma zamanında enjeksiyon kullanın.

# Dockerfile ANTI-PATTERN
COPY id_rsa /root/.ssh/id_rsa
RUN git clone git@github.com:org/private.git
RUN rm /root/.ssh/id_rsa   # too late - still in earlier layer

# Inspect layers to recover the deleted secret
docker history --no-trunc myimage:latest
docker save myimage:latest | tar -xf -

Ortam Değişkenleri Bir Kasa Değildir

Gizli bilgileri koddan çıkarıp ortam değişkenlerine taşımak bir ilerlemedir, ancak eksiksiz bir çözüm değildir. Ortam değişkenleri sabit kodlama sorununu çözer, fakat yeni açığa çıkma yolları oluşturur:

  • Çökme dökümlerinde ve hata yığın izlerinde sızabilir
  • Linux'ta /proc/<pid>/environ aracılığıyla diğer işlemler tarafından görülebilir
  • Tam ortamı yazdıran hata ayıklama araçları tarafından günlüğe kaydedilebilir
  • Yanlışlıkla kayda eklenen düz metin .env dosyalarında saklanabilir

Ortam değişkenleri düşük hassasiyetli yapılandırmalar için kabul edilebilir, ancak yüksek değerli gizli bilgiler erişim denetimi ve denetim kayıtları olan özel bir gizli bilgi yöneticisinde tutulmalıdır.

Etki Alanı Sorunu

Dağınıklık, olay müdahalesini neredeyse imkânsız hâle getirir. Bir secret her yerde bulunduğunda iki sorunun yanıtlanması mümkün olmaz:

  • Nerede? Bulamadığınız bir şeyi yenileyemezsiniz.
  • Kim kullandı? Merkezi erişim kayıtları olmadan bir ihlalin kapsamını belirleyemezsiniz.

Tek bir sızdırılmış kimlik bilgisinin etki alanı, dağınıklık arttıkça büyür. On hizmette yeniden kullanılan ortak bir parola, tek bir sızıntının on hizmetin tamamını tehlikeye atması anlamına gelir. Merkezileştirme ve benzersiz, kısa ömürlü gizli bilgiler bu alanı önemli ölçüde küçültür.

Kayıttan Önce Gizli Bilgileri Algılama

Bir sızıntıyı durdurmak için en ucuz nokta, sızıntının sürüm denetimine girmesinden öncesidir. Ön kayıt gizli bilgi tarayıcıları, hazırlama alanındaki değişiklikleri inceler ve kimlik bilgisi kalıpları içeren kayıtları engeller.

Yaygın açık kaynak araçları arasında gitleaks, trufflehog ve detect-secrets bulunur. Tipik bir ön kayıt kancası yerel olarak çalışır:

Bunu CI içinde sunucu tarafı taramayla birlikte kullanın; böylece yerel kancayı atlayan bir geliştirici yine de yakalanır.

# Scan a repo for secrets with gitleaks
gitleaks detect --source . --verbose

# Scan only staged changes (pre-commit)
gitleaks protect --staged --redact

# Deep-scan full history including dangling commits
trufflehog git file://. --only-verified

Secret Sızdığında Giderme

Bir secret bulunmaması gereken bir yere ulaşırsa şu sırayı izleyin. Önce yenileme yapılmalıdır; kopyalar zaten var olabileceğinden geçmişi temizlemek ikincil adımdır.

  • 1. Yenileyin sızan secret'ı iptal edin ve hemen yenisini oluşturun.
  • 2. Denetleyin maruz kalma süresi boyunca yetkisiz kullanım olup olmadığını görmek için erişim kayıtlarını inceleyin.
  • 3. Temizleyin secret'ı geçmişten kaldırın (ör. git filter-repo) ve zorla gönderin.
  • 4. Önleyin tarama ekleyin ve yeniden ortaya çıkmaması için secret'ı bir yöneticinin içine taşıyın.

1. adımı asla atlamayın. Herkese açık bir ortama değen bir secret kesinlikle ele geçirilmiş sayılır.

Gizli Bilgiler İçin En Az Ayrıcalık İlkesi

Gizli bilgiler gereğinden fazla yetkili ve gereğinden fazla paylaşılmış olduğunda dağınıklık daha da kötüleşir. En az ayrıcalık ilkesini uygulamak, bir sızıntı gerçekleştiğinde zararı sınırlar:

  • Her hizmete paylaşılan bir kimlik bilgisi yerine kendi kimlik bilgisini verin.
  • Her gizli bilginin kapsamını ihtiyaç duyduğu en az izinlerle sınırlayın (salt okunur veya yönetici).
  • Otomatik olarak süresi dolan kısa ömürlü kimlik bilgilerini tercih edin.
  • Gizli bilgileri ortam başına ayırın; geliştirme anahtarları hiçbir zaman üretim erişimi vermemelidir.

Bu alışkanlıklar, felaket boyutundaki bir ihlali sınırlı ve kurtarılabilir bir olaya dönüştürür.

Gizli Bilgi Hijyeni Kültürü Oluşturma

Araçlar tek başına dağınıklığı çözmez; bunu kültür sağlar. Olgun bir kuruluş, gizli bilgi yönetimini sürekli uygulanan bir disiplin olarak ele alır:

  • Varsayılan yaklaşım: kaynak kodunda hiçbir zaman secret bulunmamalıdır.
  • Depolamayı erişim denetimi ve denetim kayıtları olan yönetilen bir kasada merkezileştirin.
  • Taramayı her aşamada otomatikleştirin: ön kayıt, CI ve kayıt deposu.
  • Yenilemeyi yalnızca acil durumlarda yapılan bir işlem olmaktan çıkarıp rutin hâle getirin.
  • Her mühendise, açığa çıkma durumlarını suçlama olmadan fark edip bildirmeyi öğretin.

Amaç, bir secret'ın sızdırılmasının zor, sızıntının telafi edilmesinin ise kolay olduğu bir sistem oluşturmaktır.

Kısa Sınama

Sızdırılmış bir secret'ı silmenin neden yeterli olmadığını anlayıp anlamadığınızı sınayın.

Özet: Gizli Bilgi Dağınıklığı Sorunu

Dağınık ve sabit kodlanmış gizli bilgilerin neden en yaygın ve en zarar verici güvenlik zayıflıklarından biri olduğunu öğrendiniz.

  • Gizli bilgi dağınıklığı, kimlik bilgilerinin kod, işlem hatları, görüntüler ve sohbetler arasında denetimsiz biçimde yayılmasıdır.
  • Sabit kodlanmış gizli bilgiler Git geçmişinde sonsuza kadar kalır; bunları silmek sızıntıyı gidermez.
  • Herkese açık depolar dakikalar içinde taranır ve bu durum bulut faturası şoklarına ve ihlallere yol açar.
  • Ortam değişkenleri ve görüntü katmanları sızıntıya açık kapsayıcılardır; güvenli depolama alanları değildir.
  • Dağınıklık etki alanını büyütür ve yenilemeyi, ayrıca olay müdahalesini imkânsız hâle getirir.
  • Çözüm: kayıttan önce tarayın, sızıntı olduğunda önce yenileyin, bir kasada merkezileştirin ve en az ayrıcalık ilkesini uygulayın.

Sırada, kasaları ve gizli bilgi depolarını kullanarak gizli bilgileri düzgün biçimde merkezileştireceğiz.

Sıkça Sorulan Sorular

“Gizli Bilgilerin Dağınık Hâle Gelmesi Sorunu” dersi ücretsiz mi?

Evet — “Gizli Bilgilerin Dağınık Hâle Gelmesi Sorunu” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cyber Security Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cyber Security Academy kursu toplamda 4 dersten oluşur.

“Gizli Bilgilerin Dağınık Hâle Gelmesi Sorunu” dersinde ne öğreneceğim?

Sabit kodlanmış gizli bilgilerin neden tehlikeli olduğu. Cyber Security Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cyber Security Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cyber Security Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Gizli Bilgilerin Dağınık Hâle Gelmesi Sorunu” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cyber Security Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cyber Security Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Gizli Bilgilerin Dağınık Hâle Gelmesi Sorunu
  2. Kasa ve Gizli Bilgi Depoları
  3. Dinamik Gizli Bilgiler ve Kiralama
  4. Anahtar Döndürme ve Tespit
← Cyber Security Academy Sayfasına Dön