OWASP'a göre ilk 10 Web Uygulaması tehditi

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Bu belgede, OWASP tarafından tanımlanan güvenlik açıklarını ele almak için Apigee'de kullanabileceğiniz çeşitli yaklaşımlar açıklanmaktadır. Apigee ile ilgili olarak belgelenen ek yaklaşımlar için Google Cloud'da OWASP Top 10 2021 risk azaltma seçeneği sayfasına göz atın.

Genel bakış

API ekosistemleri, hem harici hem de dahili istemcilerden çeşitli saldırılara uğrar. API sunmak ve kullanmak, servis sağlayıcılar için olağanüstü fırsatlar oluşturur ancak bazı güvenlik risklerini de beraberinde getirir. Geliştiricilerin, bu zorlukların farkında olmaları ve API oluşturup kullanırken bunları ele almaları gerekir.

OWASP, kuruluşların güvenilir uygulamalar ve API'ler geliştirmesine, satın almasına ve bunları korumasına yardımcı olmaya adanmış açık bir topluluktur. OWASP, OWASP API Güvenlik projesi aracılığıyla web uygulamaları ve REST API'lerinde en kritik güvenlik risklerini yayınlamanın yanı sıra bu risklerin ele alınması için öneriler sunar.

Apigee ile API proxy katmanı, istekleri arka uç sistemlerinde işlenmeden önce istemciden gelen bozuk API isteklerini algılayabilir, engelleyebilir ve bildirebilir. Böylece riski azaltıp hizmetlerinizi koruyabilir. Hatalı biçimlendirilmiş istekler, HTTP uygulama düzeyindeki protokolü oluşturan tüm bileşenleri içerebilir:

  • URL
  • Üst bilgiler
  • Path
  • Yük

Yanlış biçimlendirilmiş API istekleri; harici geliştiriciler, dahili geliştiriciler veya kötü amaçlı botlar tarafından geliştirilen, bilinen veya bilinmeyen istemcilerden gelebilir. Bu tür istekler, OWASP tehditlerinin çoğunu oluşturur ancak temel API proxy katmanında riskleri azaltabilecek ek bileşenler (ör. veri maskeleme, günlük kaydı, yönetim vs.) bulunur.

Apigee'nin akıllı API yönetimi platformu, API'lerinizi tasarlarken ve bunları arka uç sistemlerinize bağlarken tüketim odaklı bir yaklaşım benimserken en önemli OWASP API güvenlik açıklarını sorunsuz bir şekilde ele almanıza olanak tanır. Aşağıda Apigee'nin en yaygın REST OWASP tehditleri için önerdiği politikaların/yapılandırmanın listesi yer almaktadır.

2017 OWASP İlk 10'u için Apigee çözümleri

Web uygulamaları oluşturma ve güvenliğini sağlama konusunda güvenlikle ilgili birçok husus vardır. OWASP, web uygulamaları için En İyi 10 OWASP Güvenlik Tehditleri 2017 listesini yayınladı. Web uygulamasının birçok bölümü olsa da çoğu modern web uygulaması, ağırlıklı olarak REST API'lere dayanır. Apigee, web uygulamalarının tüm güvenlik ihtiyaçlarını karşılamaya yönelik değildir ancak REST API'lerin güvenliğini sağlamada çok önemli bir rol oynayabilir. Aşağıda, bu tehditleri ele almak için Apigee'yi nasıl kullanabileceğinize ilişkin açıklamalarla birlikte en önemli OWASP güvenlik tehditleri yer almaktadır.

A1:2017 - Yerleştirme

İstenmeyen komutların yürütülmesine veya yetkisiz veri erişimine neden olabilecek SQL, NoSQL, LDAP ve JavaScript gibi güvenilmeyen veri yerleştirme işlemlerine karşı koruma sağlamak amacıyla Apigee, istemci tarafından sağlanan değerlerin daha fazla işlenmeye izin vermeden önce beklentiyle eşleştiğini doğrulamak amacıyla çeşitli giriş doğrulama politikaları sunar. Gelen API istekleri için sunucu görevi gören Apigee Edge, yük yapısının sınır kontrolü olarak da bilinen kabul edilebilir aralıkta olduğundan emin olmak için kontrol eder. Giriş doğrulama rutininin, riskli karakter dizilerini kaldırmak ve bunları güvenli değerlerle değiştirmek üzere girişi dönüştürmesi için bir API proxy'si yapılandırabilirsiniz.

