ASP.Net Uygulamalarında OASIS WAS EVDL Formatı Kullanan Uygulama Ateş Duvarı Gerçekleştirilmesi ( DefApp v0.63)



Benzer belgeler
MODSECURITY DENETİM KAYITLARINI ANLAMAK. Gökhan Alkan,

Coslat Monitor (Raporcu)

BioAffix Ones Technology nin tescilli markasıdır.

Web Uygulama Güvenliği Kontrol Listesi 2010

Cyberoam Single Sing On İle

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

LOGO DESTEK DOKÜMANI

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-rapor Web Servisleri Kullanım Kılavuzu

BioAffix Ones Technology nin tescilli markasıdır.

Öğr. Gör. Serkan AKSU 1

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-rapor Web Servisleri Kullanım Kılavuzu

E-fatura Yenilikler. E-fatura uygulaması ile ilgili çeşitli yenilikler seti ile birlikte yayınlandı:

Gönderilen uygulama incelendiğinde, belirtilen gerekliliklerin bir kısmının karşılandığı görülmüştür.

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

WebInstaller. 1. Kurulum Đçin Gereksinimler

BioAffix Ones Technology nin tescilli markasıdır.

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

JAVA API v2.0 Belge sürümü: 2.0.2

Veritabanı İşlemleri

Kaspersky Open Space Security: Release 2. İşletmeniz için birinci sınıf bir BT güvenliği çözümü

Web Application Penetration Test Report

Bilgi ve Olay Yönetim Sistemi

«BM364» Veritabanı Uygulamaları

BOTAŞ EBT BİLGİ YÖNETİM SİSTEMİ WEB SERVİSLERİ

Ağ Yönetiminin Fonksiyonel Mimarisi

BioAffix Ones Technology nin tescilli markasıdır.

Medula Eczane Stok Bilgileri Web Servisleri Kullanım Kılavuzu

NicProxy Registrar AWBS Modül Kurulumu Versiyon 1.0

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-rapor Web Servisleri Kullanım Kılavuzu

Saldırı Tespit ve Engelleme Sistemleri Eğitimi Ön Hazırlık Soruları

BOTAŞ EBT BİLGİ YÖNETİM SİSTEMİ WEB SERVİSLERİ

GOLDMESAJ SMS API DÖKÜMANI

Üst Düzey Programlama

Kategori:Allplan->Teknik Destek ve Kurulum->SSS_Allplan_2016_Server_Lisans_Kurulumu

Bilgi ve Olay Yönetim Sistemi

Güvenlik Java ve Web Uygulama Güvenliği

DESTEK DOKÜMANI. GOWeb programının çalıştırılabilmesi için sırasıyla aşağıdaki servis ve programların ilgili makinada kurulu olması gerekmektedir.


BİL-142 Bilgisayar Programlama II

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

The RestructuredText Book Documentation

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

C# nedir,.net Framework nedir?

Intercepting Filter Tasarım Şablonu KurumsalJava.com

MaestroPanel Kurulum

Windows Server 2012 Active Directory Kurulumu

PROGRAMLAMA DERSİ 1. İNTERNET

CSRF (XSRF, Cross Site Request Forgery Cross Site Reference Forgery ) Nedir? Nasıl Kullanılır? ve Nasıl Korunulur?

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-reçete Web Servisleri Kullanım Kılavuzu

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Tüm personel kendi KEP hesapları üzerinden mevcut ve önceki maaş bordrolarını görüntüleyebilecektir.

ADOBE FLASH PLAYER / CVE (Sıfırıncı Gün Zafiyeti)

5651 ve 5070 Sayılı Kanun Tanımlar Yükümlülükler ve Sorumluluklar Logix v2.3 Firewall. Rekare Bilgi Teknolojileri

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

Web Server Sunucu Loglarının K-Komşu Algoritması ile İ ncelenmesi

Geliştirme Klavuzu İlk Uygulama Hello World

COĞRAFİ BİLGİ SİSTEMLERİ SERVER MİMARİSİ SERVER UYGULAMA GELİŞTİRME EĞİTİMİ

Aktif Dizin Logon/Logoff Script Ayarları Versiyon

