GitGuardian yıllık etkinliğiyle ünlüdür Sırların Durumu Yayılımı rapor. 2023 raporlarında, herkese açık GitHub taahhütlerinde açığa çıkan 10 milyonun üzerinde şifrenin, API anahtarının ve diğer kimlik bilgilerinin açığa çıktığını tespit ettiler. 2024 raporlarındaki çıkarımlar sadece 12,8 milyonu vurgulamakla kalmadı yeni GitHub’da sırlar açığa çıktı, ancak popüler Python paket deposunda da birkaç sır var PyPI.
Python Paket Dizini’nin kısaltması olan PyPI, Python projelerinde ücretsiz olarak kullanılabilen 20 terabaytın üzerinde dosyayı barındırır. Daha önce pip install yazdıysanız [name of package], muhtemelen bu paketi PyPI’den aldı. Pek çok insan da bunu kullanıyor. Raporda, GitHub, PyPI veya diğerleri olsun, “açık kaynak paketlerinin bugün üretimde çalıştırılan kodun tahminen %90’ını oluşturduğu belirtiliyor.” Bu paketlerin geliştiricilerin her gün milyonlarca tekerleği yeniden icat etmekten kaçınmasına yardımcı olmasının nedenini anlamak kolaydır.
2024 raporunda GitGuardian, 11.000’den fazla bilginin açığa çıktığını bildirdi eşsiz 2023’te 1.000 tanesi PyPI’ye eklenecek. Bu, 2023’te GitHub’a eklenen 12,8 milyon yeni sırla karşılaştırıldığında çok fazla değil, ancak GitHub çok daha büyük.
Daha da üzücü olan gerçek ise 2017’de ortaya çıkan sırlardan 100’e yakınının 6-7 yıl sonra hala geçerli olmasıydı. Tüm sırların geçerliliğini kontrol etme yetenekleri yoktu. Yine de 300’den fazla benzersiz ve geçerli sır keşfedildi. Bu, sıradan bir gözlemci için biraz endişe verici olsa ve rastgele Python geliştiricileri için bir tehdit oluşturmasa da (2023’ün sonunda ESET tarafından bildirilen 116 kötü amaçlı paketin aksine), bu paketlerin sahipleri için bilinmeyen büyüklükte bir tehdittir.
GitGuardian’ın yüzlerce sır algılayıcısı olsa da yıllar içinde geliştirilip iyileştirildi. 2023 genel çalışmasında tespit ettiği en yaygın sırlardan bazıları OpenAI API anahtarları, Google API anahtarları ve Google Cloud anahtarlarıydı. Yetkili bir programcının tek bir ortak gizli formatı bulmak için düzenli bir ifade yazması zor değildir. Birçok yanlış pozitif sonuçla karşılaşılsa bile, bunların geçerli olup olmadığını belirlemek için yapılan kontrollerin otomatikleştirilmesi, geliştiricinin sömürülebilir sırlardan oluşan küçük bir hazine bulmasına yardımcı olabilir.
Artık bir anahtarın GitHub veya PyPI gibi halka açık bir depoda yayınlanması durumunda, bunun tehlikeye atılmış sayılması gerektiği mantığı kabul edilmiştir. Testlerde, bal jetonları (herhangi bir kaynağa erişimi olmayan bir tür “defanged” API anahtarı), GitHub’da yayınlandıktan sonra bir dakika içinde botlar tarafından geçerliliği açısından test edildi. Aslında honeytokenlar, giderek artan sayıda geliştirici için bir “kanarya” görevi görüyor. Belirli bir honeytoken’ı nereye yerleştirdiğinize bağlı olarak, birisinin orayı gözetlediğini görebilir ve honeytoken kullanıldığında toplanan telemetri verilerine dayanarak onlar hakkında bazı bilgiler alabilirsiniz.
Yanlışlıkla bir sırrı yayınladığınızda ortaya çıkan en büyük endişe, yalnızca kötü niyetli bir aktörün bulut faturanızı doldurması değildir. Oradan gidebilecekleri yer orası. Aşırı izin verilen bir AWS IAM jetonu sızdırılırsa, bu kötü niyetli aktör erişim izni verdiği S3 klasörlerinde veya veritabanlarında ne bulabilir? Bu kötü niyetli aktör başka kaynak kodlara erişim sağlayabilir ve diğer birçok kişiye iletilecek bir şeyi bozabilir mi?
GitHub’a, PyPI’ye, NPM’ye veya herhangi bir halka açık kaynak kodu koleksiyonuna sır aktarıyor olsanız da, bir sırrın sızdırıldığını keşfettiğinizde en iyi ilk adım onu iptal etmektir. Honeytoken’ın yayınlanması ile kullanılması arasındaki küçük pencereyi unutmayın. Bir sır yayınlandıktan sonra muhtemelen kopyalanmıştır. Yetkisiz bir kullanım tespit etmemiş olsanız bile, mutlak Yetkisiz ve kötü niyetli birinin bu bilgiye sahip olduğunu varsayalım.
Kaynak kodunuz özel bir depoda olsa bile, kötü niyetli aktörlerin sosyal mühendislik, kimlik avı ve elbette sızdırılan sırlar yoluyla özel havuzlara erişim sağladığına dair çok sayıda hikaye vardır. Tüm bunlardan alınacak bir ders varsa o da kaynak kodundaki düz metin sırlarının eninde sonunda bulunmasıdır. İster kazara halka açık bir şekilde yayınlansın, isterse erişime sahip olmaması gereken biri tarafından bulunsun, bulunurlar.
Özetle, kaynak kodunuzu saklıyor veya yayınlıyorsanız, ister özel bir depoda ister genel bir kayıt defterinde olsun, birkaç basit kurala uymalısınız:
- Sırları kaynak kodunda düz metin olarak saklamayın.
- Bu sırların sağladığı ayrıcalıkları sıkı bir kapsamda tutarak, bir sırrı ele geçirenlerin bir keşif gezisine çıkmasını önleyin.
- Bir sırrı sızdırdığınızı fark ederseniz, onu iptal edin. Üretim sistemlerinizin iş sürekliliği için yeni, sızdırılmamış sırlara sahip olmasını sağlamak için biraz zaman ayırmanız gerekebilir, ancak bunu mümkün olan en kısa sürede iptal etmeniz gerekebilir.
- Tarafından sunulanlara benzer otomasyonları uygulayın GitGuardian sır yönetimiyle ilgili en iyi uygulamaları mükemmel bir şekilde gözlemlemek için kusurlu insanlara güvenmediğinizden emin olmak için.
Bunları takip ederseniz, 11.000 sır sahibinin muhtemelen bunları PyPI’de yayınlayarak zor yoldan öğrendiği dersleri öğrenmek zorunda kalmayabilirsiniz.