İzin verilen işlemlerin yetki derecelerine uygun olarak sadece yetkili kullanıcılar tarafından gerçekleştirilebilmesini sağlamak



Benzer belgeler
Web Uygulama Güvenliği Kontrol Listesi 2010

Veritabanı. Ders 2 VERİTABANI

BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK

Selective Framebusting

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

SİBER SUÇLARA KARŞI SİBER ZEKA

Tavsiye Edilen Önhazırlık Temel veritabanı kavramlar hakkında bilgi sahibi olmak. Hedefler Temel veritabanı güvenlik işlemlerini gerçekleştirebilmek

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

Ağ Yönetiminin Fonksiyonel Mimarisi


Yeni Nesil Ağ Güvenliği

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ;

Veritabanı Sızma Testleri Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

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

DSİ kapsamında oluşturulan dağınık durumdaki verilerinin düzenlenmesi, yeniden tasarlanarak tek bir coğrafi veri tabanı ortamında toplanması,

Bilgi Servisleri (IS)

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

VERİ TABANI UYGULAMALARI

Bilgi Güvenliği Eğitim/Öğretimi

TÜBİTAK ULAKBİM ELEKTRONİK İMZA ENTEGRASYONU HİZMET ALIMI TEKNİK ŞARTNAMESİ

ProFTPD FTP Sunucusu. Devrim GÜNDÜZ. TR.NET Sistem Destek Uzmanı.

BioAffix Ones Technology nin tescilli markasıdır.

Web Güvenliği Topluluğu webguvenligi.org Web Uygulama Güvenliği Kontrol Listesi 2012

08217 Internet Programcılığı II

2-Veritabanı Yönetim Sistemleri/ Temel Kavramlar

KANTAR UYGULAMASI Kurulum Kılavuzu

BioAffix Ones Technology nin tescilli markasıdır.

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

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

YAZILIM GÜVENLİK TESTLERİ. H A L D U N T E R A M A N h a l d u n t e r a m a g m a i l. c o m

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

OTURUM AÇMA ADLARI. Tavsiye Edilen Önhazırlık Enterprise Manager'i kullanabilmek.

BioAffix Ones Technology nin tescilli markasıdır.

Öğr. Gör. Serkan AKSU 1

Windows Đşletim Sistemleri AD Etki Alanı Grupları Đncelenmesi ve Güvenlik Ayarları

1.Mailbox Server Role:

Sun Solaris ve RBAC ( Role Based Access Control List)

ELEKTRONİK SAĞLIK KAYITLARI GÜVENLİĞİNDE IEEE 802.1x STANDARDININ KULLANILMASI

Web Application Penetration Test Report

1 Temel Kavramlar. Veritabanı 1

MOBİLTEG MİKRO DEPO OTOMASYONU

Web Servis-Web Sitesi Bağlantısı

Php İle Mysql Veritabanından Bilgi Çekme

Başlangıç Ayarları.

Bilgi güvenliği konusunda farkındalık yaratmak. Mobil cihazlardaki riskleri anlatmak. Mobil uygulamaların bilgi güvenliği açısından incelemek 2

PHP ile İnternet Programlama

Üst Düzey Programlama

Pac Dosyası İle Proxy Kullanmak

BioAffix Ones Technology nin tescilli markasıdır.

Swing ve JDBC ile Database Erişimi

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

1.PROGRAMLAMAYA GİRİŞ

İnternet Programcılığı

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

Atılım Üniversitesi Bilgi & Đletişim Teknolojileri Müdürlüğü Sistem Yönetim Uzmanı Görev Tanımı

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

Sertan Kolat

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Atılım Üniversitesi Bilgi & Đletişim Teknolojileri Müdürlüğü Sistem Yönetim Uzman Yardımcısı Görev Tanımı

1C:İŞLETME Platformu ÜRETİM - TİCARET - MUHASEBE

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

HATAY KHB BILGI İŞLEM BİRİMİ

EXCHANGE RAPORLAMA YAZILIMI ESASLARI

HP kimlik doğrulamalı baskı çözümleri

Windows Server 2012 Active Directory Kurulumu

Kurumsal Kimlik Yönetimi ve Güçlü Kimlik Doğrulama. Yılmaz Çankaya

İNTERNET PROGRAMCILIĞI - II

Veritabanı Uygulamaları Tasarımı

Tanımı Problemi 46 Şüpheci Yaklaşım 47 Tamsayı Taşması (Integer Overflow) 47 Tamsayı Taşması Java Uygulaması 48