NicProxy Registrar WHMCS Modül Kurulumu Versiyon 1.0

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.


Java Temel Özellikleri

MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

TARİHÇE. Versiyon Tarih Düzenleyen Açıklama Engin DURMAZ İlk versiyon

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

WEB SUNUCU GÜVENLİĞİ: Web Siteleri Neden Hacklenir?

Basit bir web uygulaması

Windows 7 - IIS 7.5 üzerine PHP ve MySQL kurulumu

Sunum İçeriği. Programlamaya Giriş

DESTEK DOKÜMANI. Masaüstü için rapor kısayolu. Ürün : GO Bölüm : Görev Zamanlayıcı

Checkpoint SSL-VPN Kurulum Prosedürü. Checkpoint Endpoint VPN Client

4. Bölüm Programlamaya Giriş

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

API geliştiricileri. Web server ile yapılan entegrasyonun neticeleri. API Dokumantasyonu

MISSION WI-FI KURULUM KILAVUZU

İnternet Programcılığı

WEB UYGULAMA GÜVENLİĞİ HAKKINDA. Mesut Güngör İzmir Yüksek Teknoloji Enstitüsü Bilgi İşlem Daire Başkanlığı

Web Servis-Web Sitesi Bağlantısı

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

Üst Düzey Programlama

Ağ Üzerinde MATLAB kurulum rehberi (Sunucu makine)

Aktarımı Çalıştırmak/Geri Almak 146 Alan Seçenekleri 148 Veri Tabanı Şeması 150 Veri Tabanı ile İlgili Bazı Rake Görevleri 162 Modeller 164

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

VIO ERP12 Muhasebe Kurulum

Programlama Kılavuzu. IPV Serisi IP Santralleri IPV10 IPV20 IPV50

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Data Structures Lab Güz

Üst Düzey Programlama

Bölüm 10: PHP ile Veritabanı Uygulamaları

BİLGİSAYAR AĞLARI VE İLETİŞİM

KULLANICI KILAVUZU: UEA FİX KULLANICILARININ SSLVPN ERİŞİMİ İMKB İÇİNDEKİLER

COM API v2.0 Belge sürümü : 2.0.3

MASTER PAGE SAYFASI KULLANIMI

Bilgi Güvenliği Denetim Sürecinde Özgür Yazılımlar. Fatih Özavcı Bilgi Güvenliği Danışmanı

Transkript:

