TEKNOLOJİ /// Yunus ÇADIRCI (TÜRKSAT A.Ş.) : Dış Kaynaklı Uygulamaların Güvenliği

Yunus ÇADIRCI, TÜRKSAT A.Ş.

Günümüzde işletmelerin bilgi işlem altyapıları olmaksızın işlerini yürütmeleri kendine ancak geçmişte kalan anılarda yer bulabilmektedir. Bu altyapıyı yazılım ve donanım olarak ele alırsak, donanımın teminine paralel olarak bu donanım üzerinde çalıştırılacak yazılımların temini önem kazanmaktadır.

İşletmelerin yazılım temini için üç yol vardır.

İç Geliştirme

İşletmenin kendi yazılım ekibi bulunur. İş birimlerinin belirlediği süreçler bu ekip tarafından uygun kodlama yöntemleri ile yazılıma dönüştürülür. Bu yöntem ancak bankacılık, telekomünikasyon, perakende gibi personel sayısı yüksek ve iç yazılım ekibinin maliyetini karşılayacak işletmeler tarafından veya özel yazılım ihtiyacı minimum düzeyde olan küçük ve orta boyutlu işletmeler tarafından uygulanabilmektedir.

Paket Yazılım

İş birimlerinin ihtiyaçlarını karşılayan ürünler araştırılır ve işletmenin süreçlerine göre bu ürünlerden birisi tercih edilir. Bu ürünler üzerinde genelde yapılandırma değişiklikleri ile yetinilir.

Dış Kaynak Kullanımı

İş birimleri tarafından belirtilen gereksinimler bir sözleşme vasıtasıyla üçüncü taraf firmalar tarafından geliştirilir. Bu yöntem daha çok iç geliştirme ekibi kuramayan veya piyasada bulunan paket yazılımların ihtiyacını karşılamadığı işletmeler tarafından tercih edilir.

Şekil 1: Uygulama temin yöntemlerinin karşılaştırılması

Uygulama Güvenliği

İşletmelerin süreçlerini uygulamalar üzerinden yürütmelerinden dolayı saldırganlar saldırılarını bu alana yoğunlaştırmışlardır. Gartner tarafından yapılan bir analize göre işletmelerin %80’inin uygulamalarda bulunan zafiyetler nedeniyle bir güvenlik olayı ile karşılaşacağı, NIST tarafından yapılan başka bir araştırmada ise istismar edilebilen güvenlik açıklarının %92’sinin uygulamalarda bulunduğu belirtilmiştir. Bu nedenle uygulama güvenliğinin göz ardı edilmesi mümkün değildir.

İşletmeler, sadece kendi ekipleri tarafından geliştirilen değil dışarından temin ettikleri uygulamaların da güvenliğinden emin olmak zorundadırlar. İç geliştirme yaparken ihtiyaç belirlemeden son kabule kadar tüm süreç işletme içinde kontrol altındadır. Buna karşın dış kaynaklı uygulamalar için proje maliyeti ve süresini etkilemeden bu güvencenin nasıl sağlanacağı proje boyutu ile paralel bir şekilde oldukça karmaşık olabilmektedir.

Şekil 2: Güvenlik birimi, iş ihtiyaçlarının belirlenmesi aşamasından başlayarak uygulama temin sürecine dâhil olmalıdır.

Bu problemin çözümü için işletmenin hangi aşamalarda nelere dikkat etmesi gerektiğine birlikte bakalım:

Şartname Hazırlama

İşletmelerin ihtiyaçlarını farklı olması, uymakla yükümlü oldukları kanun ve regülasyonların değişebilmesi nedeniyle uygulama temininde şartnamelere farklı maddelerin eklenmesi gerekebilmektedir. Bu aşamada işletmeler kendi ihtiyaçlarına göre şartnamelerine uygun maddeleri eklemelidirler.

Temel Güvenlik Listesi