Internet Programming I. Hafta I. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat

Üst Düzey Programlama

Erişim Makina. IFS Admin Kullanım Klavuzu. Umut Aytaç Mutlu

Veri Tabanı Yönetim Sistemleri Bölüm - 3

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

VERİ TABANI YÖNETİM SİSTEMLERİ

BİLİŞİM SİSTEMLERİ GÜVENLİĞİNDE YENİ EĞİLİMLER

VPN NEDIR? NASıL KULLANıLıR?

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

AHTAPOT Merkezi Güvenlik Duvarı Yönetim Sistemi Kontrol Paneli

Ayni sistem(host) üzerinde IPC. Ağ(network) aracılığı ile IPC

İş Sürekliliği Ve Güvenliği

Bilgi Güvenliği Yönetim Sistemi

ĐSTEMCĐ SUNUCU SĐSTEMLER DERSĐ FĐNAL ÇALIŞMASI SORULAR YANITLAR

LDAP VE WORDPRESS İLE

Sızma Testlerinde İleri Düzey Teknikler. Ozan UÇAR

FortiMail Gateway Modunda Kurulum. v4.00-build /08

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

2 Temel Kavramlar (Devam) Veritabanı 1

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

Her Yönüyle SQL Enjeksiyonu. OWASP-Türkiye Bünyamin Demir

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

Veritabanı Tasarımı. Veritabanı Hareketleri

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

IIS Kurulu Uygulama Sunumcu ile Veritabanı Arasındaki Bağlantının Güvenlik Esasları

İNTERNET PROGRAMCILIĞI DERSİ

Php Programlama Dili MySQL Uygulamaları

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

Transkript:

Yetkilendirme Amaç İzin verilen işlemlerin yetki derecelerine uygun olarak sadece yetkili kullanıcılar tarafından gerçekleştirilebilmesini sağlamak Korunan kaynaklara erişimi, role ve yetki derecesine dayanan kararlar ile kontrol etmek Anonim bir kullanıcı veya sadece kayıtlı bir kullanıcı iken yönetici fonksiyonlarını kullanmak gibi hak yükseltilmesi saldırılarını önlemek. Etkilenen Platformlar Bütün uygulamalar. İlgili COBIT Konuları DS5 Bütün bölümler gözden geçirilmeli. Bu bölüm nerdeyse COBIT in bütün detaylı kontrol amaçlarını kapsar. Minimum hak prensibi Web uygulamaları genellikle, kullanıcılara veritabanı gibi korunan kaynaklar içinde lüzumsuz haklar vererek (mesela tablo düşürmek, bütün tablolarda veri çekmek veya xp_cmdshell() gibi yüksek haklı depolanmış prosedürlere izin vermek gibi), web uygulama altyapısını yüksek haklara sahip sistem hesapları ile çalıştırarak (LocalSystem veya root gibi) veya yönetilen ortamlarda (managed environments) hapishanelerinin (sandbox) dışında mutlak haklar (Java daki AllPermission veya.net teki FullTrust gibi) ile koşan kodlar yazarak haddinden fazla haklar ile çalışır. Başka bir problem bulunduğunda, haddinden fazla verilmiş haklar saldırgana sistemi veya yakınındaki başka bir sistemi daha kapsamlı ele geçirmesine yol açar. Web uygulamalarının mümkün olan en düşük haklarla çalışması gerektiğinin önemi hiç bir zaman yeterli bir şekilde belirtilemez.

