Uygulama Güvenliği Nedir?

Yazılım Güvenliğini Sağlamaya Yönelik Süreçler ve Araçlar

Tehditler daha etkili ve yaygın hale geldikçe, uygulamalarınızdaki güvenlik açıklarını kontrol altına almak her zamankinden çok daha önemli.

Uygulama Güvenliği: Uygulamaların güvenliğini sorgulayarak, iyileştirerek ve geliştirerek uygulamaları daha güvenli bir hale getirme sürecidir. Bunların çoğu geliştirme aşamasında olur, ancak uygulamaları production ortamına aldıktan sonra da koruma altına almak gerekir. Son yıllarda bilgisayar korsanları uygulamaları giderek daha fazla hedef aldıklarından dolayı bu konu çok daha önemli bir hale geldi.

Uygulama güvenliği pörtföyünü hedefleyen yüzlerce araç var. Hatta mobil uygulamar, network özelinde uygulamalar ve web uygulama düzeyinde firewall’lar bile var.

Uygulama Güvenliği Neden Önemlidir?

Veracode’s State of Software Security Vol. 10 raporuna göre test edilen 85.000 uygulamanın %83’ünde en az 1 güvenlik açığı olduğu raporlandı. Toplamda 10 milyon açık bulunan çalışmada, uygulamaların %20’sinde en az 1 kritik seviyede zafiyet olduğu paylaşıldı.

Uygulama geliştirme ortamınıza entegre olan uygulama güvenliği araçları, bu süreçleri ve iş akışını daha basit ve daha etkili hale getirebilir. Bu araçlar, uyumluluk denetimleri süreçlerinde zafiyetleri erken aşamalarda yakalayarak zamandan ve masraftan tasarruf sağlarlar.

Bir uygulamayı her gün, bazı durumlarda saatlik olarak iyileştiren sürekli dağıtım ve sürekli entegrasyon adı verilen yeni çalışma yöntemlerimiz var. Güvenlik araçlarının sürekli değiştiği ve hızlı üretimi hedeflediğimiz günümüz çalışma ortamında kodla ilgili sorunların hızlı bir şekilde bulunması gerekmektedir.

Gartner, report on the app security hype cycle raporunda, IT yöneticilerinin yaygın uygulama geliştirme güvenlik hataları ve saldırı tekniklerine karşı koruma yöntemlerinin ötesine geçilmesi gerektiğini vurguladı.

Çözümler ve dolayısıyla market evrildikçe, tehditlerin de daha compleks, tespit edilmesi daha zor ve verdikleri zarar bakımından daha şiddetli hale geldiğini görüyoruz.

En Yaygın Uygulama Zafiyetleri

Yazılım güvenlik açıklarından haberdar olmanın en kolay yolu, MITRE’nin yıllık CWE –Common Weakness Enumeration- listesini takip etmektir.

Aşağıda Mitre’nin Top 10 CWE listesi ilgili puanları ile birlikte paylaşılmıştır:

  • Cross-site scripting (46.82)
  • Out-of-bounds write (46.17)
  • Improper input validation (33.47)
  • Out-of-bounds read (26.5)
  • Improper restriction of operations within the bounds of a memory buffer (23.73)
  • SQL injection (20.69)
  • Exposure of sensitive information to an unauthorized actor (19.16)
  • Use after free (18.87)
  • Cross-site reques forgery (CSRF) (17.29)
  • OS command injection (16.44)

Uygulama Güvenliği Araçları

Her ne kadar sayısız uygulama güvenliği aracından bahsedebiliyor olsak da aslında bu araçları 2 ana kategoride toplamak mümkün;

1. Güvenlik Testi Araçları

Bu araçlar, Gartner’ın Magic Quadrant’ını yarattığı ve önemlerini ve başarılarını sınıflandırdığı için yaygın olarak bilinirler.

Gartner, güvenlik testi araçlarını birkaç geniş küme halinde sınıflandırır ve bunlar, uygulama portföyünüzü korumak için neye ihtiyacınız olduğuna nasıl karar vereceğiniz konusunda oldukça yararlıdır:

  • Statik Test: Kod geliştirme sürecinde kodu analiz eder. Bu, geliştiricilerin, geliştirme sırasında güvenlik sorunlarının ortaya çıkmasını sağlamak için kodlarını yazarken kontrol etmeleri açısından yararlıdır.
  • Dinamik Test: Çalışan / compile edilebilen kodu analiz eder. Bu, üretim sistemlerine yapılan saldırıları simüle edebildiğinden ve bir sistem kombinasyonu kullanan daha karmaşık saldırı modellerini ortaya çıkarabildiğinden dolayı daha kullanışlıdır ancak DevOps süreçlerinde daha geç evrelerde sürece dahil olur.
  • Interaktif Test: Hem statik hem dinamik testin öğelerini birleştirir.
  • Mobil Test: Mobil ortamlar için özel olarak tasarlanmıştır ve bir saldırganın mobil işletim sistemini ve bunların üzerinde çalışan uygulamaları bir bütün olarak nasıl kullanabileceğini inceleyebilir.
