| TruffleHog HighEntropy Strings Açıklığı (CWE-798) | |||||
| Bu makalede TruffleHog HighEntropy Strings (CWE-798), yani TruffleHog Yüksek Entropili Dize Bulunması açıklığı anlatılacaktır.
Açıklık Önem Derecesi: Düşük Açıklığın Etkisi: Hassas bilgilere yetkisiz erişim, bilgi ifşası Açıklığın Açıklaması: Kaynak kodlarda ya da yapılandırma dosyalarında gizli dizeler yer verilmesi “TruffleHog Yüksek Entropili Dize Bulunması (CWE-798)” açıklığı olarak ele alınır. TruffleHog yüksek entropili dizeleri kaynak kodlarda arayan bir aracın (tool’un) ismidir. Entropi ise bir rastgelelik ölçütüdür. Kaynak kodlarda gizli dizeler (API anahtarları, kriptografik token’lar (jetonlar), ssl private anahtarları, ssh private anahtarları ve diğer hassas hesap bilgileri) rastgele görünürler. Örn; Aq4Skj92lksn29sSdfk38... şeklinde. Dolayısıyla gizli dizeler sıradan metinlere göre yüksek entropilidirler. TruffleHog aracı da yüksek entropili dizeleri belirler ve şüpheli olarak işaretler. Çünkü hiçbir gizli dize kaynak kodda yer almamalıdır. Konfigürasyon dosyalarına veya sistem ortam değişkenlerine (environment variables) taşınmalıdır. Konfigurasyon dosyasında yer alacaksa da açık bir şekilde yer almamalıdır. “Şifreli” halde yer almalıdır. Gizli dizeler uygulamaları sızıntılara karşı açık hale getirir. Eğer bir saldırgan kaynak koda erişim elde ederse gömülü gizli dizeleri çalabilecektir ve bunları ilgili varlığı suistimal etmede kullanabilecektir. Örneğin uygulamayı veya kullanıcıyı taklit ederek uzak sisteme (bir veritabanı olabilir, bir web servis olabilir,...) giriş yapma gibi. Saldırgan edindiği gizli dizeler ile uygulamayı veya kullanıcıyı taklit edebildiğinde (oymuş gibi davranabildiğinde) uygulamanın veya kullanıcının yapabileceği herhangi bir şeyi yapabilecektir. Bir saldırgan kaynak kodlara erişerek bu gizli dizeleri elde edebileceği gibi aynı şekilde derlenmiş uygulama binary’lerine tersine mühendislik yaparak da kolaylıkla gömülü gizli dizeleri ortaya çıkarabilir. TruffleHog Yüksek Entropili Dize Bulunması açıklığını örneklemek maksadıyla güvensiz ve güvenli kod bloklarına yer verilmiştir. Java - Güvensiz Kod Bloğu:
public class ApiClient {
// Zafiyet: Yüksek entropili dizeye kaynak kodda yer verilmiş.
private static final String API_KEY = "AKIAIOSFODNN7EXAMPLE";
public static void main(String[] args) {
System.out.println("Using API key: " + API_KEY);
// Anahtarı kullanarak API'ye bağlantı kurma kodları...
}
}
Güvensiz kod örneğinde api anahtarı kaynak koda gömülmüştür. Bu yüksek entropili bir dizedir ve sızdırılması muhtemel senaryoların önünü açmaktadır. Güvensiz kabul edilmektedir. Java - Güvenli Kod Bloğu:
public class ApiClient {
public static void main(String[] args) {
String apiKey = System.getenv("MY_API_KEY");
if (apiKey == null) {
System.err.println("API key not set!");
return;
}
System.out.println("Using API key from environment variable.");
// API kodlarını devam ettir...
}
}
Web Sunucu Bash Komut Satırı: export MY_API_KEY=AKIAIOSFODNN7EXAMPLE Güvenli kod örneğinde ise api anahtarı sistem ortam değişkenlerinden çekilmektedir. Kaynak koda gizli dizeleri gömmek yerine ortam değişkenlerine konulabileceği gösterilmiştir. Bu güvenli kullanımın alternatifi olarak yapılandırma dosyaları seçeneği de değerlendirilebilir. Konfigurasyon Dosyası - Güvensiz Ayar: # application.yml apiKey: AKIAIOSFODNN7EXAMPLE Bu güvensiz yapılandırmada gizli dize yapılandırma dosyasına şifrelenmeden yerleştirilmiştir. Gizli dizeler konfigürasyon dosyalarına belirlenecek bir anahtar ve şifreleme algoritması ile şifrelenerek yerleştirilmelidir. Şifreli haldeyken web sunucuda uygulama çalışma sırasında deşifreleme ile kullanılabilir. Sonuç olarak konfigürasyon dosyası seçeneği de güvenli bir uygulama için kullanılabilir. Açıklığın Önlemi: Tavsiyeler şu şekildedir:
|
|||||
Bu yazı 27.10.2025 tarihinde, saat 00:18:14'de yazılmıştır.
|
|||||
|
|||||
| Yorumlar |
|||||
| Henüz yorum girilmemiştir. | |||||
| Yorum Ekle | |||||
Bu yazı 27.10.2025 tarihinde, saat 00:18:14'de yazılmıştır.