ASP.Net Uygulamalarında OASIS WAS EVDL Formatı Kullanan Uygulama Ateş Duvarı Gerçekleştirilmesi ( DefApp v0.63) Izzet Kerem KÜSMEZER 1 1 OWASP.org Türkiye Chapter Lideri 1 e-posta: kerem.kusmezer@owasp.org Anahtar sözcükler:ateş Duvarı,Uygulama Güvenliği, ASP.Net, HttpModule, OWASP ABSTRACT This paper presents a new multithread Application Level Firewall, which implements the EVDL Protect Component Format (Purposed By The OASIS WAS (OASIS (Organization for the Advancement of Structured Information Standards Web Application Security) Committee) as the attack signature format. The proposed Firewall gives the Administrators the ability to control the behavior of the validation and attack signature detection and more control then Microsoft s validate request ımplementatıon, whıch is designed by Microsoft for the ASP.Net Application since v1.1. It allows the Administrators to close the hole of the applications just using configuration files and without need of the source code of the running application. The solution is implemented as an Http Module. The Project is a LGPL Licensed Project and supported by the Owasp.org (Open Web Application Security Project). 1. GİRİŞ Günümüzde web uygulamalarındaki en önemli problem gerek proje tasarım aşamasında gerek proje teklif süreleri gerekse proje fiyatlandırmalarının düşürülmesinin sağlanması için, yazılım tasarımında güvenlik tasarımı ciddi anlamda gözardı edilmektedir. Bu bağlamda geliştirilmiş olan uygulamalarda çok ciddi yazılım güvenliği ve doğrulama hataları bulunmaktadır. Bu açıkların kısaca bir özeti Tablo 1.1de verilmiştir. ASP.Net bu tarz saldırılara karşı otomatik CSS ( Cross Site Scripting) Engelleme motoru içermektedir. Ama bu motorda aşağıda listenmiş olan güvenlik açıklarını içermekte ve kullanıcı tarafından filtrasyon tanımları konfigüre edilememektedir. Bu da ürünün kullanımını ciddi anlamda kısıtlamaktadır. DefApp bu sorunu gidermek ve OASIS WAS (Projesi tarafından geliştirilmiş olan EVDL formatının.net üzerinde gerçekleştirilmesini sağlamak için C# kullanılarak geliştirilmiştir. DefApp ASP.Net tarafından sunulan IHttpModule arayüzünün(interface in) implemente edilmesi sonucunda, ASP.Net tarafından oluşturulan aşağıda listesi verilen olaylar yakalanarak (Tablo 1.2), uygulamanın girdileri üzerinde gerekli geçerlik denetimleri yapılmakta, uygulamanın bu istek sonucunda hata oluşturması durumunda bu hatalar yakalanarak bir günlük ortamına yazılmakta, ve kurallarda belirtildiyse istekte bulunan kişinin belirli bir eşik değerini aşması durumunda otomatik olarak IIS ( İnternet Information Server ) üzerinde bir kural yaratarak İnternet İletişim Kuralı (İnternet Protokol) bazlı erişimi kapatılmaktadır. Uygulama şu anda detayları aşağıdaki tabloda (Tablo 1.3) verilmiş olan standart tanımlı kural yapılarını desteklemektedir. Kural yapılarının başka geliştiricilerin ihtiyaçları doğrultusunda geliştirilebilmesi açısından geliştirilmiş bir Uygulama Programlama Arayüzü (API) ile birlikte sunulmaktadır. 2. Yapılandırma Dosya Formatı Yapılandırma Dosyası ASP.Net Uygulamalarının web.config dosyasına eklenir ve DefenceMainSettingHandler isimli bir SettingHandler implementasyonu tarafından işlenerek, uygulama bu doğrultuda konfigüre edilir. Bu kısımlar kısaca aşağıdaki bölümlerden oluşmaktadır. a)handler(işleyici Bölümü) <Handlers> <HandleCookies Action="1"/> <HandleFormFields Action="1"/> <HandleQueryString Action="1"/> </Handlers> Yukarıda örnek olarak verilmiş olan bölümde istek içinde gelen hangi parametrelerin kontrol edileceği belirtilmektedir. Bu WAS EVDL Formatından bağımsız olarak uygulamanın kendi Filtrasyon motoru kullanımı durumlarında geçerli olmaktadır.

b) Kural Listesi(RuleList) <RuleList> <rule name="textchecks1" Action="deny" Type="Textrule" PlugInAlias=""><SCRIPT></rule> </RuleList> Yukarıda verilmiş olan rulelistte tanımlanmış kural ile içinde <script> tagi bulunan bütün requestlerin uygulamaya ulaşmadan tespit edilerek durdurulması sağlanmıştır. Her kural listesi EVDL Formatı haricinde istediğiniz sayıda kural içerebilmektedir. Bu kuralların kontrolleri ve mantıksal değimi kullanılarak değerlendirilmektedir.plugin Alias tanımı yapılmış ise verilen filtre tanımı o isimle yüklenmiş eklentilerin içinde aranır. c) Günlük Ayarları <Activation Debug="true" Active="true" DebugFile="c:\\testdebug.log"/> Günlük Oluşturulmasında Log4J Uygulamasının.Net Platformuna çevrilmiş hali olan Log4Net kullanılmıştır. Loglar yukarıda belirtilen konfigürasyon dosyası ayarları yardımıyla bir metin dosyasına yazdırılabilmektedirler. Günlük Dosyası yapılan isteklerin içeriklerini, istek başlık ve içerik bilgilerini içermekte, ve hangi kural tarafından ret edildiğiyle birlikte, istekte bulunan kişinin ip adresi gibi bilgilerini de içermektedir. (Tablo 1.4) Buradaki Debug Parametresi günlük oluşturulmasının açılmasını, Active Parametresi DefApp Uygulamasının web uygulaması yüklenirken aktive edilmesi, debugfile parametresi ise oluşturulan günlük içeriğinin belirtilen isimli dosyaya yazılmasını sağlamaktadır. d) Eklenti ve Genişletme Ayarları <Plugins> <plugin pluginalias="" pluginname="" assembly="" /> </Plugins> Eklenti tanımlamaları yukarıdaki parametreler aracılığıyla yapılmaktadır. Burada PlugInAlias kural seçimlerinde bu eklenti kütüphanesinin kural tanımında burada belirtilmiş olan assemblynin içinden okunması sağlanır. Plugin Name bu assemblynin içinde yüklenecek Plugin Setinin ismini belirtmektedir. Burada belirtilmiş olan assembly reflection kullanılarak yüklenip, içerisindeki DefAppPlugin(Tablo 1.5) sınıfından türetilmiş sınıflar bulunarak, otomatik olarak gerekli eklenti sınıfları oluşturulmaktadır. e) FoundStone Module Ayarları <FoundStoneModule XMLRulesDatabase="" ValidatorFormMappings="" ValidatorRules="" Active="true" /> Bu ayar bölümü FoundStone Firması tarafından geliştirilmiş ve geliştiricisi Dinis Cruz ve benim tarafımdan DefApp uygulamasını eklenmiş olan Validasyon Motorunun Konfigürasyonun Yapılması için gerekli ayarları içermektedir. Detaylı Konfigürasyon Formatı www.foundstone.com adresinden Validator.Net uygulamasının dokümantasyonunda bulunmaktadır. f) Henüz İmplementasyon Aşamasında Olan Özellikler a)evdl-0.5-protect Schema Validasyonu b)evdl Standardında tanımlanmış olan aşağıdaki istek normalizasyon tipleri. c)evdl Formatındaki Rule Tipleri d)evdl Formatındaki RuleSet Tanımlamaları Bu kısımların detaylı bilgisini OWASP WAS Commitesinden bulabilirsiniz. Bu formatların iç implemantasyonları bitirilmiş olup konfigürasyon modüleri tamamlanacaktır. Bu spesifikasyonu http://www.yazilimguvenligi.com adresinden indirebilirsiniz. 3. UYGULAMANIN ÇALIŞTIRILMASI Uygulama yukarıda detaylarıyla anlatılan konfigürasyon parametrelerinin web.config dosyasına (Tablo 1.7) şekilde eklenmesi sonucunda ve DefAppModule une ait dll dosyasının GAC veya web uygulamasının bin/ klasörüne konularak çalışır hale getirilir. Uygulama Debug modunda çalıştırıldığında konfigürasyon dosyalarının okunması, gerekli kuralların yaratılmasıyla ilgili olan bütün işlem adımları belirtilmiş olan günlük dosyası üzerinden takip edilebilmekte, saldırganca kullanılmış bütün saldırı desenleri izlenebilmektedir. Aynı zamanda uygulama logları gerçek zamanlı olarak defapp.aspx sayfasının çağrılmasıyla web üzerinden de takip edilebilmektedir. DefApp.aspx dosyası şu anda şifresiz olarak istenebilmektedir, ama bunun yetkilendirme yönetimiyle ilgili geliştirme bitirilmiş olup, bir dahaki sürümde aktive edilecektir.şayet isteklerin içinde kurallar tarafından onaylanmayan bir desen ile karşılaşılırsa, uygulamanın çalışması durdurularak kullanıcıya bir hata mesajı dönülmektedir.

