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

İstemcinin dahili ağındaki cihazların ve sunucuların geniş anlamda web'e kasıtsız olarak maruz kalmasıyla ilgili riskleri azaltın.

Özel ağda barındırılan cihazlara ve sunuculara istek gönderen kötü amaçlı web siteleri uzun süredir tehdit oluşturmaktadır. Saldırganlar, örneğin kablosuz yönlendiricinin yapılandırmasını değiştirerek Man-in-the-Middle saldırılarını etkinleştirebilir. CORS-RFC1918, bu tür isteklerin tarayıcıda varsayılan olarak engellenmesini ve dahili cihazların herkese açık internetten gelen istekleri etkinleştirmesini gerektiren bir öneridir.

Chrome ekibi, bu değişikliğin web ekosistemini nasıl etkilediğini anlamak için özel ağlar için sunucu geliştiren geliştiricilerin geri bildirimlerini bekliyor.

Mevcut durumla ilgili sorun nedir?

Birçok web sunucusu özel bir ağda çalışır. Kablosuz yönlendiriciler, yazıcılar, intranet web siteleri, kurumsal hizmetler ve Nesnelerin İnterneti (IoT) cihazları bunların yalnızca bir kısmıdır. Bu sunucular, herkese açık olanlardan daha güvenli bir ortamda görünse de web sayfasını proxy olarak kullanan saldırganlar tarafından kötüye kullanılabilir. Örneğin, kötü amaçlı web siteleri, kurban tarafından (JavaScript özellikli bir tarayıcıda) görüntülendiğinde kurbanın ev geniş bant yönlendirmesindeki DNS sunucusu ayarlarını değiştirmeye çalışan bir URL yerleştirebilir. Bu tür saldırılara "Drive-By Pharming" adı verilir ve 2014'te gerçekleşmiştir. DNS ayarlarının değiştirilmesi ve saldırganların kullanıcıları kötü amaçlı sunuculara yönlendirmesine izin verilmesiyle 300.000'den fazla güvenlik açığı bulunan kablosuz yönlendiriciden yararlanıldı.

CORS-RFC1918

Benzer saldırıların tehdidini azaltmak için web topluluğu, RFC1918'de tanımlanan özel ağlar için özelleştirilmiş Merkezler Arası Kaynak Paylaşımı (CORS) olan CORS-RFC1918'i kullanıma sunuyor.

CORS'u uygulayan tarayıcılar, hedef kaynaklarla farklı bir kaynaktan yüklenmenin uygun olup olmadığını kontrol eder. Bu işlem, karmaşıklığa bağlı olarak erişimi açıklayan satır içi ek üstbilgilerle veya ön uç istekleriyle adlandırılan bir mekanizma kullanılarak gerçekleştirilir. Daha fazla bilgi edinmek için Merkezler Arası Kaynak Paylaşımı bölümünü okuyun.

CORS-RFC1918 ile tarayıcı, CORS kullanılarak ve HTTPS üzerinden sunucu tarafından açıkça izin verilenler dışındaki kaynakları varsayılan olarak özel ağ üzerinden yüklemeyi engeller. Bu kaynaklara istek gönderen web sitesinin CORS başlıkları göndermesi ve sunucunun, ilgili CORS başlıklarıyla yanıt vererek kaynakta farklılık olan isteği kabul ettiğini açıkça belirtmesi gerekir. (Tam CORS başlıkları hâlâ geliştirme aşamasındadır.)

Bu tür cihaz veya sunucuların geliştiricilerinden iki şey yapması istenecektir:

  • Özel ağa istek gönderen web sitesinin HTTPS üzerinden yayınlandığından emin olun.
  • CORS-RFC1918 için sunucu desteğini ayarlayın ve beklenen HTTP başlıklarıyla yanıt verin.

Hangi tür talepler etkileniyor?

Etkilenen istekler şunlardır:

  • Herkese açık ağdan özel ağa gönderilen istekler
  • Özel ağdan yerel ağa gönderilen istekler
  • Herkese açık ağdan yerel ağa gelen istekler

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

Yerel ağ IPv4'teki RFC1122 belgesinin 3.2.1.3 numaralı bölümünde tanımlanan "loopback" alanına (127.0.0.0/8), IPv4'teki RFC3927 belgesinin 3 numaralı bölümünde tanımlanan "link-local" alanına (169.254.0.0/16), IPv6'taki RFC4193 belgesinin 3 numaralı bölümünde tanımlanan "Unique Local Address" ön ekine (fc00::/7) veya IPv6'taki RFC4291 belgesinin 2.5.6 numaralı bölümünde tanımlanan "link-local" ön ekine (fe80::/10) çözümlenen bir hedef.

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

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

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

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

1. Adım: Özel ağ kaynaklarına yalnızca HTTPS web sayfalarından istek gönderilmesine izin verilir

Chrome 87, özel ağ kaynaklarına istek gönderen herkese açık web sitelerinin HTTPS'yi kullanmasını zorunlu kılan bir işaret ekler. 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 gönderilen tüm istekler engellenir.

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

CORS-RFC1918 hataları, konsolda CORS politikası hataları olarak raporlanır.
CORS-RFC1918 hataları, Console'da CORS politikası hataları olarak raporlanır.

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

CORS-RFC1918 hataları, Ağ panelinde CORS hatası olarak da raporlanır.
CORS-RFC1918 hataları, panelinde CORS hatası olarak da raporlanır.

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

Bu test web sitesini kullanarak deneyebilirsiniz.

2. adım: Özel bir üstbilgeyle uçuş öncesi istek gönderme

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

İstek, diğer CORS istek başlıklarının yanı sıra bir Access-Control-Request-Private-Network: true başlığı da içerir. Bu üstbilgiler, isteği yapan kaynağı tanımlayarak ayrıntılı erişim denetimine olanak tanır. Sunucu, kaynağa erişim izni verdiğini açıkça belirtmek için Access-Control-Allow-Private-Network: true üstbilgisiyle 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 bildiriminizi ve kullanım alanlarınızı öğrenmekten memnuniyet duyar. Yardım etmek için iki şey yapabilirsiniz:

  • about://flags#block-insecure-private-network-requests adresine 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 kaydı oluşturun ve bileşeni Blink>SecurityFeature>CORS>RFC1918 olarak ayarlayın.

Örnek geri bildirim

Kablosuz yönlendiricimiz, aynı özel ağ için HTTP üzerinden bir yönetici web sitesi sunar. Yönetici web sitesini yerleştiren web siteleri için HTTPS gerekiyorsa bu karma içeriktir. Kapalı bir ağdaki yönetici web sitesinde HTTPS'yi etkinleştirmemiz gerekir mi?

Chrome tam olarak bu tür geri bildirimleri bekler. Lütfen crbug.com adresinden, kullanım alanınızı açıklayan bir sorun kaydı gönderin. Chrome olarak sizinle iletişime geçmekten memnuniyet duyarız.

Unsplash'taki Stephen Philips tarafından oluşturulan lokomotif resim.