Apigee platformunda girişi doğrulamak için çeşitli yaklaşımlar vardır:

İçerik türlerini doğrulayın:

A2:2017 - Bozuk Kimlik Doğrulama ve Oturum Yönetimi

Saldırganlar uygulamalardaki uygulama kusurlarından yararlanarak başka kullanıcıların kimliğine bürünmek için şifrelere, oturum jetonlarına ve anahtarlara erişebilirler. Bu daha çok uygulama sorunu ile ilgilidir, ürünle ilgili değildir. Apigee, bu güvenlik açığına karşı korunmaya yardımcı olan ValidApiKey, OAuth ve JSON Web Token (JWT) politikaları sunar.

API anahtarı doğrulama

API anahtarı doğrulaması, API'ler için yapılandırılabilen en basit uygulama tabanlı güvenlik biçimidir. Bir istemci uygulaması, isteğiyle birlikte bir API anahtarı sunar. Daha sonra Apigee Edge, API proxy'sine bağlı bir politika aracılığıyla API anahtarının istenen kaynak için onaylanmış durumda olup olmadığını kontrol eder.

Apigee, API Anahtarlarının oluşturulması ve doğrulanması için destek sağlar. Apigee, bir veya daha fazla API ürününe bağlı bir geliştirici uygulaması oluşturulduğunda ve onaylandığında API anahtarı ve sırrı üretir.

"API anahtarları" terimi bazen farklı anlamlara gelebilir. Apigee'de uygulama ve ürün ilişkisi oluşturulduğunda, Apigee istemci kimliği ve istemci gizli anahtarı oluşturur. Bazı uygulamalar API anahtarı olarak hem kimlik hem de gizli anahtara atıfta bulunur. Bazıları API anahtarı olarak yalnızca istemci kimliğini belirtir. Edge kullanıcı arayüzünde "tüketici anahtarı" ve "tüketici gizli anahtarı"nı görürsünüz.

VerifyAPIKey politikasında yalnızca istemci kimliği veya "tüketici anahtarı" doğrulanır. Geliştiriciler, uygulamalarını Apigee'ye kaydettiklerinde ve uygulamayı bir API ürünüyle ilişkilendirdiklerinde bir tüketici anahtarı alırlar. Geliştiriciler, tüketici anahtarını, uygulamanın API ürününde paket haline gelen API proxy'lerine yaptığı çağrılara ekler.

Apigee, harici kaynaklardan mevcut API anahtarlarını içe aktarma özelliğini de destekler.

OAuth erişim izni türlerinde hem istemci kimliği hem de gizli anahtar kullanılır.

OAuth 2.0

OAuth 2.0 yetkilendirme çerçevesi, üçüncü taraf uygulamalarının bir HTTP hizmetine sınırlı erişim elde etmesini sağlar. Kaynak sahibi ile HTTP hizmeti arasında onay etkileşiminin düzenlenmesiyle kaynak sahibi adına veya üçüncü taraf uygulamanın kendi adına erişim elde etmesine izin verilir.

Apigee'nin OAuth 2.0 politikaları, dört OAuth 2.0 izin türünü uygulayıp özelleştirmenize olanak tanır. OAuth erişim jetonunu zorunlu kılma işlemi OAuthv2 politikası kullanılarak gerçekleştirilebilir. Tüketicinin kayıtlı olması ve API'ye erişmesine izin veren onaylı bir uygulamanın bulunması gerekir. Bunun karşılığında, API istemci kimliği ve istemci gizli anahtarı alırlar. Tüketicinin kimliğinin doğrulanması için OAuth izinlerinden birini geçmesi gerekir. Bu sayede tüketiciye şeffaf olmayan bir erişim jetonu verilir. Bu jeton, API'ye erişimi kontrol etmek için kullanılabilir.

