04 Mayıs 2020

Statik Kod Analizi Nedir?

Statik Kod Analizi Nedir
Statik Kod Analizi Nedir
Statik kod analizi, derlenebilir durumdaki bir uygulama projesinin kaynak kodları incelenerek güvenlik zafiyetlerinin tespit edilmesidir.

Uygulama sızma testleri bağlamında statik kod analizini whitebox testi olarak da değerlendirebiliriz.
Tıpkı dinamik pentestlerde olduğu gibi statik kod analizinde de otomatik araçlar ve manuel yöntemler birlikte kullanılır.

STATİK KOD ANALİZİ ve PENTEST İLİŞKİSİ


Statik kod analizi ve dinamik pentesti birbirlerinin alternatifi olmaktan ziyade birbirlerinin tamamlayıcısı olarak görmek gerekir. Test yöntemi olarak her ikisinin de birbirlerine nazaran avantajları olduğundan,iki test türünün de uygulanması güvenlik seviyesini artıracaktır.

Statik Kod Analizinin Dinamik Penteste Göre Avantajları
Statik Kod Analizi'nin Dinamik Pentest'e Göre Avantajları

Statik kod analizinin dinamik pentest'e göre avantajları şunlardır:
Dinamik pentest sırasında tüm kullanım durumları ve dolayısıyla tüm kod bölümlerinin davranışı gözlenemeyebilir. Bu nedenle dinamik pentestler sırasında bazı açıklıkların gözden kaçırılması olasıdır. Statik kod analiziyle bu eksikliklerin kapatılması imkanı doğabilir.

Dinamik pentest çalışmalarının sağlıklı biçimde yapılabilmesi için uygulamanın tamamlanmış olması ve yeterli test verisinin bulunması gerekmektedir. Statik kod analizinde ise böyle bir ihtiyaç bulunmadığı için statik kod analizleri yazılım geliştirme yaşam döngüsünün daha önceki aşamalarında gerçekleştirilebilir. Bu da açıklıkların daha önce tespit edilebilmesi ve dolayısıyla daha düşük maliyetle bu açıklıkların giderilebilmesine imkan tanır.

Yazılım geliştirme sırasında hemen ortaya çıkmasa bile uzun vadede güvenlik açıklıkları doğurabilecek hatalar yapılabilir. Örneğin kod içinde hardcoded erişim bilgilerinin bulunması, hata doğurabilecek durumlar için hata ele alma kodlarının geliştirilmemiş olması, uygulama kodları içinde hassas bilgileri ifşa edebilecek debug loglama bölümlerinin kalması, kullanıcı parolalarının açık olarak veritabanında saklanması bu tür uygunsuzluklar arasında sayılabilir. Statik kod analizi ile pentest ile tespit edilemeyecek bu tür güvenli yazılım geliştirme uygunsuzlukları tespit edilebilir.

SOURCE (KAYNAK) VE SINK (HEDEF) KAVRAMLARI


Source ve Sink Kavramları
Source ve Sink Kavramları

Bir uygulamaya saldırılabilmesi için ön şart o uygulamaya bir girdi verilebilmesidir. Eğer uygulama bu veriyi işlerken veya hedefine ulaşıncaya kadar herhangi bir validasyon kontrolüne tabi tutulmazsa saldırganın uygulamanın akışını veya hedefe ulaştığı noktadan sonraki süreçleri manipüle etme imkanı doğar. Bahsi edilen açıklıkların ne olabileceği uygulama teknolojilerine bağlıdır. Örneğin bir SQL injection açıklığı kullanıcıdan gelen girdinin kontrol edilmeden veritabanı sorgusu içinde veritabanına kadar ulaşması halinde gerçekleşebilir. Bu durumda source, yani kaynak, web uygulama kullanıcısından gelen bir form parametresi, sink, yani hedef de SQL veritabanı olmaktadır. Sink noktalarına diğer örnekler olarak; kullanıcı browser'ı, dosya sistemi, bir başka sunucunun servisi örnek olarak verilebilir.

Statik kod analizinde kullanılan araçlar uygulamanın veriyi aldığı girdi noktasından ulaştığı hedef noktasına kadar izini sürebilir. Bunu yaparken verinin herhangi bir validasyona tabi tutulmadığını tespit ederse bulgu üreterek test uzmanının işini kolaylaştırmış olur. Elbette bu işlemi manuel olarak da yapmak mümkündür, ancak otomasyon imkanı varsa bunu da kullanmak akıllıca olacaktır.

BTRisk pentest hizmetleri ile ilgili daha fazla bilgi almak ve BTRisk'e ulaşmak için aşağıdaki sayfaları ziyaret edebilirsiniz:
https://www.btrisk.com/hizmetler/pentest-sizma-testi-hizmeti/
https://www.btrisk.com/iletisim/