Sistem seviyesi hesapları mümkün olduğunca düşük olmalıdırlar. Administrator, root, sa, sysman, Supervisor, veya başka bir diğer yüksek haklı hesap uygulamayı çalıştırmamalı, web sunucusuna, veritabanına veya orta katman ekipmanına (middleware) bağlanmamalıdır. Kullanıcı hesapları uygulama içinde kendilerine atanan görevleri yapmak için en düşük haklara sahip olmalıdırlar. Kullanıcılar yönetici olmamalıdırlar. Kullanıcılar yetkilendirilmemiş veya yönetimsel hiç bir fonksiyonu kullanamamalıdırlar. Geliştirme, test ve geçiş ortamları mümkün olabilecek en düşük yetki seviyesi ile çalışır şekilde oluşturulmalıdır ki, uygulama üretim ortamında da mümkün olabilecek en düşük yetki seviyesi ile çalışsın. (Çevresel sistemleri koşan) Sistem seviyesi hesapları olabilecek en düşük yetki seviyede olmalıdır. Administrator, root, sa, sysman, Supervisor, veya başka bir diğer yüksek haklı hesap uygulamayı çalıştırmamalı, web sunucusuna, veritabanına veya orta katman ekipmanına (middleware) bağlanmamalıdır. User accounts should possess just enough privileges within the application to do their assigned tasks Kullanıcı hesapları uygulama içinde kendilerine atanan görevleri yapmak için en düşük haklara sahip olmalıdırlar. Users should not be administrators and vice versa Ne kullanıcılar yönetici olmalı ne de tam tersi Users should not be able to use any unauthorized or administrative functions. See the authorization section for more details Kullanıcılar yetkilendirilmemiş veya yönetimsel fonksiyonları kullanamamalıdırlar. Daha fazla detay için yetkilendirme bölümüne bakınız. Database access should be through parameterized stored procedures (or similar) to allow all table access to be revoked (ie select, drop, update, insert,

etc) using a low privilege database account. This account should not hold any SQL roles above user (or similar) Veritabanı erişimi bütün tablo erişim haklarının (yani select, drop, update, insert, v.b.) kaldırılması için düşük haklara sahip bir veritabanı kullanıcısı kullanılarak depolanmış prosedürler yolu ile sağlanmalıdır. Kod erişim güvenliği değerlendirilmeli ve uygulanmalıdır. Sadece DNS isimlerine bakmanız gerekirse, kod erişimine sadece bunu yapabilmek için başvurursunuz. Bu şekilde eğer kod /etc/password e ulaşmaya çalışırsa, erişemez ve sonlandırılır. Altyapı hesapları LOCAL SERVICE veya nobody kullanıcıları gibi düşük haklara sahip kullanıcılar olmalıdırlar. Ancak, eğer kod bu kullanıcılar ile koşarsa, krallığın anahtarı (keys to the kingdom) problemi yeniden gün yüzüne çıkar. Eğer ne yaptığınızı biliyorsanız, düşük seviyeli kullanıcılar oluşturup ve bölümlendirme için LOCAL SERVICE veya nobody gibi düşük haklı hesapların özniteliklerinin (attributes) dikkatli replikasyonu LOCAL SERVICE veya nobody paylaşmaktan daha iyidir. Erişim Kontrol Listeleri Bir çok erişim kontrolü kutudan güvensiz çıkar. Mesela, varsayılı Java 2 dosya sistemi politikası çoğunlukla uygulamalar tarafından gereksinim duyulmayan All Permission dur. grant codebase "file:${{java.ext.dirs}}/*" { }; permission java.security.allpermission; Uygulamalar gereksinim duydukları minimum hakları uygulamalar ve mümkün olan en sıkı hakları zorunlu kılacak erişim kontrol listelerini oluşturmalıdırlar.

Herhangi bir dosya, network, kullanıcı veya başka bir sistem seviyesi erişim kontrolünün gerektiğinden fazla olduğunu bulmaya çalışın Kullanıcıların minimal sayıda gruba veya rollere üye olup olmadığını bulmaya çalışın Rollerin minimal haklara sahip olup olmadığını bulmaya çalışın Uygulamanın bir politika dosyası veya zararsız mod konfigürasyonu yolu ile minimuma indirgenmiş haklarla çalışıp çalışmadığını bulmaya çalışın Düşünülmesi gereken erişim kontroller: Erişim kontrol listelerine her zaman hepsini reddet ile başlayın, ve sonra gerekli oldukça rolleri ve hakları ekleyin Network erişim kontrolleri: güvenlik duvarları ve host tabanlı filtreler Dosya sistemi erişim kontrolleri: dosya ve dizin hakları Kullanıcı erişim kontrolleri: kullanıcı ve grup platformu güvenliği Java /.NET / PHP erişim kontrolleri: Her zaman bir Java 2 güvenlik politikası olmasını veya programsal olarak veya assembly izinleri ile.net te Kod Erişim güvenliğinin uygulandığını sağlayın. PHP de dosya sistemi erişimini kısıtlamak için open_basedir direktifini içerecek şekilde safe mode özelliğini kullanmayı göz önünde bulundurun. Veri erişim kontrolleri: sadece depolanmış prosedürleri kullanın ki, veritabanı kullanıcılarına verilen bir çok hakkı düşürebilesiniz SQL enjeksiyonunu engeller. Platformunuzu sonuna kadar (bütün güvenlik özellikleri ile) kullanmaya çalışın: Bir çok Unix tarzı işletim sisteminde erişim kontrol listelerini içeren trusted computing base eklentileri vardır. Windows ise bu tür eklentilerle kurulur. Bunları kullanın. Özel yapım yetkilendirme kontrolleri Bir çok belli başlı uygulama çatıları iyi geliştirilmiş yetkilendirme mekanizmaları içerirler (Mesela Java nın JAAS ı veya.net in web.config de bulunan dahili yetkilendirme kabiliyetleri).