Şekiller ve Tablolar: Olay Adı Yapılan İşlem Olay İşleyici Metod ve Açıklaması BeginRequest İstemci Tarafından Gönderilen Main.MainHandlingSection İsteğin ASP.Net Uygulamasına Ulaşmadan Önce Tanımlanmış Olan Filtrasyon Metodlarınca Denetimden Geçirildiği Bölüm. PreSendRequestHeaders İstemci Tarafından Gönderilen Main.HeaderHandlingSection İsteğe ASP.Net Uygulaması Tarafından Gerekli İçerik Oluşturulduktan Sonra HTTP (Hiper Metin Aktarım İletişim Kuralı) Başlık Bilgileri Gönderilmeden Çalıştırılan Bölüm PreSendRequestContent İstemci Tarafından Gönderilen Main.ContentHandlingSection İsteğe ASP.Net Uygulaması Tarafından Gerekli İçerik Oluşturulduktan Sonra HTTP (Hiper Metin Aktarım İletişim Kuralı) İçerik Bilgileri Gönderilmeden Çalıştırılan Bölüm EndRequest İstemci Tarafından Gönderilen Main.EndHandlingSection İsteğe ASP.Net Uygulaması Tarafından Gerekli İçerik Oluşturulduktan Sonra HTTP (Hiper Metin Aktarım İletişim Kuralı) İstekle İlgili İşlemlerin Bitirildiği Bölüm. Error Uygulamanın Çalışması Esnasında Kural Dışılık İşlemesi Yapılmamış Durumların Yakalandığı Modül Main.ErrorHandlingSection Tablo 1.2.Yakalanan Olaylar