2. Uygulama Güvenliği Araçları

Bu araçların temel amacı, saldırıların gerçekleştirilmesini daha zor hale getirmek için uygulamayı güçlendirmektir. Burada, çoğu durumda sınırlı bir geçmişe ve müşteri tabanına sahip olan, daha küçük, önemli ürünlerden oluşan geniş bir koleksiyon bulacaksınız. Bu ürünlerin amacı uygulamalarınızın çevirim içi kalmasını ve tehlikeye düşmesini aktif olarak önlemektir. Birkaç farklı geniş kategoride ele alınabilir:

  • RASP (Runtime Application Self-Protection): Bu araçlar, test etme ve korumanın bir kombinasyonu olarak düşünülebilir. Olası tersine mühendislik saldırılarına karşı koruma sağlarlar. RASP araçları, özellikle uygulamaların yeniden yazılabildiği, root telefonda çalıştırılabildiği veya onları kötü şeyler yapmaya dönüştürmek için ayrıcalık suistimaline sahip olduğu mobil ortamlarda uygulamanın davranışını sürekli olarak izlerler. RASP araçları, uyarılar gönderebilir, hatalı işlemleri sonlandırabilir veya güvenlik ihlalleri olduğunda uygulamanın kendisini sonlandırabilirler.
  • Kod Gizleme (obfuscation): Bilgisayar korsanları, kötü amaçlı yazılımlarını gizlemek için genellikle gizleme yöntemlerini kullanır. Artık araçlar, geliştiricinin kodlarının saldırıya uğramasını önlemeye yardımcı olması için bu işlemi yapmasına olanak tanıyor.
  • Kripto ve Anti-Tampering Araçlar: Bunlar, kötü adamların kodunuzla ilgili içgörü kazanmasını önlemek için kullanılabilecek diğer yöntemlerdir.
  • Tehdit Algılama Araçları: Bu araçlar, uygulamalarınızın çalıştığı ortamı veya ağı inceler ve olası tehditler ve kötüye kullanılan güven ilişkileri hakkında bir değerlendirme yapar. Bazı araçlar, bir cep telefonunun root olup olmadığını veya başka bir şekilde tehlikeye atılıp atılmadığını belirlemek için “fingerprint” sağlayabilir.

Uygulama Güvenliği Zorlukları

  • Uygulama güvenliği pazarına ve trendlerine ayak uydurmak
  • İş ihtiyaçlarını tespit etmek ve gerekli ürünleri mimari gereksinimlere göre uyarlamak ve lisanslamak
  • Kuruluşun SaaS hizmetlerinin nasıl oluşturulduğu ve güvence altına alınması gerektiğine dair yol haritasını hazırlamak
  • Uygulama güvenliği süreçlerinin Yazılım Geliştirme Yaşam Döngüsü’ne ya da DevOps / DevSecOps süreçlerine entegre etmek
  • Tüm bunları yaparken bütçeye sağdık kalmak

Son Sözler

Son yıllarda iş modelimizin değişmesi vesilesiyle uygulamaların daha fazla hedef haline geldiğini görüyoruz. Bunun başlıca sebepleri olarak; uygulamaların güvenlik kriterlerine uygun olarak geliştirilmediği, yazılımcı ihtiyacının karşılanması kapsamında eğitimlerin ve özellikle güvenlik eğitimlerinin sağlanmadığı ve hızlı deploy almak için agile süreçlerin benimsenmesi ve micro mimariler sıralanabilir.

Uygulama güvenliği iş sürdürülebilirliği açısından kritik bir konudur ve profesyonel olarak ele alınmalıdır. Bugün uygulama güvenliğine yatırım yapmanız yarın veri ihlali senaryolarında alacağınız cezai yaptırımlar neticesinde ödeyeceğiniz rakamların yanında devede kulak kalacaktır.

Kaynak

Mehmet Türker
Technical Account Manager & Cyber Security Engineer
Endpoint Bilgi Teknolojileri Güvenliği ArGe A.Ş – 2022
LinkedIn