Web Service Security Cheat Sheet tr

Giriş
Bu döküman, web servislerini daha güvenli hale getirmek ve web servislere yönelik saldırıları engellemek konularında rehber olmaya odaklanmıştır. Bu dökümanın içindeki bilgilerden faydalanılırken lütfen bu bilgilerin uygulanmalarının çeşitli programlama çerçevelerine göre farklılık göstereceğini unutmayın. Bu sebeptendir ki döküman ve içerdiği bilgiler üst düzey olarak ele alınmalıdır.

İletimde Gizlilik
Web Servislerinde bilgi iletiminin gizliliği, bilgi alış-verişi esnasında gidip gelen bilgilerin dinlenmesine (eavesdropping) ve araya girme (man in the middle) saldırılarına karşı sunucu ve istemci arasındaki web servislerin güvenli iletişimini sağlar.

Sunucu Tarafında Kimlik Doğrulaması
Kural: Servis sağlayıcı, servis kullanıcılarının güvenliğini sağlamak için SSL/TLS güvenli protokollerini kullanmak zorundadır.

Servis kullanıcısı güvenli sertifika sağlayıcısı tarafından tescillenmiş sunucu sertifikasını doğrulamalıdır, öyle ki bu sertifikanın zamanı dolmamış, iptal edilmemiş, yürürlükten kaldırılmamış olması, servisin alan / ilgi alanı ismi (domain name) ile eşleştiğini doğrulamalıdır ve sunucu kendisinde bu açık anahtar sertifikasına dair gizli anahtarın olduğunu ispatlamalıdır.(Tamamen doğru ve dürüst bir biçimde bazı şeyleri dijital olarak imzalayarak veya başarılı bir şekilde açık anahtar ile eşleşmiş bazı dataları deşifre ederek bunu başarabilir.)

Kullanıcı Tarafında Kimlik Doğrulaması
Kullanıcı doğrulaması, servise bağlanmak isteyen sistemin / sistemlerin veya kullanıcıların kimliklerini doğrular. Böyle bir doğrulama işlemi, web servisini içeren mekanizmanın görevidir.

Kural: Eğer kullanılıyorsa, basit kimlik doğrulaması SSL üzerinden yütürülmek zorundadır. Fakat basit kimlik doğrulaması önerilmemektedir.

Kural: SSL kullanılarak gerçekleştirilen istemci sertifika doğrulaması, tavsiye edilen güçlü bir kimlik doğrulama şeklidir.

İletimin Kodlanması
SOAP kodlama teknikleri, bilgileri yazılımdaki objelerden XML formatına ve XML formatından objelere taşımadır.

Kural: Bu sebepledir ki, sunucu ve istemci için her iki tarafında aynı kodlama tekniğinin kullanılmasına zorlanmalıdır.

Mesaj Bütünlüğü
İletimde olan verilerin bütünlüğü SSL / TLS tarafından kolayca sağlanabilir. Açık anahtar şifreleme metodu kullanılırken, şifreleme güvenliği garanti eder fakat şifreleme esnasında alıcının açık anahtarı “açık” olduğundan dolayı mesajların bütünlüğünün doğruluklarını garanti etmez. Aynı sebepten dolayı, şifreleme gönderenin kimliğini de garanti etmez.

Kural: XML datalar da, mesajların bütünlüğünü sağlamak için göndericinin gizli anahtarını kullanarak XML elektronik imzalarını kullanın. Bu imzalama işleminin doğrulanması alıcı tarafından gönderenin elektronik sertifikası kullanılarak yapılır. (Açık anahtar metodolojisi.)

Mesaj Gizliliği
Veri elemanları, kaba güç saldırılarını engellenmesi veya kaba güç saldırılarına karşı güvenli olabilmeleri ve gizli kalabilmeleri için yeterli uzunlukta ki anahtar ile güçlü bir şekilde şifrelenmelidir.

Kural: Hassas verileri içeren mesajlar güçlü bir şekilde şifrelenmelidir. Bu iletişimin şifrelenmesi veya mesajların şifrelenmesi şeklinde olabilir.

Kural: Hassas veriler içeren mesajlar güçlü bir şifreleme yöntemi ile alındı bilgisinden sonra dahi şifreli olarak kalmalıdır. Sadece iletim süresince değil.

Yetkilendirme
Web Servisleri, web uygulamalarının kullandığı kullanıcıları yetkilendirme yoluyla, istemcilerini yetkilendirmeye ihtiyaç duyarlar. Web servisi, istemcinin talep edilen veri / veriler için kesin bir işi yapacak şekilde yetkilendirildiğinden emin olmalıdır.

Kural: Web servisi, istemci tarafından gönderilen sorguda ki metoda erişim izni olup olmadığını göz önüne alarak istemcisini yetkilendirmelidir. Takip eden yetkilendirme de, web servisi talep edilen isteğin gerekli kaynaklara ulaşıp ulaşamayacağına dair ayrıcalıklarını/özel izinlerini kontrol etmelidir. Bu işlem her istek için yapılmalıdır.