JWT

JSON Web Tokens veya JWT, bağlı uygulamalar arasında iddia veya iddiaları paylaşmak için yaygın olarak kullanılır. Apigee, üç politika kullanarak JWT desteği sağlar.

  • GenerateJWT jetonları (HS256 ve RS256 imzasını destekler)
  • ValidateJWT jetonları
  • Doğrulamadan kod çözme

A3:2017 - Hassas Verilere Karşılaşma

Saldırganlar kimlik hırsızlığı, para hırsızlığı, sahtekarlık ve diğer suçları gerçekleştirmek için kredi kartı bilgileri, sosyal güvenlik numaraları, giriş kimlik bilgileri, kimliği tanımlayabilecek bilgiler (PII) ve vergi numaraları gibi hassas verileri hedefler. Web uygulamaları, hassas verilerin korunmasını sağlamak için hem kullanımda olmadığında hem de aktarım sırasında şifrelemenin yanı sıra başka stratejiler de uygulamalıdır.

TLS (öncesi SSL olan Taşıma Katmanı Güvenliği), bir web sunucusu ile tarayıcı veya uygulama gibi bir web istemcisi arasında şifrelenmiş bağlantı oluşturmaya yönelik standart güvenlik teknolojisidir. Apigee, hem tek yönlü hem de çift yönlü TLS'yi destekler.

