Web Uygulamaları Güvenliği
ve
Web Uygulamalarında Zayıflık Tespiti

Onur YILMAZ, <contact at onuryilmaz dot info>, webguvenligi.org, 07/05/2009

 

Giriş

Dizinin ilk yazısında web uygulamalarında güvenliğin önemine değinmiştik. Bu yazımızda da uygulamalardaki güvenlik problemlerinin nedenleri ve bu problemlerin tespiti konularında teorik bilgilere yer vereceğiz.


Uygulamalar Neden Güvensiz?


Teknik Nedenler


  1. Programlama Dili / Çatısı Seçimi: Bir dilin ya da platformun güvenlik analizi yapılırken genel olarak; platformun kendisinden çıkan açıklar, platform tarafından geliştiriciye sunulan güvenlik kütüphaneleri, güvenlik önlemleri almak için yapılması gereken işlemlerin kolay olması ve varsayılan ayarlar kriter olarak gözetilmektedir. Bu noktada geliştirici, ilgili kriterlere göre platform / dil seçimini yaptığı takdirde uygulamanın güvenliğini büyük ölçüde zahmetsiz bir şekilde sağlamış olacaktır [5].

  2. Yetersiz Güvenlik Farkındalığı: Proje yöneticisinin veya geliştiricinin; web uygulamalarına yönelik saldırılar ve web uygulamaları güvenliği konusunda bilgisiz olması, uygulamalarda oluşan hataların en büyük sebebidir. Uygulamanın geliştirilme sürecinde, uygulamaya, yazılımsal olarak katkı sağlayan geliştiriciler veya proje yöneticilerinin uygulamaya ne tür saldırılar gelebileceği konusunda bilgisiz olması, saldırının nerelerden gerçekleşebileceğini görememesi gibi nedenlerden ötürü uygulamalar saldırılara açık hale gelmektedir. Bu noktada bu sürece katkıda bulunan kişilerde "güvenlik farkındalığının oluşması", "saldırılar konusunda bilgi edinilmesi" ve "uygulamanın bu donelere göre revize edilip güvenli hale getirilmesi" sorunları büyük ölçüde çözmektedir.

  3. Sektörün Takip Edilmemesi: Yeni teknolojilerin geliştirilmesine paralel olarak bu teknolojilere zarar vermek amaçlı geliştirilen yeni tekniklerin bilinmemesi, web güvenliği sektöründeki gelişmelerin takip edilmemesi ise geliştirme sürecinden sonra uygulamaya gelebilecek saldırıları açıklamaktadır.

Sosyal Nedenler

  1. Geliştirme Döngüsünün İzlenmemesi: Müşterilerden gelen taleplere göre projenin çoğu zaman yeniden şekillenmesi, bu süreç esnasında yapının bozulması ve güvenlik açıklarının oluşması, uygulamaya yönelik gelebilecek saldırıların niceliğini ve niteliğini doğrudan etkilemektedir. Standart bir geliştirme döngüsünün izlenmesi, bu sorunu ortadan kaldırmaya yardımcı olacaktır.

  2. Proje Deadline: Projenin geliştirme ve test süreçlerinin yeterince uzun olmaması nedeniyle yapıda bozukluklar ortaya çıkmaktadır. İyi bir proje ve zaman yönetiminin uygulanması, her zaman için faydalı olacaktır.

Diğer Nedenler

  1. Kötü Niyetli Yazılımcılar: Outsourcing bir metod izleyerek, projenizi ilgili alanda branşlaşmış kişi ya da kurumlara yaptırabilirsiniz ki bu sektörde karşılaşılan bir durumdur. Outsourcing`in birçok avantajı olsa da uygulamayı geliştiren kişilerce kötü niyet gözetilerek uygulamanızda güvenlik açıkları bırakılabilir. Bu nedenden ötürü outsourcing proje çalışmalarınızda projeyi geliştirecek firma seçimini iyi yapmanız ve proje tesliminin akabinde de uygulamanızı güvenlik riskleri kriterlerine göre test ettirmeniz faydanıza olacaktır.

Genel olarak uygulamalarda karşılaşılan güvenlik açıklarının nedenleri yukarıdaki gibidir. Biz yazı dizimizde "programlama dili / çatısı seçimi" ve "yetersiz güvenlik farkındalığı" maddeleri üzerine yoğunlaşacağız.

Güvenli Web Uygulamaları Geliştirmek için Neler Yapılmalı?



 

Web Uygulamalarında Zayıflık Tespiti





Sonuç

İkinci yazımızın sonuna geldik. Üçüncü yazımızdan itibaren (Code Injection) teorik konulardan ziyade teknik-pratik konulara başlayacağız.

Referanslar

[1] http://en.wikipedia.org/wiki/Penetration_testing#Black_box_vs._White_box
[2] http://ferruh.mavituna.com/penetration-tester-olmak-oku/
[3] http://www.webguvenligi.org/wp-content/uploads/2008/10/OWASP_Testing_Guide_[Foreword_-_Introduction).pdf
[4] http://www.owasp.org/index.php/Category:OWASP_Testing_Project
[5] http://spreadsheets.google.com/pub?key=pWqXgSu_wNm-GkSPgOGyOWQ
[6] http://erratasec.blogspot.com/2008/07/why-you-have-to-reboot-your-router.html