Etki
Bir saldırgan, güvenlik açığı bulunan [S2] uygulamasının kullanıcılarından hassas, kimliği doğrulanmış verileri çalabilir. Bir kullanıcı, güvenlik açığı bulunan uygulamada oturum açmışken kötü amaçlı bir web sitesini ziyaret ederse, kötü amaçlı site, uygulamanın API'sine çapraz kaynak isteklerinde bulunabilir ve [S1][S2] yanıtlarını okuyabilir. Bu, kullanıcı profilleri, CSRF belirteçleri veya [S2] özel mesajları dahil olmak üzere özel bilgilerin çalınmasına yol açabilir.
Temel Neden
CORS, sunucuların hangi kaynakların (etki alanı, şema veya bağlantı noktası) [S1] kaynaklarını yüklemesine izin verildiğini belirtmesine olanak tanıyan HTTP üstbilgisi tabanlı bir mekanizmadır. Güvenlik açıkları genellikle bir sunucunun CORS politikası çok esnek olduğunda veya [S2] kötü uygulandığında ortaya çıkar:
- Yansıyan Kaynak Başlığı: Bazı sunucular, bir istemci isteğinden
Originbaşlığını okur ve bunuAccess-Control-Allow-Origin(ACAO) yanıt başlığı [S2]'ye geri yansıtır. Bu, herhangi bir web sitesinin [S2] kaynağına etkili bir şekilde erişmesine olanak tanır. - Yanlış Yapılandırılmış Joker Karakterler:
*joker karakteri herhangi bir kaynağın bir kaynağa erişmesine izin verse de, kimlik bilgisi gerektiren istekler (çerezler veya Yetkilendirme başlıkları gibi) [S3] için kullanılamaz. Geliştiriciler genellikle [S2] isteğine dayalı olarak ACAO başlığını dinamik olarak oluşturarak bunu atlamaya çalışırlar. - 'Boş' olarak beyaz listeye alma: Bazı uygulamalar, yeniden yönlendirilen istekler veya yerel dosyalar tarafından tetiklenebilen
nullkaynağını beyaz listeye alarak, kötü amaçlı sitelerinnullkaynağı gibi görünerek [S2][S3]'ye erişmesine olanak sağlar. - Ayrıştırma Hataları:
Originbaşlığı doğrulanırken normal ifade veya dize eşleştirmede yapılan hatalar, saldırganlarıntrusted-domain.com.attacker.com[S2] gibi alanları kullanmasına izin verebilir.
CORS'nin Siteler Arası İstek Sahteciliğine (CSRF) [S2]'ye karşı bir koruma olmadığını unutmamak önemlidir.
Beton Düzeltmeleri
- Statik Beyaz Liste kullanın:
Access-Control-Allow-Originüstbilgisini, isteğinOriginüstbilgisi [S2]'den dinamik olarak oluşturmaktan kaçının. Bunun yerine, isteğin kaynağını [S3] güvenilir etki alanlarının sabit kodlanmış listesiyle karşılaştırın. - 'Boş' Kaynaktan kaçının: İzin verilen kaynaklar [S2] beyaz listenize asla
null'yi eklemeyin. - Kimlik Bilgilerini Kısıtla:
Access-Control-Allow-Credentials: true'yi yalnızca belirli çapraz kaynak etkileşimi [S3] için kesinlikle gerekliyse ayarlayın. - Doğru Doğrulamayı Kullanın: Birden fazla kaynağı desteklemeniz gerekiyorsa,
Originbaşlığına yönelik doğrulama mantığının sağlam olduğundan ve alt alan adları veya benzer görünümlü [S2] alan adları tarafından atlanamayacağından emin olun.
FixVibe bunu nasıl test ediyor?
FixVibe artık bunu geçitli bir aktif kontrol olarak içeriyor. Etki alanı doğrulamasının ardından active.cors, sentetik saldırgan kaynağıyla aynı kökenli API isteklerini gönderir ve CORS yanıt başlıklarını inceler. Kamuya açık varlık gürültüsünü önlerken, halka açık olmayan API uç noktaları üzerinde keyfi kökenleri, joker karakterli CORS'yi ve tamamen açık CORS'yi yansıtır.