Kural: Web servis uygulaması içinde yönetim ve idarecilik işlevselliklerinin web servisi uygulamasının yöneticilerine yönelik olarak kısıtlandırıldığından emin olunmalıdır. İdeal olan, web servisini yöneten herhangi bir yönetici işlevselliğinin/işlevselliklerinin web servisi uygulamasından tamamen farklı olmalıdır. Böylece normal kullanıcılarla yetkili kullanıcılar ve hassas işlevsellikler birbirinden tamamen ayrılmalıdır.

Şematik Doğrulama
Şematik doğrulama, kısıtlamaları ve kodlama imlalarını şema içerisinde tanımlanan şekilde olmasına zorlar.

Kural: Web Servisleri, ilgili XML şema tanımına karşı SOAP taşıma yüklerini doğrulamak zorundadırlar.

Kural: SOAP web servisi için tanımlanan XML şeması, minimum olarak, her parametre için maksimum uzunluk ve web servise girdi ve çıktı olacak karakter setlerini tanımlamalıdır.

Kural: SOAP web servisi için tanımlanan XML şeması, tüm sabit biçemler için güçlü (ideal olarak beyaz liste) doğrulama paterni tanımlamalıdır. (Misal olarak: zip kodları, telefon numaraları, liste değerleri vs.)

İçerik Doğrulaması
Kural: Herhangi bir web uygulamasında olduğu gibi web servisleri de aldıkları girdileri kullanmadan önce doğrulamaya ihtiyaç duyarlar. XML girdisi için içerik doğrulaması altta ki maddeleri içermelidir: -	Kusurlu XML girdilerine karşı doğrulama, -	XML bombardıman saldırılarına karşı doğrulama, -	Güçlü bir beyaz liste kullanarak girdilerin doğrulanması, -	Dışarıdan girdi saldırılarına karşı doğrulama.

Çıktı Kodlaması
Web servisleri, istemci tarafına gönderdikleri çıktı verilerinin komutlar şeklinde değil, datalar şeklinde kodlandığından emin olmak durumundadırlar. Bu, istemcinin gelen çıktı verilerini HTML sayfalarını işlemek için direkt veya dolaylı olarak AJAX nesnelerini kullanması durumunda çok daha önemli bir duruma gelmektedir.

Kural: Çıktıların kodlanmasında ki her kural için XSS önleme veri dosyasına bakılmalıdır.

Virüs Koruması
SOAP, SOAP mesajlarına dosya ve döküman ekleme kabiliyeti verir. Buda, bilgisayar korsanlarına bu SOAP mesajlarına virüsleri ve kötü amaçlı yazılımları ekleme fırsatı verir.

Kural: Kullanılan virüs tarama teknolojisi sistem de mevcut ve sıralı şekilde sisteme entegre edilmiş olmalıdır.Bu sayede dosyalar veya eklenmiş dökümanlar diske kayıt edilmeden önce kontrolden geçirilebilir.

Kural: Kullanılan virüs tarama teknolojisinin güncel olduğundan ve her zaman en son virüs tanımlamalarını aldığından emin olunmalıdır.

Mesaj Kapasitesi
Web Servisleri, web uygulamaları gibi otomatik gönderilen ve geniş kapasiteye sahip binlerce SOAP mesajı tarafından servis dışı bırakma saldırılarının hedefi olabilirler. Bu olay, servisi gelen isteklere cevap verme konusunda yetersiz bırakabilir veya tamamen servis dışı kalmasına neden olabilir.

Kural: SOAP mesajlarının kapasiteleri uygun bir kapasiteyle sınırlandırılmalıdır. Kapasite arttıkça veya sınırlandırılmadıkça servis dışı bırakma saldırılarının başarılı olma oranları da yükselir.

Erişilebilirlik
İşlem hacmi, belirli bir süre içerisinde yerine getirilmiş web servis isteklerinin sayısıdır.

Kural: Yapılandırma/konfigürasyon, servis dışı bırakma durumlarını engelleyecek şekilde maksimum mesaj hacmine cevap verecek biçimde olmalıdır.

XML Servis Dışı Bırakma Koruması

Web Servislere karşı belki de en çok bilinen ve yapılan saldırı şekli servis dışı bırakma saldırılarıdır. Bu sebeptendir ki web servisleri aşağıdaki doğrulamaları sağlamak zorundadırlar:

Kural: Yinelemeli veri taşıma yüküne karşı doğrulama,

Kural: Büyük veri yüklerine karşı doğrulama,

Kural: XML birim genişlemelerine karşı koruma,

Kural: Çok uzun element isimlendirmelerine karşı doğrulama. Eğer geliştirici, SOAP tabanlı web servisleri üzerinde çalışıyor ise, element isimleri SOAP eylemleridir.

Bu koruma yöntemi, XML derleyicisi / şeması tarafından sağlanmalıdır. Doğrulamak için, derleyicinin bu tarz saldırılara karşı dayanıklı olduğuna dair testler yapılmalıdır.

Son Nokta da Güvenlik Profili

Kural: Web servisi minimum ölçüde web servisleri işbirlikteliği (Web Services-Interoperability (WS-I)) profili ile uyumlu olmalıdır.

Referans: https://www.owasp.org/index.php/Web_Service_Security_Cheat_Sheet