Güvenlik Açığı İsmi Güvenlik Açığı Açıklaması DefApp Tarafından Sağlanan Korunma Metodu Teyit Edilmemiş Girdi Enjeksiyon Kusurları Çiğnenmiş Doğrulama ve Oturum Yönetimi Çapraz Site Sorgu (XSS) Açıkları Uygunsuz Hata İşleme Servis Engelleme Kullanıcıdan gelen talebin, web uygulamasında kullanılmadan önce girdi olarak kabul edilmeye uygunluğu kontrol edilmez. Saldırganlar bu tanımlanmamış girdi açıklarını kullanarak web uygulaması üzerinden arka plandaki bileşenlere saldırabilirler. Web uygulamaları dış sistemlere veya yerel işletim sistemine eriştiklerinde, değişkenleri kabul ederler. Eğer bir saldırgan zararlı komutlarını bu değişkenlerin içine saklayabilirse, dış sistem bu komutları web uygulaması adına çalıştırır. Hesap güven belgeleri ve oturum token ları doğru korunmaz. Şifreler, anahtarlar, oturum kurabiyeleri ve diğer token larla oynayabilen saldırganlar doğrulama kusurlarını aşabilir ve başka kullanıcıların kimliklerine bürünebilirler. Web uygulamaları bir saldırıyı son kullanıcıya browser ı vasıtasıyla iletmek için bir araç olarak kullanılabilir. Başarılı bir saldırı son kullanıcının oturum izini afişe edebilir, yerel makineye saldırabilir veya kullanıcıyı kandırmak için içeriği taklit edebilir. Normal koşullarda oluşan hata durumları doğru ele alınmaz. Eğer saldırgan web uygulamasının başa çıkamayacağı hatalara neden olabilirse, detaylı sistem bilgisi elde edebilir, servisi engelleyebilir, güvenlik mekanizmalarının başarısız olmasını sağlayabilir veya sunucuyu çökertebilir. Regular Expression Kuralı ile tanımlanmış, aynı zamanda Metin Kuralı ile tanımlanmış kurallarla gerekli koruma BeginRequest olayında kontrol edilebilir. Aynı zamanda içerdiği FoundStone HttpModule implemantasyonuyla webform bazında da input validasyon tanımlanabilir. BegınRequest olayında ve PreSendRequestHeaders methodlarında cookieler ve başlık bilgileriyle ilgili gerekli denetimler yapılmaktadır. Çapraz Site Sorguları DefApp Tarafından otomatik olarak BeginRequest olayında yakalanmaktadır. Bu esnada gelen istek üzerinde ASP.Net uygulamasında tanımlı codepage e bağlı olarak yüksek UTF-8 karakterleri eş değer normal karakter değerlerine çevrilerek, ASP.Net 1.1 deki doğrulama motorunun içerdiği bir hatada giderilmektedir. Uygulama tarafından implemente edilmiş olan hata işleme modülü hata mesajlarının son kullanıcıya ulaşmasını engellemekte, ve bilinçli olarak belirli hataların sürekli oluşturulması halinde saldırganın uygulamaya erişimi engellenmektedir. Web uygulamaları bilgileri ve güven belgelerini Uygulama tarafından korumak için, sıkça kriptografik fonksiyonlar implemente edilmiş olan hata kullanırlar. Bu fonksiyonlar ve entegre etmek işleme modülü hata mesajlarının için kullanılan kodun zorluğu, sık sık düşük son kullanıcıya ulaşmasını seviye koruma ile sonuçlanır. engellemektedir. Uygulama bir adresten normalin üzerinde istek aldığında saldırganın uygulamaya erişimi engellenmektedir. Tablo 1.1.Yazılım Güvenliği Güvenlik Açıkları

