Geri bildirim isteniyor: Özel ağlar için CORS (RFC1918)

Bir istemcinin dahili ağındaki cihazların ve sunucuların genel olarak web'de istemeden maruz kalmasıyla ilişkili riskleri en aza indirin.

Özel bir ağda barındırılan cihazlara ve sunuculara istekte bulunan kötü amaçlı web siteleri uzun zamandır tehdit teşkil etmektedir. Örneğin, saldırganlar Man-in-the-Middle saldırılarını etkinleştirmek için bir kablosuz yönlendiricinin yapılandırmasını değiştirebilir. CORS-RFC1918, bu tür istekleri tarayıcıda varsayılan olarak engelleme ve dahili cihazların herkese açık internetten isteklere kaydolmasını zorunlu kılmaya yönelik bir tekliftir.

Bu değişikliğin web ekosistemini nasıl etkilediğini anlamak için Chrome ekibi, özel ağlar için sunucular oluşturan geliştiricilerden geri bildirim almak istiyor.

Mevcut durumla ilgili sorun nedir?

Birçok web sunucusu özel bir ağ üzerinde çalışır. Kablosuz yönlendiriciler, yazıcılar, intranet web siteleri, kurumsal hizmetler ve Nesnelerin İnterneti (IoT) cihazları bunların yalnızca bir parçasıdır. Halka açık olanlardan daha güvenli bir ortamda bulunuyor olabilirler ancak bu sunucular, proxy olarak bir web sayfasını kullanan saldırganlar tarafından kötüye kullanılabilir. Örneğin, kötü amaçlı web siteleri, kurban tarafından kolayca görüntülendiğinde (JavaScript özellikli bir tarayıcıda) mağdurun evindeki geniş bant yönlendiricisindeki DNS sunucusu ayarlarını değiştirmeye çalışan bir URL'yi yerleştirebilir. "Eczacılık Amaçlı Araç" adı verilen bu saldırı türü 2014'te gerçekleşti. Güvenlik açığı olan 300.000'den fazla kablosuz yönlendirici,DNS ayarlarının değiştirilmesi ve saldırganların kullanıcıları kötü amaçlı sunuculara yönlendirmesine izin vererek kötüye kullanıldı.

CORS-RFC1918

Web topluluğu, benzer saldırıların neden olduğu tehditleri azaltmak amacıyla RFC1918'de tanımlanan özel ağlar için özelleştirilmiş CORS-RFC1918 (Kökler Arası Kaynak Paylaşımı (CORS)) özelliğini kullanıma sunuyor.

CORS uygulayan tarayıcılar, hedef kaynakları farklı bir kaynaktan yüklenip yüklenmediklerini kontrol eder. Bu işlem, erişimi açıklayan satır içi ekstra başlıklarla veya karmaşıklığa bağlı olarak kontrol öncesi istekleri adlı bir mekanizma kullanılarak gerçekleştirilir. Daha fazla bilgi edinmek için Ortamlar Arası Kaynak Paylaşımı bölümünü okuyun.

CORS-RFC1918 ile tarayıcı, CORS kullanarak ve HTTPS üzerinden sunucu tarafından açıkça izin verilen kaynaklar haricinde özel ağ üzerinden kaynak yüklenmesini varsayılan olarak engeller. Bu kaynaklara istekte bulunan web sitesinin CORS başlıkları göndermesi ve sunucunun, ilgili CORS başlıklarıyla yanıt vererek kaynaklar arası isteği kabul ettiğini açıkça belirtmesi gerekir. (Tam CORS üstbilgileri hâlâ geliştirme aşamasındadır.)

Bu tür cihazların veya sunucuların geliştiricilerinden iki şey yapması istenir:

  • Özel bir ağa istek yapan web sitesinin HTTPS üzerinden sunulduğundan emin olun.
  • CORS-RFC1918 için sunucu desteğini ayarlayın ve beklenen HTTP üst bilgileriyle yanıt verin.

Ne tür talepler etkileniyor?

Etkilenen istekler arasında şunlar bulunur:

  • Herkese açık ağdan özel ağa yapılan istekler
  • Özel bir ağdan yerel ağa gönderilen istekler
  • Herkese açık ağdan yerel ağa istekler

Özel ağ IPv4'te RFC1918 Bölüm 3'te tanımlanan özel adres alanına, eşlenen IPv4 adresinin gizli olduğu IPv4 ile eşlenmiş bir IPv6 adresine veya ::1/128, 2000::/3 ile ff00::/8 alt ağlarının dışındaki bir IPv6 adresine çözümlenen bir hedef.

