OWASP API Güvenliği

Teknolojinin gelişmesiyle birlikte erişilebilirliğin artık mobilize hale gelmiş olduğunu görmekteyiz. HTML & CSS ile başlayan web furyası, cep telefonlarımızın içerisinde uygulamalara kadar girmiştir. Artık her sektörün mobil uygulamalarının yüksek bir kısmı API yöntemiyle orta katman mimarisiyle tasarlamıştır. Güvenlik bakış açısıyla değerlendirildiğinde üç katmanlı mimarinin de oluşturulmasında API kullanım yöntemleri karşımıza çıkmaktadır.

Öyle ki; API kullanımı yaygınlaştıkça, bu kullanımın güvenli olmasına yönelik konularda masaya yatırılmıştır. Bu doğrultuda OWASP yani Open Web Application Security Project topluluğu referans olarak alınabilecek bir TOP 10 listesi yayınlamıştır. Bu yazımızda bu listede yer alan başlıklara yer verip, örnekleştirerek sizlere anlatmaya çalışacağım.

2019 yılı itibariyle OWASP API Security Top 10 listesinde yer alan açıklıklar aşağıda yer almaktadır.

Bunlar:

API1:2019 Broken Object Level Authentication

Listenin ilk sırasında ödül avcılığı programlarında da sıklıkla karşılaşılan, güvenlik araştırmacılarının yakından bildiği ve incelediği IDOR yer almaktadır. IDOR en temel bağlamda açıklamak gerekirse doğrulanmamış obje erişimidir. Yani ziyaretçi erişmek istediği objeyi görmeye yetkili veya o objenin sahibi olduğunun doğrulanmaması işlemidir.


Şekil 1: Saldırı şeması

Örnek saldırı senaryoları (usecase)

Yukarıdaki istekler değerlendirildiğinde GET metodu ile alınan id ile başlayan parametre, veritabanında sorgulanarak isteği gerçekleştiren kişi doğrulanmadan ekrana sonuçlar yazdırılır.

Önleme Yöntemleri

API2:2019 Broken Authentication

1.maddeye benzerlik taşıyan bu değerlendirmede ise, kimlik doğrulama mekanizmalarından kaynaklı problemleri ele almaktadır. Bu kapsamda değerlendirildiğinde güvenlik olgusu taşımayan kimlik doğrulama mekanizmaları oturumların ele geçirilmesi, yetki değişimi gibi problemlere yol açmaktadır.


Şekil 2: Saldırı şeması

Örnek saldırı senaryoları

Önleme Yöntemleri

API3:2019 Excessive Data Exposure

API noktalarının vermiş olduğu response paketleri (yanıtlar) içerisinde bir çok veri yer alabilir. UI tarafında bu bilgilerin filtreleneceği düşünülür. Fakat her zaman durum böyle olmaz. Kullanıcı bilgilerinin olduğu (Users) bir model düşünün. Bu model içerisinde ad, soyad, kullanıcı adı ve parola gibi alanlar bulunur. Eğer ki bu alanların tümü yanıt paketleri içerisinde yer verilirse, bu kategoriye ilişkin açıklığa sebebiyet verilmiş olur.


Şekil 3: Saldırı şeması

Örnek saldırı senaryoları

Önleme Yöntemleri

API4:2019 Lack of Resources and Rate Limiting

Güvenlik test uzmanlarının da sıklıkla karşılaştığı problemlerden biri de rate limiting konusudur. En temelde bir hizmetin istek sınırlaması olmaksızın talepleri karşılamaya çalışmasıdır. Bu bir SMS servisi olabileceği gibi, giriş ekranı parola sıfırlama modülü de olabilir. Kaynakların tüketilmesine sebep olan bu olayda kritik önem taşıyan e-posta, SMS gibi hizmetler kuyruk mantığıyla çalışması sebebiyle aksamalara sebep verebilir.


Şekil 4: Saldırı şeması

Örnek saldırı senaryoları

Önleme Yöntemleri

API5:2019 Broken Function Level Authorization

API noktalarına karşılık gelen hizmetlere erişirken belirli roller için farklı yollar belirlenebilir. İstemciler için client path’i kullanılırken, yöneticiler için admin pathi kullanılabilir. Bu doğrultuda tahmini çok da zor olmayan bu pathlere erişim sağlanması sonrasında rol değişimi gerçekleştirilebilir. 1.madde de benzer önlemler bu madde içinde geçerlidir.


Şekil 5: Saldırı şeması

Örnek saldırı senaryoları

Önleme Yöntemleri

API6:2019 Mass Assignment

API, istemciden aldığı verileri ilgili modelin alanlarına kontrolsüz olarak yazması olayı sonrasında ortaya çıkan güvenlik problemidir. Örneğin profil bilgilerinin güncellendiği bir sayfa yapısı düşünelim. Bu sayfa yapısında “ad, soyad” bilgilerinin güncellenememesini, yalnızca e-posta alanının güncellenebilir olduğunu varsayalım.


Şekil 6: Saldırı şeması

Örnek saldırı senaryoları

Önleme Yöntemleri

API7:2019 Security Misconfiguration

Genel bir güvenlik problemi olan bu başlık, hatalı veya eksik yapılandırılmış noktaları ele alır. Bir hizmet tasarlanırken ön tanımlı ayarların kullanılmış olması da bu başlık altında değerlendirilebilir.


Şekil 7: Saldırı şeması

Örnek saldırı senaryoları

Önleme Yöntemleri

API8:2019 Injection

Injection başlığı OWASP Top 10’da en üst sırada yer almaktadır. Kullanıcıdan alınan girdinin herhangi kontrolsüz bir şekilde işlenmesi problemin kaynağında yer alır. SQL injection, LDAP, OS Command başta olmak üzere çeşitleri bulunur. Örneğin kullanıcıdan alınan bir IP adresine ping atma işleminde kontrolsüz kullanım varsa os command açıklığına, kullanıcıdan alınan giriş bilgilerini kontrolsüz şekilde SQL sorgularında kullanılıyorsa SQL Injection açıklığına sebep olur.


Şekil 8: Saldırı şeması

Örnek saldırı senaryoları

Önleme Yöntemleri

API9:2019 Improper Assets Management

Bir çok organizasyon uygulama yönetimlerinde ortam ayrılığına gitmiştir. Bu doğrultuda en temel olarak development (geliştirme), production (üretiim) ortamlar ile karşılaşılır. Yukarıda da ifade edildiği üzere üretim ortamı ve geliştirici ortamı arasında farklılıklar olabilir. Bir ortamda hata mesajları açıkken, diğer ortamda kapalı tutulması gibi. Saldırganlar tarafından tespit edilen test ortamlarında güvenliğin prod ortama nispeten daha zayıf olduğu düşünülerek bu ortam hedef alınır.


Şekil 9: Saldırı şeması

Örnek saldırı senaryoları

Önleme Yöntemleri

API10:2019 Insufficient Logging and Monitoring

Bu başlık kayıt altına alma ve izleme/görüntüleme eksikliklerini içerir. Doğru yapılandırılmamış kayıt altına alma (loglama) ve izleme eylemleri şüpheli aktivitenin görünürlüğünü zorlaştırır.


Şekil 10: Saldırı şeması

Örnek saldırı senaryoları

Önleme Yöntemleri

Kaynaklar