2021 bilgi güvenliği yılını tek bir kelime özetleyebilseydi (aslında üç), bu şu olurdu: “tedarik zinciri saldırısı”.

Bir yazılım tedarik zinciri saldırısı, bilgisayar korsanları üçüncü taraf yazılım bileşenlerindeki kodu, onları kullanan ‘aşağı akış’ uygulamaları tehlikeye atmak için manipüle ettiğinde gerçekleşir. 2021’de bu tür saldırılarda çarpıcı bir artış gördük: SolarWinds, Kaseya ve benzeri yüksek profilli güvenlik olayları. Codecov veri ihlalleri, işletmenin üçüncü taraf hizmet sağlayıcıların güvenlik uygulamalarına olan güvenini sarstı.

Bunun sırlarla ne ilgisi var, diye sorabilirsiniz? Kısacası, çok. Codecov vakasını ele alalım (hızlı bir şekilde geri döneceğiz): Bu, bilgisayar korsanlarının kurbanlarının sistemlerine ilk erişim sağlamak ve zincir boyunca daha fazla sır toplamak için sabit kodlanmış kimlik bilgilerini nasıl kullandıklarını gösteren bir ders kitabı örneğidir.

Kod içindeki sırlar, bilgisayar korsanlarının oyun kitaplarında öncelikli bir hedef olmasına rağmen, uygulama güvenliği alanında en çok gözden kaçan güvenlik açıklarından biri olmaya devam ediyor. Bu yazıda, yazılım geliştirme yaşam döngüsünü güvence altına almak için sırlardan ve bunları kaynak kodun dışında tutmanın günümüzün bir numaralı önceliği olduğundan bahsedeceğiz.

sır nedir?

Sırlar, uygulamalarda, hizmetlerde veya altyapılarda kullanılan dijital kimlik doğrulama bilgileridir (API anahtarları, sertifikalar, belirteçler vb.). Bir kişinin kimliğini doğrulamak için bir parola (artı 2FA durumunda bir cihaz) kullanılmasına benzer şekilde, bir gizli, birlikte çalışabilirliği sağlamak için sistemlerin kimliğini doğrular. Ancak bir püf noktası var: Parolaların aksine, sırlar dağıtılmak içindir.

Sürekli olarak yeni özellikler sunmak için yazılım mühendisliği ekiplerinin giderek daha fazla yapı taşını birbirine bağlaması gerekiyor. Kuruluşlar, birden fazla ekipte (geliştirme ekibi, SRE, DevOps, güvenlik vb.) kullanılan kimlik bilgilerinin patlamasını izliyor. Bazen geliştiriciler, kodu değiştirmeyi kolaylaştırmak için anahtarları güvenli olmayan bir yerde tutarlar, ancak bunu yapmak çoğu zaman bilgilerin yanlışlıkla unutulmasına ve yanlışlıkla yayınlanmasına neden olur.

Uygulama güvenliği ortamında, sabit kodlanmış sırlar gerçekten farklı bir güvenlik açığı türüdür. İlk olarak, kaynak kodu çok sızdıran bir varlık olduğundan, klonlanması, kontrol edilmesi ve birden fazla makinede çok sık çatallanması gerektiği için, sırlar da sızdırılır. Ama daha da endişe verici olanı, kodun da bir hafızası olduğunu unutmayalım.

Herhangi bir kod tabanı, bir tür sürüm kontrol sistemi (VCS) ile yönetilir ve bazen on yıllar boyunca üzerinde yapılan tüm değişikliklerin tarihsel bir zaman çizelgesini korur. Sorun şu ki, hala geçerli olan sırlar bu zaman çizelgesinde herhangi bir yerde saklanabiliyor ve saldırı yüzeyine yeni bir boyut açıyor. Ne yazık ki, çoğu güvenlik analizi yalnızca bir kod tabanının mevcut, dağıtılmaya hazır durumu üzerinde yapılır. Başka bir deyişle, eski bir taahhütte veya hatta hiç dağıtılmamış bir dalda yaşayan kimlik bilgileri söz konusu olduğunda, bu araçlar tamamen kördür.

GitHub’a aktarılan altı milyon sır

Geçen yıl, GitHub’a gönderilen taahhütleri gerçek zamanlı olarak izleyen GitGuardian 6 milyondan fazla sızdırılmış sır tespit etti2020’deki sayıyı ikiye katladı. Ortalama olarak, 1.000 taahhütten 3’ü, geçen yıla göre yüzde elli daha yüksek bir kimlik bilgisi içeriyordu.

Bu sırların büyük bir kısmı kurumsal kaynaklara erişim sağlıyordu. O halde, bir kurumsal sisteme ayak uydurmak isteyen bir saldırganın önce GitHub’daki halka açık havuzlarına ve ardından çalışanlarına ait olanlara bakmasına şaşmamalı. Birçok geliştirici GitHub’ı kişisel projeler için kullanır ve yanlışlıkla kurumsal kimlik bilgilerini sızdırabilir (evet, düzenli olarak gerçekleşir!).

Geçerli kurumsal kimlik bilgileriyle saldırganlar yetkili kullanıcılar gibi çalışır ve kötüye kullanımı tespit etmek zorlaşır. GitHub’a gönderildikten sonra bir kimlik bilgisinin güvenliğinin ihlal edilmesi için geçen süre yalnızca 4 saniyedir, yani ihlal edilme riskini etkisiz hale getirmek için derhal iptal edilmesi ve döndürülmesi gerektiği anlamına gelir. Suçluluk duygusundan veya teknik bilgi eksikliğinden insanların neden sıklıkla yanlış yol bu durumdan kurtulmak için.

İşletmeler için bir başka kötü hata da, halka açık olmayan depolarda sırların varlığına müsamaha göstermek olacaktır. GitGuardian’ın State of Secrets Sprawl raporu, özel depoların genel eşdeğerlerinden çok daha fazla sır sakladığını vurguluyor. Buradaki hipotez, özel depoların sahiplerine yanlış bir güvenlik duygusu vererek, onları kod tabanında gizlenen potansiyel sırlar konusunda biraz daha az endişe duymalarını sağlar.

Bu, bu unutulmuş sırların bir gün hackerlar tarafından ele geçirilirse yıkıcı bir etkisi olabileceği gerçeğini görmezden geliyor.

Adil olmak gerekirse, uygulama güvenlik ekipleri sorunun farkındadır. Ancak her hafta işlenen sırları araştırmak, iptal etmek ve döndürmek ya da yıllarca keşfedilmemiş bölgeyi kazmak için yapılması gereken iş miktarı çok büyük.

Başlık ihlalleri… ve diğerleri

Ancak aciliyeti var. Bilgisayar korsanları, GitHub’da, sızan sırları belirlemek için kolayca tanınan kalıplar olan “aptallar”ı aktif olarak arıyorlar. Ve GitHub, aktif olabilecekleri tek yer değil, herhangi bir kayıt defteri (Docker Hub gibi) veya herhangi bir kaynak kodu sızıntısı, potansiyel olarak istismar vektörlerini bulmak için bir altın madeni haline gelebilir.

Kanıt olarak, yakın zamanda açıklanan ihlallere bakmanız yeterlidir: birçok açık kaynak projesinin favorisi olan Codecov, bir kod kapsama aracıdır. Geçen yıl, resmi Docker görüntüsünden statik bir bulut hesabı kimlik bilgisi alarak erişim elde eden saldırganlar tarafından ele geçirildi. Resmi kaynak kod deposuna başarılı bir şekilde eriştikten sonra, bir CI komut dosyasını kurcalamayı ve Codecov’un kullanıcı tabanından yüzlerce sırrı toplamayı başardılar.

Daha yakın zamanlarda, Twitch’in tüm kod tabanı sızdırıldı ve 6.000’den fazla Git deposu ve 3 milyon belge ortaya çıktı. Belirli bir düzeyde AppSec olgunluğunu gösteren birçok kanıta rağmen, yaklaşık 7.000 sır su yüzüne çıkabilir! Yüzlerce AWS, Google, Stripe ve GitHub anahtarından bahsediyoruz. Şirketin en kritik sistemlerine tam ölçekli bir saldırı yerleştirmek için bunlardan sadece birkaçı yeterli olacaktır. Bu sefer hiçbir müşteri verisi sızdırılmadı, ancak bu çoğunlukla şans.

Birkaç yıl önce Uber bu kadar şanslı değildi. Bir çalışan yanlışlıkla kendisine ait olan halka açık bir GitHub deposunda bazı kurumsal kodlar yayınladı. Bilgisayar korsanları, bir bulut hizmeti sağlayıcısının Uber’in altyapısına erişim sağlayan anahtarlarını buldu ve tespit etti. Büyük bir ihlal meydana geldi.

Sonuç olarak, bir sırrın ne zaman istismar edileceğinden gerçekten emin olamazsınız, ancak bilmeniz gereken şey, kötü niyetli aktörlerin geliştiricilerinizi izlediği ve kodunuzu aradığıdır. Ayrıca, bu olayların buzdağının sadece görünen kısmı olduğunu ve muhtemelen sırları içeren daha birçok ihlalin kamuya açıklanmadığını unutmayın.

Çözüm

Sırlar, herhangi bir yazılım yığınının temel bir bileşenidir ve özellikle güçlüdürler, bu nedenle çok güçlü koruma gerektirirler. Dağıtılmış yapıları ve modern yazılım geliştirme uygulamaları, kaynak kodu, üretim günlükleri, Docker görüntüleri veya anlık mesajlaşma uygulamaları olsun, nereye varacaklarını kontrol etmeyi çok zorlaştırıyor. Sırları algılama ve düzeltme yeteneği bir zorunluluktur çünkü sırlar bile büyük bir ihlale yol açan bir saldırıda kullanılabilir. Bu tür senaryolar her hafta oluyor ve kurumsal dünyada giderek daha fazla hizmet ve altyapı kullanıldıkça, sızıntıların sayısı çok hızlı artıyor. Ne kadar erken önlem alınırsa, kaynak kodunu gelecekteki tehditlerden korumak o kadar kolay olur.

Not – Bu makale GitGuardian’ın teknik içerik yazarı Thomas Segura tarafından yazılmıştır. Thomas, çeşitli büyük Fransız şirketlerinde hem analist hem de yazılım mühendisi danışmanı olarak çalıştı.



siber-2