Kural İsmi Textrule (Metin Kuralı) RegExRule(Regular Expression Kuralı) Ntextrule(Metin Kuralı) LtRule(Küçüktür Kuralı) GtRule(Büyüktür Kuralı) Kural Özellikleri İsteğin içinde belirtilmiş objelerde tanımlanmış olan metni arar ve uygun olarak belirtilmiş aksiyonu gerçekleştirir. İsteğin içinde belirtilmiş Regular Expression desenini arar ve uygun olarak belirtilmiş aksiyonu gerçekleştirir. İsteğin içinde belirtilmiş objelerde tanımlanmamış olan metni arar ve uygun olarak belirtilmiş aksiyonu gerçekleştirir. İsteğin içinde belirtilmiş objelerde tanımlanmamış olan degerden küçük değeri arar ve uygun olarak belirtilmiş aksiyonu gerçekleştirir. İsteğin içinde belirtilmiş objelerde tanımlanmamış olan degerden büzük değeri arar ve uygun olarak belirtilmiş aksiyonu gerçekleştirir. Tablo 1.3.Standart Tanımlanmış Kurallar 120 [2840] DEBUG Owasp.DefApp.Utility.GeneralUtilities - HttpMethod------>POST RequestType------>POST ContentType------>application/x-www-form-urlencoded ContentLength------>127 ContentEncoding------>System.Text.CodePageEncoding AcceptTypes------>System.String[] IsAuthenticated------>False IsSecureConnection------>False Path------>/DefAppTestWeb/testforms.aspx FilePath------>/DefAppTestWeb/testforms.aspx CurrentExecutionFilePath------>/DefAppTestWeb/testforms.aspx PathInfo------> PhysicalPath------>C:\Inetpub\wwwroot\DefAppTestWeb\testforms.aspx ApplicationPath------>/DefAppTestWeb PhysicalApplicationPath------>C:\Inetpub\wwwroot\DefAppTestWeb\ UserAgent------>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;.NET CLR 1.1.4322) UserLanguages------>System.String[] Browser------>System.Web.Mobile.MobileCapabilities UserHostName------>127.0.0.1 UserHostAddress------>127.0.0.1 RawUrl------>/DefAppTestWeb/testforms.aspx Url------>http://localhost/DefAppTestWeb/testforms.aspx UrlReferrer------>http://localhost/DefAppTestWeb/testforms.aspx QueryString------> Form------> VIEWSTATE=dDwtMzg4MDA0NzA7Oz7HvuPk%2fv8ojwi6jQf2vq%2fL6yJFqA%3d%3d&TextBox1=%3cscript%3e&T Headers------>Cache-Control=no-cache&Connection=Keep-Alive&Content-Length=127&Content-Type=application%2fx-www-form excel%2c+application%2fmsword%2c+*%2f*&accept-encoding=gzip%2c+deflate&accept-language=en-us%2ctr%3bq%3d0.5&cook Agent=Mozilla%2f4.0+(compatible%3b+MSIE+6.0%3b+Windows+NT+5.1%3b+.NET+CLR+1.1.4322) ServerVariables------>ALL_HTTP=HTTP_CACHE_CONTROL%3ano-cache%0d%0aHTTP_CONNECTION%3aKeep-Alive%0d%0aH shockwave-flash%2c+application%2fvnd.ms-powerpoint%2c+application%2fvnd.ms-excel%2c+application%2fmsword%2c+*%2f*%0d us%2ctr%3bq%3d0.5%0d%0ahttp_cookie%3aasp.net_sessionid%3d42zrl455iqwzrfye4q3r0r45%0d%0ahttp_host%3alocalh AW=Cache-Control%3a+no-cache%0d%0aConnection%3a+Keep-Alive%0d%0aContent-Length%3a+127%0d%0aContent-Type%3a+ap excel%2c+application%2fmsword%2c+*%2f*%0d%0aaccept-encoding%3a+gzip%2c+deflate%0d%0aaccept-language%3a+en Agent%3a+Mozilla%2f4.0+(compatible%3b+MSIE+6.0%3b+Windows+NT+5.1%3b+.NET+CLR+1.1.4322)%0d%0a&APPL_MD_PAT T_COOKIE=&CERT_FLAGS=&CERT_ISSUER=&CERT_KEYSIZE=&CERT_SECRETKEYSIZE=&CERT_SERIALNUMBER=&C urlencoded&gateway_interface=cgi%2f1.1&https=off&https_keysize=&https_secretkeysize=&https_serv tpub%5cwwwroot%5cdefapptestweb%5ctestforms.aspx&query_string=&remote_addr=127.0.0.1&remote_host=127. ERVER_SOFTWARE=Microsoft-IIS%2f5.0&URL=%2fDefAppTestWeb%2ftestforms.aspx&HTTP_CACHE_CONTROL=no-cache&H xbitmap%2c+image%2fjpeg%2c+image%2fpjpeg%2c+application%2fx-shockwave-flash%2c+application%2fvnd.ms-powerpoint%2c+ap us%2ctr%3bq%3d0.5&http_cookie=asp.net_sessionid%3d42zrl455iqwzrfye4q3r0r45&http_host=localhost&http_refer Cookies------>System.Web.HttpCookieCollection

