GO Code Review #1: Sabit kodlanmış kimlik bilgileri güvenlik açısından hassastır

May 03 2023
GO Kodunda Sabit Kodlanmış Kimlik Bilgileri Analizi: Güvenlik Risklerini Azaltma ve En İyi Uygulamalar
Genel Bakış Gözden geçirenler, kodun kalitesini, sürdürülebilirliğini ve en iyi uygulamalarla uyumluluğunu değerlendirdi. Özellikle olası güvenlik açıklarını ve tamir edilmesi gereken yerleri bulmakla ilgileniyordum.
kaynak

genel bakış

Gözden geçirenler, kodun kalitesini, sürdürülebilirliğini ve en iyi uygulamalarla uyumluluğunu değerlendirdi. Özellikle olası güvenlik açıklarını ve tamir edilmesi gereken yerleri bulmakla ilgileniyordum. Sabit kodlanmış kimlik bilgileriyle ilgili olarak, bu rapor çok önemli bir güvenlik sorununu vurgulamaktadır.

Hassas Kod Örneği

func connect()  {
  user := "root"
  password:= "supersecret" // Sensitive

  url := "login=" + user + "&passwd=" + password
}

Sağlanan kod parçacığı , muhtemelen bir hizmet veya sistemle bağlantı kurmaktan sorumlu connect() adlı bir işlev gibi görünüyor . İşte kodun ayrıntılı bir analizi:

func connect() {
  user := "root"
  password := "supersecret" // Sensitive

  url := "login=" + user + "&passwd=" + password
}

  1. Hassas Parola: Kaynak kodunda doğrudan görülebildiği için, sabit kodlu parola değeri “supersecret” hassas olarak kabul edilir. Güvenlik hususları nedeniyle, parolalar gibi kimlik bilgilerinin kaynak koduna sabit olarak kodlanması önerilmez. Kod tabanına erişimi olan herkes parolayı kolayca inceleyebilir.
  2. URL Oluşturma: Kullanıcı ve parola değişkenleri, bir URL dizesi oluşturmak için ek girişlerle birleştirilir. Kullanıcı ve şifre değerleri için sorgu parametreleri ile bir oturum açma isteği için bir URL oluşturuyor gibi görünüyor.
  1. Güvenlik Riski : Parolalar gibi gizli veriler kaynak kodda düz metin olarak tutulduğunda ciddi bir güvenlik riski oluşur. Kod tabanı yetkisiz kişiler tarafından görüntülendiğinde veya depo saldırıya uğradığında, hassas veriler kolayca alınabilir ve kötüye kullanılabilir.

2. Kimlik Bilgisi Yönetimi: Doğrudan kodda saklandıklarında parolaları gerektiği gibi değiştirmek veya döndürmek zordur. Potansiyel güvenlik kusurları, parola değişikliğinden sonra bile kod tabanında kalabilen sabit kodlanmış kimlik bilgilerinden kaynaklanabilir.

Öneri: Hassas kimlik bilgilerini güvenli bir şekilde saklamak ve yönetmek için gizli bir yönetim aracı veya güvenli bir kimlik bilgisi yönetimi çözümü kullanın. Bu çözümler, güvenli depolama, erişim yönetimi ve diğer özelliklere ek olarak otomatik gizli döndürme gibi yetenekleri içerir.

3. Girdi Doğrulaması: Özellikle URL'ler oluşturulurken veya veritabanı sorguları çalıştırılırken tüm kullanıcı girdileri doğrulanmalı ve temizlenmelidir. Sağlanan kodda giriş doğrulama ve temizleme eksikliği, sistemi SQL enjeksiyonu ve URL manipülasyonu saldırıları gibi güvenlik kusurlarına açık bırakır.

Öneri: Bu tür saldırıları engellemek için uygun girdi doğrulama ve temizleme stratejilerini kullanın. Örneğin, parametreleştirilmiş sorgular veya hazırlanmış ifadeler kullanın ve URL'lerde kullanıcı tarafından sağlanan değerlerin doğru şekilde kodlandığından emin olun.

4. Güvenli Parola Depolama: Bu işlev daha büyük bir kimlik doğrulama şemasının bir bileşeniyse, parolaları düz metin olarak tutmanın güvenli olmadığını unutmamak çok önemlidir. Saklanmadan önce, bir veri ihlali durumunda yetkisiz erişimi önlemek için parolalar ideal olarak güvenli bir şekilde birleştirilmeli ve tuzlanmalıdır.

Öneri: Parolaları güvenli bir şekilde saklamak ve doğrulamak için bcrypt veya Argon2 gibi güçlü parola karma yöntemleri kullanın.

Uyumlu Çözüm:

func connect()  {
  user := getEncryptedUser()
  password:= getEncryptedPass() // Compliant

  url := "login=" + user + "&passwd=" + password
}

  • Kimlik bilgilerini, kod deposuna gönderilmeyen bir yapılandırma dosyasında saklayın.
  • Kimlik bilgilerini bir veritabanında saklayın.
  • Sırları yönetmek için bulut sağlayıcınızın hizmetini kullanın.
  • Kaynak kodu aracılığıyla bir parola ifşa edilmişse: değiştirin.

Parolalar gibi hassas bilgilerin doğrudan kaynak kodunda saklanması, sistemi yetkisiz erişime ve potansiyel istismarlara maruz bırakır.

twitter