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

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

Bu dokümanda, OWASP tarafından tanımlanan güvenlik açıklarını gidermek için Apigee'de kullanabileceğiniz çeşitli yaklaşımlar açıklanmaktadır. Apigee için belgelenen ek yaklaşımlar için Google Cloud'da OWASP 2021'in en iyi 10 azaltma seçeneği başlıklı makaleyi inceleyin.

Genel Bakış

API ekosistemleri hem harici hem de dahili istemcilerden çeşitli saldırılara maruz kalır. API sunmak ve kullanmak hizmet sağlayıcılar için büyük fırsatlar sunarken bazı güvenlik riskleri de taşır. Geliştiriciler bu zorlukların farkında olmalı ve API'ler oluşturup kullanırken bu sorunları ele almalıdır.

OWASP, kuruluşların güvenilir uygulamalar ve API'ler geliştirmesine, satın almasına ve yönetmesine yardımcı olmaya adanmış açık bir topluluktur. OWASP, OWASP API Security projesi aracılığıyla web uygulamaları ve REST API'leri için en kritik güvenlik risklerini yayınlar ve bu riskleri ele almayla ilgili öneriler sunar.

Apigee ile API proxy katmanı, istemciden gelen hatalı API isteklerini arka uç sistemlerde işlenmeden önce algılayabilir, engelleyebilir ve bildirebilir. Böylece riski azaltır ve hizmetlerinizi korur. Hatalı biçimlendirilmiş istekler, HTTP uygulama düzeyi protokolünü oluşturan tüm bileşenleri içerebilir:

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

Hatalı biçimlendirilmiş API istekleri, şirket dışı geliştiriciler, şirket içi geliştiriciler veya kötü amaçlı bot'lar tarafından geliştirilen bilinen veya bilinmeyen istemcilerden gelebilir. Bu tür istekler, OWASP tehditlerinin büyük bir bölümünü oluşturur ancak temel API proxy katmanında, veri maskeleme, günlük kaydı, yönetim vb. gibi riskleri azaltabilecek ek bileşenler vardır.

Apigee'nin akıllı API yönetim platformu, API'lerinizi tasarlarken ve arka uç sistemlerinize bağlarken tüketime odaklı bir yaklaşım benimsediğinizde en önemli OWASP API güvenlik açıklarını sorunsuz bir şekilde ele almanızı sağlar. Aşağıda, Apigee'nin en önemli REST OWASP tehditleri için önerdiği politikaların/yapılandırmaların listesi verilmiştir.

2017 OWASP Top 10 için Apigee çözümleri

Web uygulamalarını oluşturma ve güvenli hale getirme konusunda birçok güvenlik endişesi vardır. OWASP, web uygulamaları için 2017'nin en önemli 10 OWASP güvenlik tehdidi listesini yayınladı.  Bir web uygulamasının birçok parçası olsa da çoğu modern web uygulaması büyük ölçüde REST API'lere dayanır.  Apigee, bir web uygulamasının tüm güvenlik ihtiyaçlarını karşılamak için tasarlanmamıştır ancak REST API'lerin güvenliğini sağlamada önemli bir rol oynayabilir. Aşağıda, Apigee'yi bu tehditleri ele almanız için nasıl kullanabileceğinize dair açıklamalarla birlikte en önemli OWASP güvenlik tehditleri verilmiştir.

A1:2017 - Enjeksiyon

Apigee, SQL, NoSQL, LDAP ve JavaScript gibi güvenilmeyen veri ekleme işlemlerine karşı koruma sağlamak için, istemci tarafından sağlanan değerlerin daha fazla işleme izin verilmeden önce beklentiyle eşleştiğini doğrulamak amacıyla çeşitli giriş doğrulama politikaları sunar. Bu politikalar, istenmeyen komutların yürütülmesine veya yetkisiz veri erişimine neden olabilecek bu tür saldırılara karşı koruma sağlar. Gelen API istekleri için sunucu görevi gören Apigee Edge, yük yapısının kabul edilebilir bir aralıkta olduğundan emin olmak için sınır kontrolü olarak da bilinen bir kontrol gerçekleştirir. Giriş doğrulama rutininin girişi dönüştürerek riskli karakter dizilerini kaldırıp güvenli değerlerle değiştireceği şekilde bir API proxy'si yapılandırabilirsiniz.

Apigee platformunda girişleri doğrulamanın birkaç yolu vardır:

İçerik türlerini doğrulama:

A2:2017 - Broken Authentication and Session Management