TotalBytes------>127 120 [2840] DEBUG Owasp.DefApp.DefenceMainSettingHandler - Kyrillisch (Windows) 120 [2840] DEBUG Owasp.DefApp.DefenceMainSettingHandler - windows-1251 120 [2840] DEBUG Owasp.DefApp.DefenceMainSettingHandler - 1251 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Begin With The Form Handling 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Checking Form Object VIEWSTATE-->dDwtMzg4MDA0NzA7Oz7H 120 [2840] DEBUG Owasp.DefApp.Convertors.OutputConvertors - Begin With CleanUp 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Checking Form Object TextBox1--><script> 120 [2840] DEBUG Owasp.DefApp.Convertors.OutputConvertors - Begin With CleanUp 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Validation Failure has been found invalidation of rule:textchecks with pa 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Invalid Objects has been found according to rule textchecks 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Checking Form Object TextBox2--><script> 120 [2840] DEBUG Owasp.DefApp.Convertors.OutputConvertors - Begin With CleanUp 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Validation Failure has been found invalidation of rule:textchecks with pa 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Invalid Objects has been found according to rule textchecks 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Checking Form Object Button1-->Button 120 [2840] DEBUG Owasp.DefApp.Convertors.OutputConvertors - Begin With CleanUp 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - End Of The Form Handling 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Begin With The Querystring Handling 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - End With The Querystring Handling 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - Begin With The Cookie Handling 120 [2840] INFO Owasp.DefApp.DefenceMainSettingHandler - The Cookie Object To Be Check :ASP.NET_SessionId--->42zrl455iqwz Tablo 1.4 DefApp Günlük Dosyası Örneği public abstract class DefAppPlugin public abstract string PluginName(); public abstract ArrayList DefinedFilters(); public abstract ArrayList DefinedRules(); public abstract Rule GetRuleByName(string rulename); public abstract Filter GetFilterByName(string filtername); private static readonly ILog log = LogManager.GetLogger(typeof (DefAppPlugin)); public static ArrayList XmlToPlugin(string AssemblyName, int maxcount, ArrayList ary) ArrayList plugins = null; if (ary == null) new ArrayList(); else plugins = ary; Assembly assembly = Assembly.LoadFile(AssemblyName); Type[] types = null; int Count = 0; try types = assembly.gettypes(); catch (Exception ex) Console.WriteLine(ex.Message); for (int i = 0; i < types.length; i++) if (types[i].isclass && types[i].ispublic && types[i].issubclassof(typeof (DefAppPlugin))) DefAppPlugin.log.Info(types[i].Namespace + "." + types[i].name); Object obj =

