Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

Application Security (Uygulama Güvenliği)

Uygulama güvenliğinden kastettiğimiz şey aslında yaptığımız exe veya dll in dağıtım aşamasından sonra Reflector tarzı bir program ile açılıp kodlarının incelenip zararlı dll ler ile değiştirilmesini engellemek olarak özetleyebiliriz.
Tahmin ediyorum ki herkes şu şekilde bir uyarı duymuştur ; bilgisayarınıza admin olarak giriş yapmayın. Bunun  söylenmesindeki amaç kendinize güvenmemeniz , hardiskteki bütün bilgileri sileceğinizden dolayı değildir tabi zaten kimse böyle bir şey yapmaz J
Bunun söylenmesinin nedeni kullanmakta olduğunuz uygulamaların bilgisyaarınıza zarar vermesini engellemektir.CAS(Code Access Security) .NET Framework içerisinde bulunan ve uygulamaların izinleri kontrol eden bir yapıdır.
Örneğin CAS ile farklı bir uygulamaya sınırlı erişim yapacağınız zaman registery’e read veya write izni verebilirsiniz.Dosya sistemine , registery’e printerlara veya event loglara rol bazlı güvenlik kriterleri uygulayabilirsiniz.Ancak rol bazlı güvenlik ile internet veya DNS kısıtlaması yapamazsınız.Harici kullandığımız assembly’leri CAS ile kısıtlamaz isek full trusted bir şekilde yönetilemeyen kodlar çalıştırmasına da izin vermiş oluruz ki bu risk unsurları içerebilir.

 

Evidence(Kanıt) : Bir assembly’nin hangi kod grubuna ait olduğunu belirten bir bilgidir.

Permission(İzin) : Spesifik bir aksiyonun assembly tarafından yapılıp yapılamayacağnı belirlemek için kullanılır. Örneğin bir assembly bir kullanıcıya open file dialog veya save file dialog  veya ikisinin bir gösterilmesi. Bu ayarlar .NET Framework Configuration tool’u ile yapılabilir.

 

Örneğin internet varsayılan permission seti file dialog , isolated storage file , security, user interface ve printingi içerir.Local intranet zone ise Environment değerlerini , file dialog , isolated file storage, reflection, security, user interface, DNS ve printing içerir.   

 

Security Policy : Kod gruplarının ve izinlerin mantıksal olarak gruplanmasıdır.

 

//Namespace’e eklenen bu nitelik ile CAS boot.ini dosyasına sadece okuma izni verilmiştir.

[assembly:FileIOPermissionAttribute(SecurityAction.RequestMinimum,Read=@”C:boot.ini”)]

namespace DeclarativeSecurity

{

    classProgram

    {

        staticvoid Main(string[] args)

        {

            //Do Some work

        }

    }

}

CAS sadece partial trusted assembly’ler içindir.Full trust assembly lerde ignore edilir.

 

Bir assembly güvenliğini artırmak için birkaç niteliği o assembly’e uygulayabiliriz. RegisteryPermission,UIPermission,PrintingPermission,FileIOPermission lara SecurityAction.RequestMinimum , SecurityAction.RequestOptioanal, SecurityAction.RequestRefuse şeklinde tanımlamalar yapabiliriz.
Herhangi bir registery keyine erişimi , bir path’i vs kısıtlayabiliriz.

 

Bu kısıtlamaları yapmak güvenli kod yazmak için çok önemlidir. Ayrıca kodu da çok kısa bir nitelik yazmaktan geçiyor. Güvenli kod için Best Practice SecurityAction’ı Optional yapmaktır.

July 11, 2010 - Posted by | C# | , , ,

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s