Saldırganlar, uygulamalardaki uygulama kusurlarından yararlanarak diğer kullanıcıların kimliğine bürünmek için şifrelere, oturum jetonlarına ve anahtarlara erişebilir. Bu daha çok uygulamayla ilgili bir sorundur, ürünle ilgili değildir.  Apigee, bu güvenlik açığından korunmanıza yardımcı olan VerifyApiKey, OAuth ve JSON Web Token (JWT) politikaları sağlar.

API anahtarı doğrulama

API anahtarı doğrulaması, bir API için yapılandırılabilen en basit uygulama tabanlı güvenlik biçimidir. İstemci uygulaması, isteğinde bir API anahtarı sunar. Ardından Apigee Edge, API proxy'sine eklenmiş 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şturulup onaylandığında API anahtarı ve gizli anahtarı oluşturur.

"API anahtarları" terimi bazen farklı anlamlara gelebilir. Apigee'de uygulama ve ürün ilişkisi oluşturulduğunda Apigee bir istemci kimliği ve istemci gizli anahtarı oluşturur. Bazı API'ler hem kimliği hem de gizli anahtarı API anahtarı olarak adlandırır. Bazıları API anahtarı olarak yalnızca istemci kimliğini belirtir. Edge kullanıcı arayüzünde "tüketici anahtarı" ve "tüketici gizlisi"ni 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 kaydettiğinde ve uygulamayı bir API ürünüyle ilişkilendirdiğinde tüketici anahtarı alır. Geliştiriciler, uygulamanın API ürününe dahil edilmiş API proxy'lerine yaptığı çağrılara tüketici anahtarını ekler.

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

OAuth izin türleri için hem istemci kimliği hem de gizli anahtar kullanılır.

OAuth 2.0

OAuth 2.0 yetkilendirme çerçevesi, bir üçüncü taraf uygulamasının bir HTTP hizmetine sınırlı erişim elde etmesini sağlar. Bu erişim, kaynak sahibi ile HTTP hizmeti arasında bir onay etkileşimi düzenleyerek kaynak sahibi adına veya üçüncü taraf uygulamasının kendi adına erişim elde etmesine izin vererek sağlanır.

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 jetonu yaptırımı, OAuthv2 politikası kullanılarak yapılabilir. Tüketicinin kayıtlı olması ve API'ye erişim izni veren onaylı bir uygulaması olmalıdır. Bunun karşılığında, API istemci kimliği ve istemci sırrı alırlar. Tüketicinin kimliğini doğrulamak için OAuth izinlerinden birini kullanması gerekir. Bu işlem, tüketiciye opak bir erişim jetonu verir. Bu jeton, API'ye erişimi kontrol etmek için kullanılabilir.

JWT

JSON Web Token'lar (JWT'ler) genellikle bağlı uygulamalar arasında iddiaları veya beyanları paylaşmak için kullanılır. Apigee, üç politika kullanarak JWT desteği sağlar.

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

A3:2017 - Hassas Verilerin Açığa Çıkması

Saldırganlar kimlik hırsızlığı, para hırsızlığı, sahtekarlık ve diğer suçları işlemek için kredi kartı bilgileri, T.C. kimlik numaraları, giriş kimlik bilgileri, kimliği tanımlayabilecek bilgiler (PII) ve vergi kimlikleri gibi hassas verileri hedefler. Web uygulamalarının, hassas verilerin korunmasını sağlamak için hem kullanımda olmayan hem de geçiş halindeki verileri şifreleme ve diğer stratejileri uygulaması gerekir.

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

