Bilinmesi Gereken 22 Yaygın Web Uygulaması Güvenlik Açığı

Yayınlanan: 2021-10-14

İşletmeler sürekli olarak "sola kayar" ve bulut tabanlı uygulamaların sunduğu yenilikçi müşteri ve çalışan deneyimlerinden yararlanır. Aynı zamanda, kötü niyetli failler de bu değişime uyacak şekilde saldırı stratejilerini sürekli olarak gözden geçiriyorlar.

Veri gizliliğini ve güvenliğini korumak için işletmelerin bu 22 yaygın web uygulaması güvenlik açığına karşı koruma araması zorunludur.

  1. Hasarlı erişim kontrolü

    Erişim kontrolleri, kullanıcıların kaynaklar ve verilerle nasıl etkileşime girdiğinden ve ayrıca neleri düzenleyebileceklerinden ve/veya okuyabileceklerinden sorumludur. Kullanıcı verileri gerçekten gereksiz bir şekilde kullanabildiğinde hatalı bir erişim denetimi güvenlik açığı mümkündür. Örneğin, kullanıcı yalnızca ödeme ayrıntılarını okuyabiliyorsa, ancak aslında bunları düzenleme yeteneğine sahipse, böyle bir durum, bozuk bir erişim denetimine örnektir. Kötü niyetli saldırganlar, yazılımlara, ağlara ve sistemlere yetkisiz erişim elde etmek için bu güvenlik açığından yararlanır. Daha sonra durumdan yararlanabilir, veri kullanılabilirliğini, gizliliğini veya bütünlüğünü tehlikeye atmak için kullanıcı kimliğine altyapı içinde daha fazla erişim verebilirler.

  1. Hasarlı kimlik doğrulama

    Hasarlı veya bozuk kimlik doğrulamayla ilişkili web uygulaması güvenlik açıkları da kullanıcı erişiminden kaynaklanır. Ancak bu durumda, kötü niyetli saldırganlar, oturum belirteçlerini, anahtarları veya parolaları ele geçirmek gibi bir kullanıcının kimliğini doğrulayan verileri olumsuz etkiler. Kötü niyetli saldırgan, kuruluş yeterli kimlik ve erişim yönetimi denetimlerini düzgün bir şekilde ayarlayamadığından yazılımlara, sistemlere ve ağlara yetkisiz erişim elde eder.

  1. Satır Başı ve Satır Besleme (CRLF) Enjeksiyonu

    Satır başı, tipik olarak /r olarak gösterilen bir kod satırının başlangıcını belirten bir komut görevi görür. Öte yandan satır besleme, tipik olarak /n olarak belirtilen bir kod satırının sonunu belirten bir komuttur. Diğer birçok yazılım gibi, her işletim sistemi de değişen satır başı ve satır besleme kombinasyonlarını kullanır. Kötü niyetli saldırganlar CRLF enjeksiyonlarına dahil olduğunda, girilen kod, web uygulamasının komutlara tepki verme şeklini değiştirir. Bu, hassas verileri ifşa etmek veya kod yürütmek için kullanılabilir.

  1. Şifre dönüşümü güvensiz

    “Şifreleme algoritması” için standart bir terim olan şifre, aslında bir şifreleme veya şifre çözme işleminin arkasındaki matematiktir. Dönüşüm, beklenen çıktıyı sağlamak için girdi üzerinde gerçekleştirilen işlemlerin ana hatlarını ifade eder. Bu nedenle, bir şifre dönüşümü, okunamayan şifreli verileri tekrar okunabilir, şifresi çözülmüş verilere gizleyen işlemlerin sayısını ifade eder. Bir şifre dönüşümü güvensiz güvenlik açığı, şifreleme algoritmasının kolayca kırılabileceğini ve sonuçta ilk aşamada şifrelemenin özünü sabote ettiğini açıklar.

  1. Belirgin güvenlik açıkları olan bileşenler

    Her web uygulaması, çalışması için diğer bileşenlere bağlıdır. Örneğin, yama uygulanmamış bir web veya uygulama sunucusunda bir uygulama çalıştırıyorsanız, sunucu bariz güvenlik açıklarına sahip kısımdır. Ortak Güvenlik Açıkları ve Etkilenmeler (CVE) listesi, bilinen tüm güvenlik açıklarını içerir. Kötü niyetli saldırganlar liste hakkında bilgi sahibi olduklarından, sıklıkla yeterli güvenlik yaması güncellemeleri olmayan bileşenleri ararlar. Web uygulamasının bir bileşenine sızdıkları anda, uygulamanın verilerine de erişim sağlayabilirler.

  1. Kaynaklar Arası Kaynak Paylaşımı (CORS) Politikası

    Tüm web tabanlı uygulamalar, kullanıcının tarayıcısını sunucusuna bağlamanın bir aracı olarak bir URL'yi kullanır. Aynı Menşe Politikası ortak bir korumadır. Buna uygun olarak, sunucu yalnızca aynı protokole, yol şemasına ve üst düzey alan adına sahip bir URL'ye yanıt verecektir. Bunun anlamı, her ikisi de aşağıdakileri paylaştığı için http://organization.com/page1 ve http://organization.com/page2'ye erişebilmenizdir:

    • Protokol: HTTP
    • Etki Alanı: Company.com
    • Yol şeması: /sayfa#

    Güvenli olsa da, Same Origin Policy, üçüncü taraflara veya alt alanlara bağlanan kaynaklara erişim gerektiren web tabanlı uygulamalarla uğraşırken kısıtlayıcıdır.

    Bir CORS ilkesi, "güvenilir" olarak kabul edilen bir dizi izin verilen HTTP üstbilgisi oluşturarak tarayıcıya bu birbiriyle ilişkili kaynakları görüntüleme izni verir. Örneğin, bir uygulamanın ayrı web sunucularındaki iki veritabanından veri çekmesi gerekebilir. Ek sunucular eklediğinizden, belirli bir "izin verilen" listesinin taslağının hazırlanması aşırı iş haline gelir. Her iki sunucu da uygulamayı "paylaştığı" için şirket, tarayıcıların her ikisine de bağlanmasına izin veren bir CORS politikası yazar. Bununla birlikte, bir CORS ilkesi uygun şekilde tanımlanmadıysa, bu durumda ilke, kötü niyetli bir saldırgan tarafından istendiğinde sunucuların erişim izni vermesine izin verebilir.

  1. kimlik bilgileri yönetimi

    Kullanıcı kimlik bilgileri, bir kullanıcı kimliği ve paroladan oluşur. Kullanıcı, bir uygulamaya erişim sağlanmadan önce her iki bilgiyi de giriş sayfasına sağlamalıdır. Ancak, veritabanları zayıf şifreleme kullanma veya bilgileri düz metin olarak tutma eğilimindedir. Yetersiz kimlik bilgisi yönetimi, saldırganların kimlik bilgilerini kolayca çalmasına ve web uygulamalarına erişim elde etmek için bunlardan yararlanmasına olanak tanır.

  1. Siteler arası istek sahteciliği (CSRF)

    Bir CSRF saldırısı, bir kullanıcıyı bir uygulamadaki parolalar veya kullanıcı adları gibi bilgileri değiştirmeye yönlendirmek için sosyal mühendislik metodolojilerini kullanır. Bir CSRF, siteler arası komut dosyası çalıştırma (XXS) saldırılarının veya kötü amaçlı yazılımların aksine, bir kullanıcının, kullanıcı isteklerini doğrulamak veya oturumları izlemek için yalnızca oturum tanımlama bilgilerini kullanan uygulamada oturum açmasını gerektirir. Kullanıcı beklenen eylemi gerçekleştirdiği anda, kötü niyetli aktör, kullanıcı ne olduğunu bilmeden, para taşımak gibi saldırının kalan kısmını yürütmek için tarayıcıyı kullanır.

  1. Siteler arası komut dosyası çalıştırma (XXS)

    Kullanıcının belirli bilgileri değiştirmesi için bir uygulamada oturum açmasını gerektiren bir CSRF'nin aksine, bir XXS saldırısı, kötü niyetli saldırganın bir web sayfasına, genellikle sayfanın bir resim gibi bazı bileşenlerine kod girmesini gerektirir. Bir kullanıcı web sayfasını tarayıcısında başlattığında, hatalı kod indirilmeye ve tarayıcıda çalışmaya başlar. Örneğin, kötü amaçlı kod, kullanıcıyı güvenilir bir siteden gayri meşru bir siteye yönlendirebilir.

  1. dizin indeksleme

    Genellikle, web sunucuları üzerlerine kaydedilen tüm dosyaları tek bir dizinde özetler. Bir kullanıcı bir web uygulamasında belirli bir dosyayı bulmak istediğinde, genellikle dosya adını isteğe ekler. Dosyanın kullanılamaması durumunda uygulama, dizine eklenmiş tüm dosyaların bir listesini kullanıcıya sunar, böylece kullanıcının başka bir şey seçme seçeneği olur.

    Ancak, dosyalar web sunucuları tarafından otomatik olarak indekslenir. Uygulama, depolanan tüm dosyaların bir listesini sunduğunda, dizin dizinindeki güvenlik açıklarından yararlanan kötü niyetli bir saldırgan, kendilerine sistem hakkında daha fazla bilgi verebilecek verilere erişim elde edebilir. Örneğin, kişisel kullanıcı hesapları veya adlandırma kuralları hakkında bilgi edinebilirler. Bu iki veri noktası, kimlik bilgisi hırsızlığı saldırıları gerçekleştirmek veya hassas bilgileri çözmek için kullanılabilir.

  1. Dizin geçişi

    Geri izleme saldırısı, nokta-nokta-eğik çizgi ve dizin tırmanma olarak da bilinen dizin geçişi güvenlik açığı, bir uygulamanın web sunucusundan veri alma biçiminden yararlanır. Erişim Kontrol Listeleri (ACL'ler) genellikle bir kök dizindeki belirli dosyalara kullanıcı erişimini kısıtlar. Dizin geçişi güvenlik açığı modunu kullanan kötü niyetli saldırganlar, uygulamanın dosya talep ederken kullandığı URL biçimini bulur.

  1. kapsülleme

    Listedeki diğer yaygın web uygulaması güvenlik açıklarından farklı olarak, kapsülleme güvenlik açığı, geliştiricinin uygulamayı kodlama biçimindeki kusurlardan yararlanır. Kapsülleme, verileri ve bu veriler üzerinde gerçekleştirilebilecek eylemleri tek bir birimde gruplamayı ifade eden bir programlama terimidir. Kapsülleme, daha iyi bir kullanıcı arabirimi sağlayan kodun nasıl çalıştığıyla ilgili bilgileri gizleyerek verileri korur. Kullanıcıların, uygulamanın kendilerine nasıl veri sağladığını bilmesi gerekmez; tek ihtiyaçları ona erişim.

    Örneğin, bir uygulama geliştiricisi, bir uygulamanın veri alma yeteneğine okuma veya yazma izinleri gibi erişim kontrolleri ekleyebilir. Kullanıcı uygulamada bilgi isterse, yalnızca erişmesine izin verilen verileri iletir.

    Ancak geliştiriciler, veriler ve uygulamanın çeşitli yönleri arasında gerçekleştirilen eylemler arasında açıkça tanımlanmış sınırlar koyamazlarsa, uygulama bir kapsülleme güvenlik açığından muzdariptir. Saldırganlar, böyle bir eylemin bir hata mesajıyla sonuçlanacağını bilerek uygulamaya bir istek göndererek bundan yararlanır. Bu hata mesajı daha sonra uygulamanın yapısı hakkında bilgi sağlayarak DOS - hizmet reddi gibi daha fazla saldırı stratejisine yardımcı olur.

  1. Güvenli olmayan doğrudan nesne başvuruları (IDOR)

    Web uygulaması URL'leri, kullanıcıları arka uç depolama konumlarına yönlendirmede kullanılan kalıbı veya formatı açığa çıkarabilir. Örneğin, bir URL, bir dosya sistemi veya veritabanı gibi bir depolama sistemindeki bir kayıt tanımlayıcısı için kalıbı/biçimi gösterebilir.

    IDOR tek başına düşük riskli bir endişe olabilir. Bununla birlikte, bir IDOR, başarısız bir erişim kontrol kontrolü ile birleştirildiğinde, saldırganlar başarılı bir şekilde saldırma şansına sahip olurlar.

    Bilmeniz gereken diğer yaygın web uygulaması güvenlik açıkları şunlardır:

  1. HTTP yanıt bölme

    Bu bir tür CRLF enjeksiyon saldırısıdır. HTTP, tarayıcıların sorgu gönderdiği ve sunucuların yanıtları geri gönderdiği süreçtir. Bu web uygulaması güvenlik açığında, kötü niyetli saldırganlar, bir istek ileten ancak sunucuya yanıtı çeşitli bölümlere "bölmesini" söyleyen tarayıcıların ve sunucuların birbirleriyle nasıl iletişim kurduklarını değiştirmek için CR ve LR gösterimlerini kullanır. Yanıtı iki farklı parçaya bölmek, kötü niyetli aktörün, isteğin diğer bölümüne yanıt olarak sunucunun sunduğu bilgiler üzerinde kontrol sahibi olmasını sağlar. Bu tür talep edilen veriler kullanıcı kimliği verileri veya hassas bilgiler olduğunda, kötü niyetli aktör saldırıyı başarıyla gerçekleştirmiştir.

  1. Enjeksiyon kusuru

    Bir enjeksiyon kusuru, çok sayıda çeşitli saldırı tekniklerine izin verir. Kullanıcıların kabuk komutunu, işletim sistemi çağrısını veya bir veritabanını güncellemesine izin veren herhangi bir uygulama, bir enjeksiyon hatasına maruz kalabilir. Kötü niyetli saldırganlar, uygulama içinde yeni ve beklenmedik eylemlere dönüşen komutları değiştirmek için enjeksiyon kusurlarından yararlanır. Bu güvenlik açıklarından yararlanan kötü niyetli kişiler, verileri oluşturabilir, güncelleyebilir, okuyabilir ve hatta silebilir.

  1. Güvenli olmayan ileti özeti güvenlik açığı

    Bu, şifrelemenin etkinliğini sınırlayan bir kriptografik güvenlik açığıdır. Bir mesaj özeti, kriptografik hash fonksiyonunu içermelidir. Şifrelemenin aksine, hash işlevleri gönderenin ve kullanıcıların anahtarları kullanmasını gerektirmez.

    Kötü niyetli saldırganlar bu nedenle "karma çarpışma saldırısını" sürdürmek için güvenli olmayan özet güvenlik açıklarından yararlanır. Saldırının amacı, bir girdi göndermenin yinelenen bir karma oluşturulmasına yol açıp açmadığını bulmaktır. Kötü niyetli eylem zorla paylaşılan bir karma oluşturursa, bu karma dosyayı indirilmek üzere kötü amaçlı bir dosya sunmak için kullanabilirler. Bu da son kullanıcıya dosyanın yasal olduğu varsayımını bırakır.

  1. Yetersiz taşıma katmanı koruması

    Taşıma katmanı güvenliği (TLS), bilgisayar uygulamalarının internette birbirleriyle güvenli bir şekilde "iletişim kurabildiği" süreci ifade eder. Bazı uygulamalar, yalnızca kimlik doğrulama işlemi sırasında TLS'yi kullanır; bu, bir kişi uygulamayı kullandığında veri ve kimlik oturum bilgilerini savunmasız bırakır.

    Saldırganlar, verileri internette hareket ederken kullanıcının cihazı ile uygulama sunucusu arasında yönlendirmek için bu güvenlik açığından yararlanabilir.

  1. Uzaktan kod yürütme (RCE)

    Uzaktan kod yürütme güvenlik açıkları, kötü niyetli saldırganların coğrafi konumlarına bakılmaksızın kod eklemesine olanak tanıyan web uygulamalarındaki kodlama hatalarıdır. RCE'ler, saldırganların kullanıcı girişlerini onaylamayan bir uygulamaya kendi kodlarını girerek sunucunun bunu gerçek uygulama kodu olarak görmesini sağladığı daha geniş bir web uygulaması enjeksiyon güvenlik açıkları kategorisine girer. Tipik olarak, kötü niyetli saldırganlar, yama uygulanmamış, yaygın olarak bilinen güvenlik açıklarından yararlanır ve kodlarını uygulamaya ekler.

  1. Uzaktan dosya ekleme (RFI)

    Ortak dizinleri bir uygulamaya bağlamak için geliştiriciler kodlarına "include" ifadeleri ekler. Örneğin, bir uygulamanın bir veritabanından veri çekmesi gerekebilir. Her dosyayı almak için manuel olarak kodlamak yerine, "include" ifadesi, orada depolanan her şeyin kullanılabilmesi için tüm kaynak dizini bağlamaya yardımcı olur.

    Bir web uygulaması bir RFI güvenlik açığına maruz kaldığında, saldırganlar uygulamayı veritabanına, sunucuya veya web sitesine kötü amaçlı kod veya kötü amaçlı yazılım yüklemek için manipüle edebilir.

  1. Güvenlik yanlış yapılandırması

    Bir güvenlik yanlış yapılandırması olasılığı, gerçekten de günümüzün en yaygın web uygulaması güvenlik açıklarından biridir. Bu güvenlik açığı genellikle bir kuruluşun varsayılan güvenlik ayarlarını değiştirmemesi nedeniyle oluşur. Yaygın güvenlik yanlış yapılandırmaları şunlardır:

    • Varsayılan parolaları veya hesapları kullanma
    • Yamasız yazılım
    • Şifreleme yok
    • Yetersiz güvenlik duvarı politikaları
    • Kullanılmayan kaynakları, özellikleri ve diğer bileşenleri ihmal etme
  1. SQL enjeksiyonu

    Yapılandırılmış Sorgu Dili anlamına gelen SQL, veritabanları için kullanılan bir programlama dilidir. İlişkisel veritabanları için verilerin alınmasına ve işlenmesine izin verir. Bir SQL enjeksiyon güvenlik açığı, daha büyük bir doğrulanmamış kullanıcı girdisi grubunun altındadır. Kötü niyetli kişiler kasıtlı olarak yanlış istekler gönderdiğinde, web uygulaması onlara veritabanının yapısı ve koruması hakkında bilgi sağlayan bir hata mesajıyla yanıt verir.

  1. Doğrulanmamış otomatik kitaplık aktivasyonu

    Kodlama sırasında zamandan tasarruf etmek için geliştiriciler üçüncü taraf kitaplıkları kullanma eğilimindedir. Çoğu durumda bu, uygulama geliştirme sürecini hızlandıran önceden test edilmiş kodu kullanmalarını sağlar. Bununla birlikte, kamuya açık, açık kaynak kodunun kullanılması, aşağıdakiler de dahil olmak üzere güvenlik risklerini artırır:

    • Belgelenmiş mülkiyetin olmaması, eklenen kötü niyetli kod riskini artırır
    • Artık güncellenmeyen ihmal edilen projeler

    Bu özel güvenlik açığı, birkaç uygulamanın üçüncü taraf kitaplık bağımlılıklarını kullandığı göz önüne alındığında giderek daha yaygın hale geliyor.

Bu blog gönderisinin içeriğinin sizin için gerçekten yararlı ve anlayışlı olduğunu umuyoruz. Durumunuz için geçerli olan web uygulaması güvenlik açığına bir çözüm bulduğunuzdan emin olmak, çalışan ve müşteri deneyimlerinizde oyunun kurallarını değiştirecektir.