Activator.CreateInstance(types[i], null); if (!GeneralUtilities.IsNull(obj)) plugins.add(obj); Count++; if (Count >= maxcount) return plugins; return plugins; public static DefAppPlugin XmlToPlugin(string AssemblyName) Assembly assembly = Assembly.LoadFile(AssemblyName); Type[] types = null; try types = assembly.gettypes(); catch (Exception ex) Console.WriteLine(ex.Message); for (int i = 0; i < types.length; i++) if (types[i].isclass && types[i].ispublic && types[i].issubclassof(typeof (DefAppPlugin))) DefAppPlugin.log.Info(types[i].Namespace + "." + types[i].name); Object obj = Activator.CreateInstance(types[i], null); if (!GeneralUtilities.IsNull(obj)) return (DefAppPlugin) obj; return null Tablo 1.5 DefAppPlugin Sınıfı

<configuration> <configsections> <sectiongroup name="appsec"> <section name="appgenerals" type="owasp.defapp.defencemainsettinghandler,defappmodules"/> </sectiongroup> </configsections> <AppSec> <AppGenerals> <Activation Debug="true" Active="true" DebugFile="c:\\testdebug.log"/> <FoundStoneModule XMLRulesDatabase="bin/" ValidatorFormMappings="ValidatorFormMappings.xml" ValidatorRules="ValidatorRules.xml" Active="true" FSPageOutput="false"/> <Handlers> <HandleCookies Action="1"/> <HandleFormFields Action="1"/> <HandleQueryString Action="1"/> </Handlers> <RuleList> <rule name="textchecks1" Action="deny" Type="Textrule"><SCRIPT></rule> <rule name="textchecks" Action="deny" Type="Textrule"><script></rule> </RuleList> <Plugins> <plugin assembly="" /> </Plugins> </AppGenerals> </AppSec> <!-- End Of DefApp Configuration Section --> <system.web> <httpmodules> <add type="owasp.defapp.defencemodules, DefAppModules" name="modulelibrary"/> </httpmodules> Tablo 1.6 Web.Config Konfigürasyon Örneği 4. SONUÇ Bu çalışmada çeşitli Filtrasyon teknikleri ve saldırı algılama teknikleri kullanılarak daha önceden yazılım geliştirme esnasında yazılım güvenliğiyle ilgili dizaynları problemli olan uygulamaların kaynak kodlarına sahip olunmadan ve uygulama üzerinde hiçbir değişiklik yapılmadan düşük maliyetli ve ileri teknik bilgiye sahip olmayan bir kişi tarafından DefApp uygulaması kullanılarak nasıl güvenli hale getirileceği gösterilmiştir. Uygulama OWASP.org En Yaygın 10 Güvenlik Açığının çoğunun mevcut kod üzerinde herhangi bir değişiklik yapılmadan engellemesini sağlamıştır. Ayrıca uygulama şu anda endüstride kullanılması planlanan üç ayrı formata destek vermesi sonucunda hali hazırda hazırlanmış olan application firewall kural takımlarının kullanılmasında mümkün kılarak bakım ve öğrenme maliyetlerini ciddi anlamda düşürmektedir. Projenin son sürümü http://www.yazilimguvenligi.com/defapp adresinden ücretsiz olarak indirilebilir. KAYNAKLAR [1] OWASP.org, The Ten Top Most Critical Web Application Security Vulnerabilities, January 27th 2004 [2] Ivan Ristic, Where Do Web Application Firewalls Fit in the Overall Defense Strategy? March 02, 2005 [3] Grossman Jeremiah, webappsec.org, The 80/20 Rule for Web Application Security, 1/31/2005 [4] Zimmer David, sandsprite.com, Real World XSS, 11/04/03 [5] J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and Anandha Murukan, Microsoft Press, Improving Web Application Security: Threats and Countermeasures, June 2003 [6] Küsmezer I.Kerem, Cruz Dinis, OWASP.ORG, DefApp Api Documentation March 2005