Ancak, bit çok web uygulamaları özel yapım yetkilendirme kodu içerir. Bu karmaşıklığı ve hataları arttırır. Eğer bu özellikleri kullanmamak için bir nedeniniz yoksa, kodunuz bu çatıların verdiği desteği kullanmalıdır. Kodunuz çatıların size sağladığı dahili yetkilendirme kabiliyetlerini kullanıyor mu? Uygulama çatıların size sağladığı dahili yetkilendirme kabiliyetlerini kullanırsa daha basite indirgenebilir mi? Eğer özel yapım kod kullanılıyorsa, pozitif yetkilendirme ve hata durumlarını düşünün bir kullanıcı hata oluştuğunda yetkilendirilmiş olabilir mi? Özel yapım yetkilendirme kontrolleri ile ne kadar kapsayıcı olabiliniyor? Bu mekanizma ile bütün kaynaklar ve kod korunabiliyor mu? Uygulamalarda her zaman az kod yazmayı tercih edin, özellikle kullanıdığınız çatı yüksek kaliteli alternatifler önerebiliyorsa. Eğer özel yapım kod gereksiniminiz varsa, pozitif yetkilendirme ve hata durumlarını düşünün bir hata oluştuğunda, kullanıcının çıkmaya zorlanmasını veya en azından istenen kaynağa veya fonksiyona erişiminin engellemesini sağlayın. Varsayılı olarak kapsamın %100 e yaklaşmasını sağlayın. Merkezi yetkilendirme rutinleri Yaygın olarak yapılan bir hata, bir erişim kontrolünü bir yetkilendirme kod parçacığını kopyalayıp, yapıştırmak veya daha da kötüsü yeniden yazmaktır. İyi yazılan uygulamalar erişim kontrol rutinlerini merkezileştirirler, ki bir hata bulunduğunda tek bir yerde düzeltilirler ve heryere uygulanırlar. Bu saldırıya açık olan uygulamalar kodu her yerinde yetkilendirme kodu olan uygulamalardır.

Yetkilendirme kontrollerini içeren bir kütüphane oluşturun Bir veya daha fazla yetkilendirme kontrollerini çağırmayı standard hale getirin Yetkilendirme matrisi Erişim kontrolü olan uygulamalar kullanıcıların bir sayfayı görüp göremeyeceğini veya kullanıcıların bir aksiyon gerçekleştirmeden önce buna hakkı olup olmadığını kontrol etmeliler. Aşağıdakileri kontrol edin: Bütün anonim olmayan girdi noktaları erişim kontrollerine sahip midir? Kontroller, aktivite üzerinde mi yoksa üstünde bir yerlerde mi? Çatının dahili yetkilendirme kontrollerini kullanın veya merkezi bir yetkilendirme kontrolüne yapılan bir çağırıyı aksiyonun en üstüne koyun. İstemci taraflı yetkilendirme parçaları (tokens) Bir çok web uygulama geliştiricisi oturum deposunu kullanmaktadırlar ki bu erişim kontrol ve gizlilik konularında yanlıştır. Bu nedenle istemci durumunu ya cookielerde, (http) başlıklarında veya gizli form alanlarında tutmaya başladılar. Uygulamanızı aşağıdakilere göre kontrol edin: İstemci taraflı yetkilendirme veya başlıklarda yetkilendirme parçacıklarını cookielerde, gizli alan formlarda veya URL argumanlarında kullanmayın. Herhangi bir istemci taraflı yetkilendirmeye veya yetkilendirme paçacıklarına (genelde eski kodlarda bulunurlar) güvenmeyin. Eğer uygulamanız IBM in Tivoli Access Manager, Netegrity in SiteMinder veya RSA in ClearTrust gibi SSO (tek giriş) ajanı kullanıyorsa, uygulamanızın sadece tokenları kabul etmeyip aynı zamanda denetlediğini ve bu tokenların son kullanıcıya hiç bir şekilde (başlık, cookie, gizli alanlar) görünür olmadığından emin olun. Eğer bu tokenlar son kullanıcılara gürünür şekildeyse, bütün içeriğin kriptoğrafik olarak güvenli olduğundan emin olun.