Şartnamelerde belirtilmesi gereken en önemli husus neyin güvenlik açığı olduğu, neyin olmadığı konusudur. Muğlak ifadeler, uygulama geliştirici firmanın kaynak ve işgücü planlamasını ve kabul sürecindeki test senaryolarının oluşturulmasını zorlaştıracağı gibi, sadece SQL Enjeksiyonu gibi bilinen zafiyetlerin yazılması da uygulamayı mantıksal ve karmaşık saldırılara açık hale getirebilecektir.

Bu bağlamda OWASP Top 10 (https://www.owasp.org/index.php/Top_10_2013-Top_10) ve CWE/SANS Top 25 Most Dangerous Software Errors (http://cwe.mitre.org/top25/ ) listeleri temel güvenlik listeleri olarak kullanılabilir. CWE/SANS listesi sadece web tabanlı değil bunun yanı sıra masa üstü uygulamalarını da kapsadığı için daha geniş bir kapsama sahiptir.

Test Sürecinin Tanımlanması

Şartname, uygulamanın hangi güvenlik testlerinden geçirilmesi gerektiğini ve bu testlerdeki bulgulara göre yapılacak işlemleri kapsamalıdır. Özellikle kara kutu testleri gerçekleştirirken bu süreçte uygulama geliştirici firmanın ilgili testlere destek olması gerekebilir. Firmanın bu desteği nasıl sağlayacağı açıkça tanımlanmalıdır.

Kaynak kod analizi, test sürecinin tanımlanmasında önemli bir yer tutmaktadır. Uygulama geliştirici firma yapılan anlaşmaya göre kaynak kodun mülkiyetini kendisinde tutabilir. Bu durumda kaynak kod analizinin yapılabilmesi için geçici bir erişim (kaynak kod geliştirici firmada iken analiz aracının geliştirici firma ortamında çalıştırılması) veya üçüncü taraf bir güvenlik firmasının bu işlemi nasıl yapacağı açıkça belirtilmelidir.

Test sürecinde işletmenin kullanacağı bir kontrol listesi var ise bu listenin şartnamede veya şartnamenin ekinde sunulması uygulama geliştirici firmanın daha geliştirme aşamasında bu testleri kendisinin yapabilmesine olanak tanır ve projenin test sonucunda bulunabilecek olası zafiyetler için uzamasının önüne geçilebilir.

Kullanıcı Yönetimi

İşletme tarafından kullanılan bir kullanıcı yönetim sistemi mevcut ise uygulamanın bu sistem ile entegrasyonu nasıl sağlayacağı belirtilmelidir. Uygulama kendi kullanıcı yönetim sistemini kullanacak ise parola politikası, hesap kapatma süreci, hatalı girişler sonucu hesap kilitlenmesi gibi alınacak önlemler şartnamede tanımlanmalıdır. İşletmenin IS0 27001 gibi bir Bilgi Güvenliği Yönetim Sistemi mevcut ise burada belirtilen kuralların ilgili BGYS ile uyumlu olması gerekmektedir.

Entegrasyon Güvenliği

Günümüzde uygulamalar, işletmelerin birbirleriyle ilişkileri ve farklı birimleri tarafından kullanılan yazılımların veri paylaşım ihtiyaçları nedeniyle bir çok entegrasyon noktasına sahiptir. Şartnamede bu entegrasyon noktalarının sahip olması gereken güvenlik standartları eksiksiz olarak tanımlanmalıdır. Web servisleri gibi entegrasyon noktalarının kimlik doğrulaması, veri filtrelemesi gibi güvenlik kontrollerine sahip olup olmadığı kontrol edilmelidir.

Güvenlik Dokümantasyonu

Uygulamanın devreye alınmadan önce testlerinin yapılabilmesi ve sonrasında operasyon ekipleri tarafından güvenli bir şekilde işletilebilmesi için dokümantasyonunun eksiksiz olması gerekmektedir. Bu dokümanlar aşağıdaki listeyle sınırlı olmamak kaydıyla şu şekildedir:

Güvenlik Mekanizması: Şartnamede belirtilen ihtiyaçların nasıl karşılandığını belirtir.

Kullanıcı Yönetimi Mekanizması: Kullanıcı yönetiminin nasıl sağlandığı, kimlik doğrulama ve yetkilendirme süreçleri hakkında bilgi verir.

Ön Tanımlı Güvenlik: Uygulamanın çalışması sürecinde güvenli bir şekilde işletimini sağlayacak ön tanımlı değerleri gösterir.

Kritik Veri İçeren Bileşenler: Kişisel veriler, finansal bilgiler, vb. gibi erişilmesi veya değiştirilmesinde işletmeyi büyük risk altına sokacak olan verilerin hangi kod, hangi veri tabanı ve entegrasyon noktasında işlendiğini gösteren dokümanlardır. Bu doküman tehdit modellemesi ve risk analizi süreçleri için oldukça önemlidir.

Kurulum Kılavuzu: Olası bir felaket veya olay durumunda uygulamanın uygulamayı geliştirici firma desteği gerekmeksizin kurulabilmesini ve yamalanması süreçlerini tanımlayan dokümanlardır.

Girdi Değerleri: Kara kutu veya dinamik analiz güvenlik testleri gerçekleştirilirken kullanılacak girdileri belirten dokümanlardır. Özellikle bir ekran/modülden diğerine bilgi aktarılan uygulamalarda geçerli bir girdi olmadan diğer ekrana ulaşılamayacağı için bu değerler olmadan testler eksik yürütülecektir.

Güvenlik Testleri

Güvenlik testleri uygulamanın devreye alınma kararı verilmesinde önemli girdilerden birisidir.

Test Zamanı

Güvenlik testleri kesinlikle üretim ortamına alınmadan önce, ön üretim (pre-production) ortamında yapılması ve çalışacağı ortama ilişkin gerçek verilere eşdeğer veriler içermesi etkinliği için oldukça önem arz etmektedir.

Test Ekibi

Testlerin gerçekleştirilmesinde; işletme bünyesinde çalışan güvenlik ekipleri veya dış kaynak kullanımı tercih edilebilir. Bu tercihte belirleyici olan unsur uygulama üzerinde test yapacak ekibin yetkinliği ve maliyettir. İşletme bünyesindeki ekibin ilgili uygulama teknolojisi hakkında yeterli bilgisi yok ise testin gerçekçi sonuçlar üretebilmesi için konu hakkında bilgi sahibi üçüncü bir taraftan destek alınabilir. Test; dış kaynak kullanımı ile gerçekleştirildiği durumda işletme bünyesindeki ekibin çalışmaya eşlik etmesi ile işletme bünyesindeki ekibe bilgi birikimi aktarılması sağlanabilir.

Araçlar

Testin doğru sonuç üretebilmesi için ekibin yetkinliği kadar doğru test araçlarının kullanımı da önemlidir.

Kara kutu test araçları kullanılırken en önemli husus dokümantasyon başlığında değinilen geçerli girdi parametrelerinin yapılandırılmasıdır. Bu parametreler araçlara tanıtılmadan uygulamanın araç tarafından tüm bileşenlerine erişilerek (crawl) test edilmesi sağlanamaz.

Kara kutu testlerinde bir diğer husus da CAPTCHA gibi otomatik araçların çalışmasını engelleyecek bileşenlerin test sürecinde devre dışı bırakılması veya hep aynı değeri üretecek şekilde yapılandırılmasıdır.

Kaynak kod analizi için uygulama geliştirici uygun araçlar ile bu işlem gerçekleştirilmelidir. Aracın sadece kod yazılımını değil veri akışını (data flow) da takip edebilmesi ve kullanılan çözüm önerilerini algılayabilmesi testin başarısı ve hatalı bulgu oranını azaltması açısından önemlidir.

Kaynak kod testinde eğer açık kaynaklı veya üçüncü taraflar tarafından geliştirilmiş bileşenler kullanılmış ise bunların derlenmiş kütüphaneleri yerine kaynak kod hallerinin eklenmesi bu bileşenlerden kaynaklanan açıklıkların tespitine olanak sağlayacaktır.

Kontrol Listesi

Her ne kadar araçlar testlerin büyük kısmını gerçekleştirebilseler de özellikle yetkilendirme gibi konularda mantıksal zafiyetlerin tespitini yapamamaktadırlar. Yetki denetimleri, kimlik doğrulama, parola yenileme, CAPTCHA etkinliği, kritik bilgi sızması gibi testler için bir kontrol listesinin bulunması bu alanlardaki zafiyetlerin gözden kaçmasını engelleyecektir. Bu kontroller ile test süreci zafiyet değerlendirmesinden sızma testine dönüştürülmüş olur.

Raporlama

Test sürecinde tespit edilen zafiyetler uygulamanın sahibi olan birim ile paylaşılmalıdır. Bu süreçte yapılan hatalardan birisi uygulamanın sahibi olan iş biriminin haberi olmadan raporun sadece uygulama geliştirici ekip ile paylaşılmasıdır. Raporun iş birimi tarafından değerlendirilmesi ve risk analizi sonucu proje sürecinin değerlendirilmesi gerekmektedir.

Güvenlik ekibi bu aşamada zafiyetlerin giderilmesi sürecinde iş birimine danışmanlık yapar ve varsa geliştirici ekibin sorularını cevaplar. İş birimi ve uygulama geliştirici ekibin mutabakatı ile tekrar testini planlar ve gerçekleştirir.

Destek Süreci

Uygulama, iş birimleri tarafından kullanıldığı sürece uygulamanın güvenliğini sürekli olarak sağlamak gereklidir. Gerek planlı testler ile gerekse de çalışanlar veya dışarıdan gelen bildirimler ile çeşitli zafiyetler tespit edilebilir.

Zafiyet Giderme

Destek sürecinde tespit edilen zafiyetlerin şartnamede belirtilen süreler içerisinde giderilmesi gerekmektedir. Burada operasyonel kolaylık açısından zafiyet giderme ile hata giderme süreçlerinin eşdeğer yapılması tercih edilebilir. Böylelikle hata tipinden bağımsız yönetilebilen tek bir süreç elde edilir.

Sıkılaştırma

Tespit edilen zafiyetlerin uygulamadan kaldırılması uzun zaman alabildiği durumlarda uygulamanın zafiyetler nedeniyle saldırılardan etkilenmemesi için sıkılaştırma önlemleri alınmalıdır. Bu işlem için uygulama sunucusu üzerindeki modül, işletim sistemi ve veri tabanı sıkılaştırmaları yapılabileceği, erişim kontrolleri uygulanabileceği gibi aktif önlem olarak web uygulama / XML güvenlik duvarları da kullanılabilir.

Karne

Geliştirici firmanın destek sürecinde zafiyetleri giderme süreciyle ilgili bir karne düzenlenmelidir. Bu karne ile firmanın zafiyet gidermedeki yetkinliği ve şartnamede tanımlanan hizmet sürelerine uyup uymadığı görülebilir. Bu karne, işletmenin yapacağı diğer uygulama teminlerinde ilgili firma ile çalışılma sürecinde faydalı olacaktır.

Sonuç

İşletmeler en az kendi geliştirdikleri uygulamalar kadar dışarıdan temin ettikleri uygulamaların güvenliğinden de emin olmak durumundadırlar. Bu uygulamalar işletmenin korunması gereken varlığı haline gelir ve içerideki diğer varlıklar ile birlikte çalışırlar.

Uygulamaların güvenliğini sağlamak geniş atak yüzeyleri nedeniyle devamlı dikkat isteyen bir konudur. Kara kutu testleri ve statik kod analizleri bize bu alanda kolaylık sağlasa da entegrasyon noktaları ve mantıksal hatalar yeni atak noktaları oluşturmaktadır. Bu da uçtan uca tüm süreçleri kapsayan bir güvenlik yönetimi ihtiyacı doğurmaktadır.

Reklamlar

Etiketlendi:, ,

Bir Cevap Yazın

Please log in using one of these methods to post your comment:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

YÜKSEK STRATEJİ

strateji, istihbarat, güvenlik, politika, jeo-politik, mizah, terör, araştırma, teknoloji

%d blogcu bunu beğendi: