Temmuz 2021’de Gartner, 2022 yılına kadar uygulama programlama arayüzü (API) saldırılarının en sık görülen saldırı vektörü haline geleceğini ve kurumsal web uygulamalarında veri ihlallerine neden olacağını tahmin etmişti.
Analist firma haklı mıydı? Kesin olarak bilmek için henüz çok erken, çünkü OWASP hala sonuçları değerlendiriyor.
API saldırıları haberlere geri döndü. Optus ihlali için olası giriş noktasının düşük düzeyde bir REST API olduğu ortaya çıktı. Ve birisi, bir API içeren Twitter ihlalinden çalınan tüm verileri sızdırdı.
API güvenliği hakkında konuştuğumuzda, API’leri ve ilettikleri verileri güvence altına almak için kullandığımız önlemler ve uygulamalardan bahsediyoruz. Yetkisiz erişim, bir DDoS’a olumsuz tepki (birden fazla API devre dışı kaldı ve temeldeki sistemi tamamen açık ve tamamen güvensiz bıraktı) veya diğer kötü niyetli saldırılardan endişe duyabiliriz.
API’leri korumanın bir sanatı vardır; Bunu doğru yapmak için hafif bir dokunuş ve teknik ve organizasyonel becerilerin hassas bir kombinasyonu gerekir.
Teknik tarafta, kimlik doğrulama ve yetkilendirme, şifreleme, otomatik test ve izleme gibi önlemlere bakıyoruz. Kuruluş tarafında, API’nin kuruluş şemasında kime hizmet etmek üzere tasarlandığını tam olarak bilmeniz ve erişimi buna göre uyarlamanız gerekir. Harici API’ler için, dış dünya için ne kadar verinin mevcut olması gerektiğini ve bu verilerin nasıl derlenmesi ve sunulması gerektiğini bilmeniz gerekir.
API’ler Nasıl Korunur?
Şirketinizin API’lerini korumaya çalışırken aklı başında bir işlem sırası vardır.
İlk olarak, her API’yi bulun ve kataloglayın. Bunu gerçekten yapan ve API envanterini güncel tutan şirket sayısı gerçekten azdır. Geliştirici kolaylığı, hızlı web sitesi geliştirme ve birleştirilmiş hizmetlere yönelik artan baskı, herhangi bir zorunlu kayıt yapısı olmadan birdenbire gizemli API’lerin ortaya çıkmasına katkıda bulunuyor.
Bu tür API sürünmesinden kaçınmak için, her birinin aşağıdaki bilgilerle merkezi olarak kaydedilmesi gerekir:
- İsim
- API’yi oluşturmak için kullanılan araçlar ve paketler
- Çalıştığı sunucular
- Bu API’ye dayanan hizmetler
- Tüm geçerli kullanımların ve hata kodlarının dokümantasyonu
- Tipik performans ölçütleri
- Beklenen çalışma süresi veya kesinti süresi pencereleri
Tüm bu bilgiler siber güvenlik ekibi tarafından yönetilen bir havuza giriyor.
İkinci olarak, her API için güvenlik ve performans otomasyonu kurun. Bu yüzden tüm bu bilgileri istediniz ve her şeyi bu şekilde güvende tutuyorsunuz. Geliştiriciler (ve DevOps ekibi, Web ekibi vb.) tarafından sağlanan verileri kullanarak siber güvenlik ve/veya test ekibi, API’yi düzenli olarak test eden otomasyonu bir araya getirebilir.
İşlevsel testler önemlidir çünkü her şeyin beklendiği gibi çalıştığından emin olurlar. İşlevsel olmayan testler, API’nin güvenilirliğini ve güvenliğini araştırdıkları için önemlidir. API’lerin güvenli bir şekilde başarısız olması gerektiğini unutmayın. Birinin düştüğünü bilmek yeterli değildir – bu başarısızlığın sonuçlarını bilmeniz gerekir.
Son olarak, API’yi normal tehdit önleme paketine ekleyin. API’yi oluşturmak için kullanılan araçlardan veya paketlerden herhangi birinin hatalı olduğu tespit edilirse bunu bilmeniz gerekir. Bir sorun tespit ettiğinizde kullandığı protokollerden herhangi biri güvensiz kabul edilirse, incelenip yeniden oluşturulana kadar ekibin API’leri kapatmasını sağlamanız gerekir.
Bunları bir kez yapmak harikadır; Tamamen kataloglanmış ve belgelenmiş API’leri korumanıza olanak tanıyan bir programlama ve güvenlik kültürü oluşturmak, uzun vadeli hedeftir.
Dikkat Edilmesi Gereken Belirli API Davranışları
Bir API’yi kalemle test ederken ve güvenli hale getirirken, bazı teknikler diğerlerinden daha kullanışlıdır.
- Davranış analizi ile başlayın. Bu, verilen erişim düzeyi, kullanılan protokoller ve bağlantı noktaları, başarılı ve başarısız sorguların sonuçları ve API’nin kendisi çalışmayı durdurduğunda bir bütün olarak sisteme ne olduğu açısından gerçeğin belgelerle eşleşip eşleşmediğini test eder.
- Sonraki hizmet seviyeleridir. Bu, sunucudaki işlemin önceliğini, işlemsel API’ler için hız sınırlamasını, minimum ve maksimum istek gecikmesi ayarlarını ve kullanılabilirlik pencerelerini içerir. Bu ayrıntılardan bazıları DDoS önleme (veya köreltme) için önemlidir. Diğerleri, sunucunun kendi bütünlüğü için uzun vadeli bir tehdit oluşturabilecek herhangi bir yavaş bellek sızıntısı veya çöp toplama sorunu olup olmadığını izlemek için kullanışlıdır.
- Kimlik doğrulama ve sanitasyon sorunları API kullanıcıları için sahip olduğunuz güven düzeyiyle doğrudan konuşun. Herhangi bir hizmette yapacağınız gibi, sorguların kabul edilmeden önce sterilize edilmesi gerekir. Bu, kod enjeksiyonunu, arabellek taşmalarını ve benzerlerini önler.
Belirli bir kullanıcı tabanı için tasarlanmış API’lerle bir düzeyde kimlik doğrulaması olması gerekir. Ancak bu karmaşık bir hal alabilir. Federasyon, hangi merkezi tanımlama ve kimlik doğrulama sunucularını kabul edeceğinizi belirleyerek halletmeniz gereken sorunlardan biridir. Özellikle hassas veya güçlü API’ler için iki faktörlü kimlik doğrulamaya sahip olmak isteyebilirsiniz. Ve elbette, bugünlerde kimlik doğrulamanın kendisi bir parola olmak zorunda değil; biyometri, bir API’yi devre dışı bırakmanın geçerli bir yoludur. Uzun lafın kısası: Makul bulduğunuz standartları uygulayın ve belirlediğiniz sınırlamaları düzenli olarak test edin.
Son olarak, şifreleme ve dijital imzaların konuşmanın bir parçası olması gerekir. Web’deyse, en azından TLS’den bahsediyoruz (şu mantrayı tekrarlayın: TLS olmadan REST yapmıyoruz!). Diğer arabirimlerin de şifrelemeye ihtiyacı vardır, bu nedenle protokollerinizi akıllıca seçin. Bir veritabanı veya bir yerdeki dosya havuzu gibi statik bilgilerin de şifrelenmesi gerektiğini unutmayın. Ne kadar “masum” olursa olsun hiçbir yerde düz metin dosyası yok; tuz ve esrar standart olmalıdır. Bilinen varlıklar (boyut, içerik vb.) olan dosyaları sağlarken veya alırken sağlama toplamları bir zorunluluktur.
Son olarak, anahtar yönetimini doğru yapmak zor olabilir. Siber güvenlik çalışanlarının makul bir kısmı kendileri yarım yamalakken, her DevOps çalışanının mükemmel bir dijital anahtar uygulamasına sahip olmasını beklemeyin. Şüpheye düştüğünüzde, OWASP Hile Sayfasına geri dönün! Bunun için var.
Bir API Saldırısına Yanıt Verme
Ana kural şudur: API’niz başarısız olacaksa, erişimi kıstırın. Hizmetler hiçbir koşulda açık veya erişilebilir bir durumda başarısız olmamalıdır. Hız sınırı koymayı ve hata mesajlarını kısa ve genel tutmayı unutmayın. Bal küpleri veya API hapishaneleri için endişelenmeyin — hayatta kalmak için endişelenin.
Bireysel bazda özel hazırlanmış API saldırılarının, diğer herhangi bir ihlal girişimi gibi ele alınması gerekir. Girişimi ister kendiniz, ister AI/ML analizi yoluyla yakalayın, SOP’nizi takip edin. “Yalnızca” bir API olduğu için köşeleri kestirmeyin.
API güvenliği, yalnızca altyapıya odaklanan vasat CISO’yu gerçek iş tehditlerini ele alan ve hayatta kalmayı sağlayan usta CISO’dan ayırır. API güvenliği için bir sistem oluşturun, yeniden kullanılabilir arayüz testi otomasyonu oluşturun ve API envanterinizi güncel tutun.