Yerel ağ IPv4'ün RFC1122'nin 3.2.1.3 bölümünde tanımlanan "loopback" alanına (127.0.0.0/8) çözümleyen bir hedef; IPv4'ün RFC3927'sinde tanımlanan "yerel bağlantı" alanı (169.254.0.0/16), RFC4193 ("Benzersiz Yerel Adres")fc00::/7fe80::/10RFC4291

Herkese açık bir ağ Diğer tüm ağlar.

CORS-RFC1918'de herkese açık, özel, yerel ağlar arasındaki ilişki
CORS-RFC1918'de herkese açık, özel, yerel ağlar arasındaki ilişki.

Chrome'un CORS-RFC1918'i etkinleştirme planları

Chrome, CORS-RFC1918'i iki adımda kullanıma sunuyor:

1. Adım: Özel ağ kaynaklarına yapılan isteklere yalnızca HTTPS web sayfalarından izin verilecek

Chrome 87'de, özel ağ kaynaklarının HTTPS'de olması için herkese açık web sitelerinin istekte bulunmasını zorunlu kılan bir işaret eklenir. Etkinleştirmek için about://flags#block-insecure-private-network-requests adresine gidebilirsiniz. Bu işaret etkinleştirildiğinde, HTTP web sitesinden özel ağ kaynağına yapılan tüm istekler engellenir.

CORS-RFC1918 hataları, Chrome 88'den itibaren konsolda CORS politika hataları olarak raporlanacaktır.

CORS-RFC1918 hataları, konsolda CORS politika hataları olarak raporlanır.
CORS-RFC1918 hataları Konsolda CORS politika hataları olarak raporlanır.

Engellenen isteklere odaklanmak için Chrome Geliştirici Araçları'nın panelinde Engellenen İstekler onay kutusunu etkinleştirebilirsiniz:

CORS-RFC1918 hataları ayrıca, Ağ panelinde CORS hata hataları olarak raporlanır.
CORS-RFC1918 hataları da panelinde CORS hata hataları olarak raporlanır.

Chrome 87'de CORS-RFC1918 hataları Geliştirici Araçları Konsolu'nda yalnızca ERR_INSECURE_PRIVATE_NETWORK_REQUEST olarak raporlanır.

Bu test web sitesini kullanarak kendiniz deneyebilirsiniz.

2. Adım: Kontrol öncesi isteklerini özel bir başlıkla gönderme

Gelecekte herkese açık bir web sitesi özel bir ağdan veya yerel ağdan kaynak getirmeye çalıştığında, Chrome gerçek istekten önce yayın öncesi isteği gönderir.

İstek, diğer CORS istek başlıklarına ek olarak bir Access-Control-Request-Private-Network: true üst bilgisi içerir. Diğer unsurların yanı sıra, bu üst bilgiler istekte bulunan kaynağı tanımlayarak ayrıntılı erişim denetimi sağlar. Sunucu, kaynağa erişim izni verdiğini açıkça belirtmek için bir Access-Control-Allow-Private-Network: true başlığıyla yanıt verebilir.

Geri bildirim istendi

Herkese açık ağlardan istek bekleyen bir web sitesini özel bir ağda barındırıyorsanız Chrome ekibi geri bildirimleriniz ve kullanım alanlarınızla ilgilenir. Yardımcı olmak için yapabileceğiniz iki şey var:

  • about://flags#block-insecure-private-network-requests bölümüne gidin, işareti etkinleştirin ve web sitenizin özel ağ kaynağına beklendiği gibi istek gönderip göndermediğini kontrol edin.
  • Herhangi bir sorunla karşılaşırsanız veya geri bildirimde bulunmak isterseniz crbug.com adresinden sorun bildiriminde bulunun ve bileşeni Blink>SecurityFeature>CORS>RFC1918 olarak ayarlayın.

Örnek geri bildirim

Kablosuz yönlendiricimiz, aynı özel ağ için bir yönetici web sitesine hizmet verir, ancak bunu HTTP üzerinden gerçekleştirir. Yönetici web sitesini yerleştiren web siteleri için HTTPS gerekiyorsa bu, karma içeriğe sahiptir. Yönetici web sitesinde HTTPS'yi kapalı bir ağda etkinleştirmeli miyiz?

Bu, tam olarak Chrome'un istediği geri bildirim türüdür. Lütfen crbug.com adresinden somut kullanım alanınızla ilgili bir sorun bildirin. Chrome sizden haber almaktan memnuniyet duyar.

Stephen Philips'in Unsplash'teki hero resmi.