Eksik İşlev Seviyesi Erişim Kontrolü (Missing Function Level Access Control)

Bu güvenlik açığının özü, adından da anlaşılacağı gibi, istenen nesneye uygun erişimin doğrulanmamasıdır. Uygulamanın mevcut kullanıcısı olabilecek bir saldırgan bunu kullanarak, ayrıcalıkları artırabilir ve kısıtlı işlevlere erişebilir. Örneğin, yönetici düzeyindeki kısıtlı özellikler genellikle bu saldırının hedefidir.

Çoğu web uygulaması, verileri kullanıcı arayüzünde görüntülemeden önce izinleri kontrol eder. Ancak, uygulamalar herhangi bir işlevi talep ederken sunucuda aynı erişim kontrol denetimlerini gerçekleştirmelidir. Sonuçta, AJAX teknolojisi kullanılarak arka planda eşzamansız olarak gönderilen daha birçok yardımcı hizmet isteği vardır.

İstek parametreleri dikkatli bir şekilde doğrulanmazsa, saldırganlar verilere erişim isteğini uygun izinler olmadan taklit edebilir.

Saldırı sistematiği

Saldırganlar bu güvenlik açığından öncelikle URL’leri manipüle ederek yararlanır. Örneğin, bir uygulama tarafından sağlanan şu URL’leri düşünelim:

example.com/account/view
example.com/account/remove

Her ikisi de kimliği doğrulanmış kullanıcılar gerektirse de,  /remove işlevini yalnızca yönetici kullanıcı tarafından kullanılabilir olması gerektiğini varsayalım . Kimliği doğrulanmamış veya kimliği doğrulanmış yönetici olmayan bir kullanıcı /remove işlevine erişebiliyor ise , bu eksik bir işlev düzeyinde erişim denetimi kusurudur.

Diğer Örnekler:

Örnek 1: URL’yi Zorla Tarama

  • URL’yi yazın ve siteye girin.( örnekte  bu alan adını kullanacağız):  http://example.com
  • Bir bağlantıya veya uygulamaya tıklayın ve URL’ye dikkat edin: http://example.com/app/getappinfo
  • Şimdi, sayfada böyle bir açık olup olmadığını anlamak için url’ye şu şekilde bir parametre eklemeniz yeterlidir. http://example.com/app/admin_getappinfo

Sayfa çalışırsa, artık uygulamaya yönetici erişiminiz vardır.

Örnek 2: Yatay Erişim Saldırısı

  • Kullanıcı siteye gider, site kaynaklarına yetkilendirmeyi onaylamak için oturum açar: http://example.com/app/userId=21775
  • Kullanıcı kendi userIdsini, başka bir kullanıcınınki ile değiştirir: http://example.com/app/userId=31356
  • Uygun yetkilendirme prosedürleri yerinde değilse, kullanıcı artık diğer kullanıcı userIDleri yazarak deneme yapar.

Eksik İşlev Düzeyinde Erişim Kontrolü Zafiyetini Önleme

Erişim kontrolü sorunlarını önlemeye yönelik ilk adım, uygulama için erişim kontrol politikasını tanımlamaktır. Erişim denetimi politikası, geliştiricilerin bunu tutarlı bir şekilde uygulayabilmesi için her işlev için güvenlik gereksinimlerini açıklar.

En basit haliyle, Node uygulamaları bir rota konfigürasyonunda ara yazılım(middleware ) kullanarak erişim kontrolü uygulayabilir . Ara yazılım işlevi, istek nesnesini değiştirmenize, yanıta yazmanıza, sonraki ara yazılımı çağırmanıza veya zinciri devam ettirmeden isteği sonlandırmanıza olanak tanıyan bir filtre görevi görür. Bir dizi ara katman yazılımı ekleyebiliriz …

  • Varsayılan olarak işlevselliğe erişimi reddedin.
  • Erişim kontrol listelerini ve rol tabanlı kimlik doğrulama mekanizmalarını kullanın.
  • Yalnızca işlevleri gizlemeyin.