Bloga geri dön
Metinler, kodlar içerisinde belirli kalıplar barındıran verileri aramak, tespit etmek veya doğrulamak için kullanılan düzenli ifadelere “regex (regular expressions)” denir. Kullanım alanları arasında e-posta, kullanıcı ismi, telefon numaraları gibi kullanıcı bilgilerini doğrulamak, kullanıcıların veya şirketlerin yanlışlıkla halka açık bir şekilde yayımladığı şifre ve kredi kartı numaraları gibi aslında gizli kalması gereken bilgilerinin tespit edilmesini sağlamak, veriyi analiz edip belirli kalıplardaki verileri silmek veya değiştirmek vardır. Aşağıda temel regex yapılarına ait örneklerin bir listesi verilmiştir:
Kaynak: https://www.beyaz.net/tr/yazilim/makaleler/regex_nedir.html
1. Gizli Bilgilerin Tanımlanması: Regex ile gizli bilgileri tespit etmenin ilk adımı, kullanıcıların veya kurumların kendi sistemleri ve güvenlik ihtiyaçları doğrultusunda hangi tür verilerin gizli bilgi sayılıp sayılmayacağını belirlemeleridir. Gizli verileri genellikle aşağıdaki gibi sınıflandırabiliriz:
Örneğin: “P@ssw0rd!2024”.
Örneğin: “sk_test_4eC39HqLyjWDarjtT1zdp7dc”.
Örneğin: “username:admin password:secret123 host:db.example.com port:3306”.
Örneğin:“eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.qR6O5T4jx77uBcm5bM_9ZQ7oF5zkK”.
2. Regex Kalıplarını Tasarlama: Gizli bilgiler, her biri kendine özgü yapılar taşıyan verilerdir. Bu yapıları doğru bir şekilde anlayıp analiz ederek regex ile belirli kalıplar haline getirip onları tespit edebiliriz. Aşağıda farklı gizli bilgiler için kullanılan regex kalıplarına dair bazı örnekler yer almaktadır:
Görüldüğü gibi regex deseni (ghp_[a-zA-Z0-9]{36}) GitHub API anahtarını (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) doğru algılamış, ancak GitHub API anahtarı olmayan veriyi (gp_uTzsHn7ntsbrT3RUE7dsGx3Qq4689V2Jzoq0) algılamamıştır. Bundan şunu çıkarabiliriz ki regex ile kalıplaştırdığımız desen istediğimiz gibi gerçek GitHub API anahtarlarını algılayabiliyor, başka kalıpların desenlerini ise algılamıyor.
Görüldüğü gibi regex deseni (\bxoxb-[0-9]{12}-[A-Za-z0-9]{24}\b) Slack Bot token’ını (xoxb-263594206564-FGqddMF8t08v8N7Oq4i57vs1) doğru algılamış, ancak Slack Bot token’ı olmayan veriyi (xb-263594206564) algılamamıştır. Bundan şunu çıkarabiliriz ki, regex ile kalıplaştırdığımız desen istediğimiz gibi gerçek Slack Bot token’larını algılayabiliyor, başka kalıpların desenlerini ise algılamıyor.
3. Regex ile Tespit Süreci: Gizli bilgilerin regex ile tespiti, güvenlik açısından kritik bir adımdır. Bu süreç, kaynak kodu veya dosyalarda şifreler, API anahtarları, token’lar gibi hassas ve gizli verilerin tespit edilmesini ve güvenlik açıklarının önüne geçilmesini sağlar. Regex, metin içinde belirli kalıpları tanımlayarak, olası gizli bilgilerin saptanmasına yardımcı olur. Bu süreçte dikkat edilmesi gereken birkaç temel adım bulunmaktadır:
Ayrıca, regex desenleri yalnızca mevcut dosyalarda değil, geçmiş sürümler üzerinde de taramalar yapabilir. Örneğin, Git gibi sürüm kontrol sistemlerinde geçmişte yapılan commit’lerde kazara paylaşılmış olabilecek gizli bilgiler olabileceğini düşünüp onları tespit etmek için regex ile düzenli olarak taramalar yapılabilir.
Yanlış pozitifleri önlemek için, düzenli bir ifadeyle (regex’ler) eşleşen her metin manuel olarak kontrol edilebilir, ancak çok uzun metinler veya kod içeren büyük projelerde bu işlem zaman alıcı olabilir. İşte bu noktada otomatik araçlar ve filtrelemeler devreye girer. Örneğin, belirli bir yapıdaki şifreleri tespit etmek için yazılan yukarıdaki düzenli ifade kalıbı, 8 ila 20 alfa nümerik ve özel karakter içeren metinlerle eşleşir. Ancak helloWorld_1234 gibi bir metin aslında bir şifre değil, rastgele bir karakter dizisi olabilir. Bu tür yanlış eşleşmeler istenmeyen alarmlara ve yanlış pozitiflere neden olabilir.
GitGuardian ve TruffleHog gibi araçlar, metnin bağlamını otomatik olarak analiz ederek gerçek gizli bilgiler ile yanlış pozitifleri ayırt edebilir; GitGuardian eski commitlerdeki gizli bilgileri tespit eder, TruffleHog yüksek güvenlikli API anahtarlarını iyice tarayarak algılar. Bu araçlar gizli verileri manuel incelemeden çok daha hızlı ve doğru bir şekilde tespit edebilir ve yanlış pozitif oranlarını en aza indirebilir. Ayrıca, bu araçlar genellikle ayrıntılı raporlar sunarak kullanıcıların dosyalarda ve işlem geçmişlerinde hangi verilerin yanlışlıkla ifşa edildiğini ve hangi düzeltici eylemin gerçekleştirilmesi gerektiğini belirlemesini kolaylaştırır.
Yapay zekâ destekli platformlar yanlış pozitifleri tespit etmek için de kullanılabilir. Örneğin, Legit Security gibi yapay zekâ platformları, metnin bağlamını anlamak ve yalnızca gerçek gizli bilgileri tespit etmek için gelişmiş analiz teknikleri kullanır. Bu şekilde yanlış pozitiflerin önüne geçilebilir ve hassas bilgilerin tespit edilme süreci hızlandırılabilir.
Veri tabanlarında, dosyalarda veya kodlarda bulunan gizli bilgilerin silinmesi gereklidir. Bu, genellikle kötü niyetli saldırganlardan korunma adına yapılır. Ancak verilerin silinmesi, kalıcı olarak yapıldığında bu bilgilerin geri alınması mümkün olmayabilir.
Maskelenmiş veri, orijinal veri yerine gizli bilgilerin belirli kısımlarını gizlemek için kullanılan bir tekniktir. Örneğin, bir API anahtarı maskelendiğinde, sadece son dört haneleri görünür hale getirilir: sk_test_XXXX-XXXX-XXXX-1234. Bu, dışarıdan bakıldığında anahtarın tamamının görünmesini engeller, ancak yine de sistemdeki yetkili kişiler gerekli bilgilere erişim sağlayabilirler.
Kısacası duruma göre gizli bilgilerin tespitinden sonra gizli verileri tamamen silmek veya maskeleme yapmak tercih edilebilir.
Kaynak: Proactive Secrets Management at Pendo - Pendo Developers
Sonuç olarak, hassas bilgilerin regex’ler kullanılarak tespit edilmesi, güvenlik açıklarının erken tespiti için etkili bir yöntemdir. Ancak, yalnızca düzenli ifadeler kullanılarak tespit edilen verilerin doğru ve güvenli olduğundan emin olmak için daha fazla doğrulama ve analiz yapılması önemlidir. Yanlış pozitifler ve hassas bilgilerin sızması riskleri göz önüne alındığında, sürekli izleme, otomatik araçlar ve güvenli depolama çözümleri ile desteklenen bir yaklaşım benimsenmelidir. Bu, sistemi daha güvenli hale getirecek ve potansiyel tehditlere karşı koruyacaktır.