Kuzeye doğru TLS (sunucu olarak API'ye bağlanan istemci), sanal ana makine yapılandırması kullanılarak desteklenir. Sanal ana makineler tek yönlü veya iki yönlü TLS için yapılandırılabilir.

Güneye doğru 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 eklenmiş bir sertifika kullanmasını sağlar. OWASP ayrıca TLS en iyi uygulamalarını da sağlar.

Apigee karmasında TLS, sanal ana makineye benzer bir kavram olan ana makine takma adı üzerinden girişte kullanılabilir.

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

  • Protokol düzeyinde koruma sağlayan tek yönlü ve iki yönlü TLS'yi destekleyen bir platform kullanın.
  • Hassas verileri müşteriye döndürülmeden önce kaldırmak için AssignMessage politikası ve JavaScript politikası gibi politikaları kullanın.
  • Standart OAuth tekniklerini kullanın ve her istek için kimlik doğrulama düzeyini artırmak amacıyla HMAC, karma oluşturma, durum, tek seferlik sayı, PKCE veya başka teknikler ekleyin.
  • Edge Trace aracında hassas verileri maskelemek için veri maskeleme ayarlarını kullanın.
  • Önbellekte hassas veri depolamamaya (veya önbellekte depolanan hassas verileri şifrelemeye) dikkat edin. Edge'de, anahtar/değer eşlemelerindeki hassas verileri şifreleyebilirsiniz.

A4:2017 - XML Harici Varlıkları

XML'i işleyen sistemlerin veya uygulamaların, XML'deki "harici öğe referanslarını" (XML işleme sırasında gerçek verilerle değiştirilen dosyalara veya verilere yapılan referanslar) işlemesi gerekir. Uygulamalar veya XML işleyiciler eskiyse ya da kötü bir şekilde uygulanmışsa saldırganlar verileri hackleyebilir ve bilgi çalmak ya da sisteme hizmet reddi gibi çeşitli saldırılar başlatmak için kullanabilir.

Apigee'nin ExtractVariables politikası, bir istek veya yanıttaki içeriği ayıklayıp bir değişkene atamanıza olanak tanır. Başlıklar, URI yolları, JSON/XML yükleri, form parametreleri ve sorgu parametreleri dahil olmak üzere mesajın herhangi bir bölümünü ayıklayabilirsiniz. Politika, ileti içeriğine bir metin kalıbı uygulayarak ve eşleşme bulduğunda belirtilen ileti içeriğiyle bir değişken ayarlayarak çalışır.

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

A5:2017 - Broken Access Control

Kullanıcılar giriş yaptıktan ve sisteme erişim elde ettikten sonra, yalnızca izin verilenleri görebilecekleri ve yapabilecekleri şekilde uygun yetkilendirme denetimlerinin uygulanması gerekir. Güçlü erişim kontrolleri olmadığında saldırganlar yetkisiz ve genellikle hassas verileri görüntüleyebilir veya verileri ve sistem davranışını kötüye kullanabilir.

Apigee, kötü niyetli kişilerin yetkisiz değişiklikler yapmasını veya sisteme erişmesini önlemek için erişim denetimlerini uygulamak üzere 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ırmalara 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çerik göstermek veya gizlemek için 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 teknikler aracılığıyla zorunlu kılınabilir.
  • API sağlayıcı, API ürünü tanımlayarak hangi kaynakların kullanılabileceğini yapılandırır. Erişim, kullanıcı arayüzünde manuel olarak, yönetim API'si aracılığıyla veya geliştirici portalı üzerinden verilir. Bir geliştiricinin uygulamasına API ürününe erişim izni verildiğinde, 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ıyla 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ği gibi kısıtlamak için bu kimliği kullanabilir.

A6:2017-Security Misconfiguration

Güvenlikle ilgili yanlış yapılandırmaların gözden kaçırılması kolaydır. Bunun nedeni genellikle yöneticilerin ve geliştiricilerin kullandıkları sistemlerin temelde güvenli olduğuna yanlışlıkla güvenmesidir. Güvenlikle ilgili yanlış yapılandırmalar, varsayılan yapılandırmalara güvenmek veya güvenli olmayabilecek kısmi yapılandırmalar yapmak, hata mesajlarının hassas ayrıntılar içermesine izin vermek, verileri uygun güvenlik kontrolleri olmadan bulutta depolamak, HTTP üstbilgilerini yanlış yapılandırmak gibi birçok farklı şekilde gerçekleşebilir. Apigee platformu, yeniden kullanılabilir ortak akışlar da dahil olmak üzere güvenlik yapılandırmalarını kontrol etmenize, yönetmenize ve izlemenize olanak tanıyan çeşitli mekanizmalar sağlar.

Paylaşılan akışlar, API geliştiricilerin politikaları ve kaynakları yeniden kullanılabilir bir grupta birleştirmesine olanak tanır. Ortak akış, yeniden kullanılabilir işlevleri tek bir yerde yakalayarak tutarlılık sağlamanıza, geliştirme süresini kısaltmanıza ve kodu daha kolay yönetmenize yardımcı olur. Paylaşımlı bir akışı tek tek API proxy'lerine dahil edebilirsiniz. Bir adım daha ileri gidip paylaşılan akışlarla aynı ortamda dağıtılan her API proxy için paylaşılan akış mantığını otomatik olarak yürütmek üzere paylaşılan akışları akış kancalarına yerleştirebilirsiniz.

Apigee ürün sürümleri, güvenlik açıklarına sahip kitaplıklara karşı koruma sağlar. Yeni güvenlik açıkları bulunursa Apigee ek yamalar veya güncellemeler yayınlayabilir. Edge herkese açık bulutu otomatik olarak yamalı olur. Edge for Private Cloud (şirket içi) müşterilerinin, ürün yamalarını kendileri uygulaması gerekir.

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'ye karşı koruma sağlamak için kullanılabilecek tehdit koruma politikaları sağlar. RegularExpressionProtection politikası veya JavaScript politikası ile normal ifadeleri kullanarak JavaScript ve diğer ekleme türünde 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ı için yaygın olarak uygulanan çözümlerden biri olan CORS, AssignMessage politikası kullanılarak uygulanabilir.

A8:2017 - Güvenli Olmayan Nesneden Diziye Dönüştürme

Saldırganlar, yeniden oynatma, ayrıcalık yükseltme ve ekleme gibi farklı saldırı türleri için seri dışılaştırmadaki kusurları kullanabilir. Güvenli olmayan seri dışına çıkarma işlemi, uzaktan kod yürütmeyi de etkinleştirebilir.

Apigee, serileştirmeyi önermez. Ancak JSONThreatProtection politikası ve RegularExpressionProtection politikası, kötü amaçlı JSON yüklerine karşı koruma sağlamaya yardımcı olabilir. JavaScript politikası, yükleyicileri kötü amaçlı içerik açısından taramak için de kullanılabilir. Önbellek ve diğer politikalar, yeniden oynatma saldırılarına karşı koruma sağlamak için kullanılabilir. Apigee platformunda, altyapı düzeyinde çalışan süreçleri korumak için yerleşik koruma bariyerlerine de sahiptir.

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

Çerçeveler, kitaplıklar ve modüller tam yürütme ve CRUD erişimi ile çalıştığından 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 bulutunda otomatik olarak düzeltme uygulanır ve Apigee, şirket içi düzeltmeler yüklenmeye hazır olduğunda Edge for Private Cloud müşterilerini bilgilendirir.

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

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

Apigee'de günlük kaydı, izleme, hata işleme ve denetleme kaydı oluşturmanın birkaç yolu vardır.

Günlük Kaydı

  • Günlük mesajları, MessageLogging politikası kullanılarak Splunk'a veya başka bir syslog uç noktasına gönderilebilir.
  • API analiz verileri Analytics API üzerinden çekilebilir ve diğer sistemlere aktarılabilir veya dışa aktarılabilir.
  • Private Cloud için Edge'de, yerel günlük dosyalarına yazmak için MessageLogging politikasını kullanabilirsiniz. Çalışan bileşenlerin her birinin günlük dosyaları da kullanılabilir.
  • JavaScript politikası, REST günlük kaydı uç noktasına senkronize veya asenkron olarak günlük mesajları göndermek için kullanılabilir.

İzleme

  • API'leri ve arka uçları düzenli olarak izlemek ve araçları tetiklemek için API İzleme kullanıcı arayüzünü veya API'yi kullanın.
  • Hedef sunucu arka uçlarını düzenli olarak izlemek için sağlık izleme özelliğini kullanın.
  • Apigee, Private Cloud için Edge'i izlemeyle ilgili öneriler sunar.
  • Apigee, ekibinizin API programınızı izlemek için yararlanabileceği en iyi uygulamaları da sağlar.

Hata İşleme

Apigee, API proxy'leri için güçlü ve çok yönlü bir hata işleme mekanizması sunar. Bir 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üğe kaydetme gibi işlevler eklemenize olanak tanır.

Denetim Günlükleri

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

2013 OWASP güvenlik açıkları için Apigee çözümleri

OWASP, listesini 2017 için güncellediğinde 2013'teki listedeki bazı güvenlik açıkları çıkarılmıştı. Bu açıklar hâlâ geçerli tehditlerdir. Aşağıdaki bölümlerde, bu tehditlerin Apigee ile nasıl ele alınacağı açıklanmaktadır.

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

Siteler arası sahtecilik 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çığı bulunan bir web uygulamasına yönlendirmesine olanak tanır. Bu sayede saldırganlar, web uygulamasını isteklerin kullanıcıdan gelen meşru istekler olduğuna inandırabilir.

Kurallar:

  • Bu, API ürünü sorunu değil, daha çok tarayıcı sorunudur. Bu güvenlik açığını OpenID Connect, OAuth ve diğer tekniklerle giderebilirsiniz.
  • Sahtekarlık ve yeniden oynatma saldırılarını önlemek için HMAC, durum, karma oluşturma, tek seferlik sayı veya PKCE tekniklerini kullanabilirsiniz.

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

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

Kurallar:

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