Uygulamanız bir kullanıcının kimliğinden emin olduğunda, oturum durumunu bir oturum ID ile bağdaştırın. Mesela, kullanıcı giriş yapar yapmaz, yetkilendirme derecesi ile alakalı bir bayrağı oturum nesnesinde bulunur. Java if ( authenticated ) { }.NET (C#) if ( authenticated ) { } PHP if ( authenticated ) { $_SESSION[ authlevel ] = X_USER; // X_USER başka bir yerde yetkilendirilmiş kullanıcı anlamında tanımlanmıştır } Uygulamanızı aşağıdakilere gore control edin; Başlıklarda, cookielerde, gizli form alanlarında veya URL parametrelerinde hiç bir istemci taraflı kimlik doğrulama veya yetkilendirme tokenları kullanmayın. Hiç bir istemci taraflı kimlik doğrulama veya yetkilendirme tokenlarına (genellikle eski uygulamalarda görülür) güvenmeyin. Eğer uygulamanız IBM in Tivoli Access Manager, Netegrity in SiteMinder veya RSA in ClearTrust gibi SSO (tek giriş) ajanı kullanıyorsa, uygulamanızın sadece tokenları kabul etmeyip aynı zamanda denetlediğini ve bu tokenların son kullanıcıya hiç bir şekilde (başlık, cookie, gizli alanlar) görünür olmadığından emin olun. Eğer bu tokenlar son kullanıcılara gürünür şekildeyse, bütün içeriğin kriptoğrafik olarak güvenli olduğundan emin olun.

Korunan kaynaklara erişimi control etme Bir çok uygulama kullanıcıların belli aksiyonları gerçekleştirip gerçekleştiremediklerini kontrol ederler, ama bundan sonra istediğini kaynağa erişimi kontrol etmezler. Mesela, forum yazılımı bir önceki mesaja cevap yazıp yazamayacağınızı kontrol eder ama istenilen mesajın korunan bir alanda mı veya gizli bir forumda mı olacağını kontrol etmez. Veya bir Internet bankacılığı uygulaması parayı transfer edip edemeyeceğinizi kontrol eder ama hangi hesaptan kısmındaki hesabın sizing olup olmadığını kontrol etmez. Uygulama kendisinden istenen bütün kaynakların kullanıcı tarafından erişilip erişilmediğini kontrol ediyor mu? Dinamik sql sorguları gibi, kaynakları direk kullanan kodlar çoğunlukla model-view-controller gibi paradigmaları kullanan kodlara nazaran daha fazla risk altındadırlar. Bunun nedeni, model korunan kaynaklara erişimde kapı görevi görecek doğru noktadır ancak dinamik SQL sorguları kaynaklar hakkında genellikle yanlış kabullenmeler yaparlar. Korunan kaynaklara doğrudan erişmek yerine bir model kodu kullanın. Model kodun giriş yapmış kullanıcının kaynağa erişim hakkını kontrol etmesini sağlayın. Kaynağa erişimi sorgulayan kodun yeterli hata yönetimine sahip olduğunu sağlayın ve iznin her zaman verileceğini öngörmeyin. Statik kaynaklara erişimi korumak Bazı uygulamalar statik içerik (mesela bir işlem raporunun PDF formatı) üretirler ve altta çalışan web sunucunun bu dosyalara erişimi için sorumlu olmasına izin verirler. Çoğunlukla bu gizli bir raporun yetkilendirilmemiş erişime açık olacağı anlamına gelir.

Uygulamanız statik içerik üretiyor veya statik içeriğe erişime izin veriyor mu? Statik içerik erişimi giriş yapmış kullanıcı kullanılarak mı yapılıyor? Eğer yapılmıyorsa, anonim bir kullanıcı korunan dokümana erişebiliyor mu? En iyi yöntem statik içeriği gerektiği anda oluşturun ve web sunucunun dosya sistemine kaydetmektense direk tarayıcıya yollayın. Eğer statik hassas içeriği koruyorsanız, anonim erişimi engellemek için yetkilendirme kontrollerini gerçekleyin. Eğer diske kaydetmeniz gerekiyorsa (önerilmez), rasgele dosya isimleri (mesela bir GUID) kullanın ve geçici dosyaları düzenli olarak silin. İleri Okuma ASP.NET yetkilendirme: http://msdn.microsoft.com/library/default.asp?url=/library/enus/cpguide/html/cpconaspnetauthorization.asp Dökümanın Aslı : OWASP GUIDE 2.0.1 Çeviri : Bedirhan Urgun - urgunb@hotmail.com