Kuzeye giden TLS (sunucu olarak görev yapan API'ye bağlanan istemci), Sanal Ana Makine yapılandırmasının kullanımıyla desteklenir. Sanal bir ana makine, tek yönlü veya iki yönlü TLS için yapılandırılabilir.

Güneye giden TLS (arka uç hizmetine bağlanan bir istemci olarak Apigee), Hedef Sunucu yapılandırması kullanılarak desteklenir. Hedef Sunucu, tek yönlü veya iki yönlü TLS için yapılandırılabilir.

Apigee, birçok TLS yapılandırma seçeneğini destekler.

2 yönlü TLS yaptırımı, istemcinin Apigee'ye önceden eklenmiş bir sertifika kullanmasını sağlar. OWASP, TLS en iyi uygulamalarını da sunar.

ApigeeHybrid'de TLS, girişte sanal ana makineye benzer bir kavram olan ana makine takma adı aracılığıyla kullanılabilir.

Hassas verilerin güvenliğini sağlamayla ilgili kurallar aşağıda verilmiştir:

  • Protokol düzeyinde koruma yapacak tek yönlü ve iki yönlü TLS'yi destekleyen bir platform kullanın.
  • Hassas verileri, istemciye döndürülmeden önce kaldırmak için AssignmentMessage ve JavaScript politikası gibi politikalar kullanın.
  • Her isteğin kimlik doğrulama düzeyini iyileştirmek için standart OAuth tekniklerini kullanın ve HMAC, karma, durum, tek seferlik, PKCE veya diğer teknikleri eklemeyi düşünün.
  • Edge Trace aracındaki hassas verileri maskelemek için veri maskeleme ayarlarını kullanın.
  • Hassas verileri önbellekte depolamaya (veya önbellekte depolanan hassas verileri şifrelemeye) dikkat edin. Edge'de, aktif olmayan hassas verileri anahtar/değer eşlemelerinde şifreleyebilirsiniz.

A4:2017 - XML Harici Varlıkları

XML işleyen sistem veya uygulamaların, XML'deki "harici varlık referanslarını" işlemesi gerekir. XML işlemesi sırasında gerçek verilerle değiştirilen dosyalara veya verilere referanslar. Uygulamalar veya XML işlemcileri eski ya da kötü uygulanmışsa, saldırganlar verileri hack'leyerek bilgileri çalmak veya sisteme hizmet reddi gibi çeşitli türlerde saldırılar başlatmak için kullanabilir.

Apigee'nin ExtractVariables politikası sayesinde bir istek veya yanıttaki içerikleri çıkarabilir ve değişkene atayabilirsiniz. Üstbilgiler, URI yolları, JSON/XML yükleri, form parametreleri ve sorgu parametreleri de dahil olmak üzere mesajın herhangi bir bölümünü çıkarabilirsiniz. Bu politika, ileti içeriğine bir metin kalıbı uygulayarak ve eşleşme bulduğunda belirtilen ileti içeriğine sahip bir değişken ayarlayarak çalışır.

Platformun bir parçası olarak Apigee, verileri ayıklamak için XPath kullanan yerleşik bir XML ayrıştırıcıya sahiptir. Ayrıca, kötü amaçlı XML yüklerine karşı koruma sağlayan bir XMLThreatProtection politikası bulunur.

A5:2017 - Bozuk Erişim Denetimi

Kullanıcılar giriş yapıp bir sisteme erişim elde ettikten sonra, kullanıcıların yalnızca izin verilen şeyleri görebilmesi ve yapabilmesi için uygun yetkilendirme denetimlerinin kurulması gerekir. Saldırganlar, güçlü erişim denetimleri olmadan yetkisiz ve genellikle hassas verileri görüntüleyebilir veya verileri ve sistem davranışını kötü niyetli şekilde manipüle edebilir.

Apigee, kötü niyetli kişilerin yetkisiz değişiklikler yapmasını veya sisteme erişmesini önlemek için erişim denetimlerinin uygulanmasına yönelik katmanlı bir yaklaşımı destekler.

Edge kullanıcı arayüzü için erişim denetimleri

Apigee Geliştirici Portalı için erişim denetimleri

  • Şirketinizin kimlik sağlayıcısıyla tek oturum açma özelliğini yapılandırın.
  • Kullanıcıların Drupal tabanlı geliştirici portallarında yalnızca ihtiyaç duydukları işlevlere ve yapılandırmaya erişmesine izin vermek için rol tabanlı erişim denetimini (RBAC) yapılandırın.
  • Geliştirici portallarını, kullanıcı rolüne göre belirli API ürünlerini gösterecek şekilde yapılandırın.
  • Portalı, kullanıcı rolüne göre içeriği gösterecek veya gizleyecek şekilde yapılandırın.

Apigee çalışma zamanı API erişimi için erişim denetimleri

  • API'lere erişim; API anahtarları, OAuth jetonları, OAuth kapsamları, sertifikalar ve diğer tekniklerle zorunlu kılınabilir.
  • API sağlayıcısı, bir API ürünü tanımlayarak hangi kaynakların kullanılabilir olduğunu yapılandırır. Erişim, kullanıcı arayüzünden manuel olarak, Management API üzerinden veya geliştirici portalı üzerinden verilir. Bir geliştiricinin uygulamasına bir API ürününe erişim izni verildiğinde, geliştirici, kimlik doğrulama sürecinde kullanılan bir istemci kimliği ve gizli anahtar alır.
  • Apigee, OAuth gerçekleştirmek için herhangi bir kimlik sağlayıcı ile entegre olabilir.
  • Apigee, kullanıcı kimliğini hedef hizmetlere göndermek için JWT jetonları veya başka teknikler oluşturabilir. Hedef hizmetler, hizmetlere ve verilere erişimi gerektiğinde kısıtlamak için bu kimliği kullanabilir.

A6:2017-Güvenlikte Yanlış Yapılandırma

Yöneticiler ve geliştiriciler, kullandıkları sistemlerin aslında güvenli olduğuna inandıkları için güvenlikle ilgili yanlış yapılandırmalar kolayca gözden kaçabilir. Güvenlikle ilgili yanlış yapılandırmalar; varsayılan yapılandırmalara güvenmek veya güvenli olmayabilecek kısmi yapılandırmalar oluşturmak, hata mesajlarının hassas ayrıntılar içermesine izin vermek, verileri uygun güvenlik kontrolleri olmadan bulutta depolamak, HTTP üst bilgilerini yanlış yapılandırmak gibi pek çok farklı şekilde gerçekleşebilir. Apigee platformu, güvenlik yapılandırmalarını kontrol etmenizi, yönetmenizi ve izlemenizi sağlayan yeniden kullanılabilir paylaşılan akışlar da dahil olmak üzere çeşitli mekanizmalar sunar.

Paylaşılan akış, API geliştiricilerinin politikaları ve kaynakları yeniden kullanılabilir bir grup altında birleştirmesini sağlar. Yeniden kullanılabilir işlevleri tek bir yerde toplayan paylaşımlı akış, tutarlılık sağlamanıza, geliştirme süresini kısaltmanıza ve kodu daha kolay yönetmenize yardımcı olur. Bağımsız API proxy'lerinin içine paylaşılan bir akış ekleyebilir veya bir adım daha ileri gidip paylaşılan akışları, paylaşılan akışla aynı ortamda dağıtılan her API proxy'si için otomatik olarak paylaşılan akış mantığını yürütmek üzere akış kancalarına yerleştirebilirsiniz.

Apigee ürün sürümleri, güvenlik açıkları olan kitaplıklara karşı koruma sağlar. Yeni güvenlik açıkları bulunması halinde Apigee, ek yamalar veya güncellemeler yayınlayabilir. Edge'in herkese açık bulutuna otomatik olarak yama uygulanır. Edge for Private Cloud (şirket içi) müşterileri ürün yamalarını kendileri uygulamalıdır.

A7:2017-Siteler Arası Komut Dosyası Çalıştırma (XSS)

Siteler arası komut dosyası çalıştırma (XSS), saldırganların kullanıcı oturumlarını kontrol etmek, web sitelerini değiştirmek veya kullanıcıları başka şekillerde kötü amaçlı olarak etkilemek için kullanıcı web tarayıcılarında komut dosyaları çalıştırmasına olanak tanır. XSS sorunları API'lerle ilgili olmayabilir ancak Apigee, API'de XSS'e karşı koruma sağlamak için kullanılabilecek tehdit koruması politikaları sunar. NormalExpressionProtection politikası veya JavaScript politikası ile normal ifadeleri kullanarak JavaScript ve diğer yerleştirme türü saldırıları için yük ve parametre değerlerini kontrol edin.

Tüm tarayıcılar tarafından zorunlu kılınan aynı kaynak politikasının yaygın olarak uygulanan çözümlerinden biri olan CORS, AssignmentMessage politikası kullanılarak uygulanabilir.

A8:2017 - Güvenli Olmayan Serileştirme İşlemi

Saldırganlar tekrar oynatma, ayrıcalık artırma ve yerleştirme gibi farklı saldırı türleri için serileştirme sırasındaki kusurları kullanabilir. Güvenli olmayan serileştirme işlemi, uzaktan kod yürütülmesini de sağlayabilir.

Apigee, serileştirmeyi önermez. Ancak JSONThreatProtection politikası ve regularExpressionProtection politikası kötü amaçlı JSON yüklerine karşı korunmanıza yardımcı olabilir. Yüklerde kötü amaçlı içerik taraması yapmak için JavaScript politikası da kullanılabilir. Önbellek ve diğer politikalar, tekrar oynatma saldırılarına karşı koruma sağlamak için kullanılabilir. Apigee platformunda çalışan süreçleri korumak için altyapı düzeyinde yerleşik korumalar da bulunur.

A9:2017 - Bileşenleri Bilinen Güvenlik Açıklarıyla Kullanma

Çerçeveler, kitaplıklar ve modüller tam yürütme ve CRUD erişimiyle çalıştığı için saldırganlar sistemlere saldırmak için bileşen güvenlik açıklarından yararlanabilir.

Apigee'nin düzenli ürün sürümleri, özellikle belirli güvenlik açıkları keşfedildiğinde, bileşen güvenlik açıklarına karşı koruma sağlar. Apigee herkese açık bulutuna otomatik olarak yama uygulanır. Apigee, şirket içi yamalar yüklenmeye hazır olduğunda Private Cloud müşterileri için Edge'i bilgilendirir.

A10:2017 - Yetersiz Günlük Kaydı ve İzleme

Sistemlerinizde günlük kaydı, izleme ve olay yönetimi işlemlerini yeterli düzeyde gerçekleştirmediğinizde saldırganlar verilere ve yazılımlara daha derin ve daha uzun süreli saldırılar gerçekleştirebilir.

Apigee; günlük kaydı, izleme, hata işleme ve denetleme günlüğü işlemleri için çeşitli yöntemler sunar.

Günlük Kaydı

  • Günlük mesajları, Splunk veya başka sistem günlüğü uç noktasına MessageLogging politikası kullanılarak gönderilebilir.
  • API analiz verileri analytics API aracılığıyla alınabilir ve diğer sistemlere içe veya dışa aktarılabilir.
  • Edge for Private Cloud'da yerel günlük dosyalarına yazmak için MessageLogging politikasını kullanabilirsiniz. Çalışan bileşenlerin her birinden günlük dosyaları da mevcuttur.
  • JavaScript politikası, günlük mesajlarını eşzamanlı veya eşzamansız olarak REST günlük kaydı uç noktasına göndermek için kullanılabilir.

İzleme

  • API'leri ve arka uçları düzenli olarak izlemek ve alet'leri tetiklemek için API Monitoring kullanıcı arayüzünü veya API'yi kullanın.
  • Hedef sunucu arka uçlarını düzenli olarak izlemek için durum izleme özelliğini kullanın.
  • Apigee, Edge for Private Cloud'un izlenmesiyle ilgili öneriler sunar.
  • Apigee, ekibinizin API programınızı izlerken yararlanabileceği en iyi uygulamaları da sunar.

Hata İşleme

Apigee, API proxy'leri için güçlü ve çok yönlü bir hata işleme mekanizması sunar. Java programının istisnaları yakalamasına benzer şekilde, API proxy'leri hataları yakalayabilir ve istemcilere uygun yanıtların nasıl döndürüleceğini belirleyebilir. Apigee'nin özel hata işleme özelliği, hata oluştuğunda mesaj günlük kaydı gibi işlevler eklemenize olanak tanır.

Denetim Günlükleri

Apigee platformu; API proxy'leri, ürünler ve kuruluş geçmişinde yapılan değişiklikleri izleyen bir denetleme günlüğü tutar. Bu günlüğe kullanıcı arayüzü veya Audits API üzerinden erişilebilir.

2013 OWASP güvenlik açıklarına yönelik Apigee çözümleri

OWASP, 2017 listesini güncellediğinde 2013'ün listesindeki bazı güvenlik açıkları dışarıda bırakıldı. Bunlar hâlâ geçerli tehditler. Aşağıdaki bölümlerde, bu tehditlerin Apigee ile nasıl ele alınacağı açıklanmaktadır.

A8:2013 - Siteler Arası İstek Sahtekarlığı (CSRF)

Siteler arası sahtekarlık istekleri, saldırganların bir kullanıcının kimlik doğrulama ayrıntılarını, oturum çerezini ve diğer verilerini HTTP üzerinden güvenlik açığı olan bir web uygulamasına yönlendirmesine olanak tanıyarak web uygulamasını, isteklerin kullanıcıdan gelen meşru istekler olduğuna inandırmaya sevk eder.

Kurallar:

  • Bu daha çok tarayıcıyla ilgili bir sorundur, API ürünleriyle ilgili değildir. Bu güvenlik açığını OpenID Connect, OAuth ve diğer tekniklerle ele alabilirsiniz.
  • Sahtekarlık ve tekrar saldırılarını önlemek için HMAC, durum, karma, tek seferlik veya PKCE tekniklerini kullanmayı düşünün.

A10:2013 - Doğrulanmamış Yönlendirmeler ve Yönlendirmeler

Bir web uygulaması yönlendirme yaparsa, ancak yönlendirmelerin kullanıcıları güvenilir, amaçlanan web sitelerine gönderdiğini doğrulayamazsa saldırganlar kimlik avı, kötü amaçlı yazılım yürütme ve diğer saldırılar gerçekleştirmek için kullanıcıları kötü amaçlı hedeflere gönderebilir.

Kurallar:

  • OAuth kullanın ve her istekte doğrulamayı zorunlu kılın.
  • API proxy mantığındaki yanıt kodlarını kontrol ederek ve yönlendirmeleri uygun şekilde işleyerek beklenmedik 302 yönlendirmelerini önleyin.