John Leyden 06 Şubat 2023, 15:57 UTC
Güncellendi: 06 Şubat 2023, 16:01 UTC
JavaScript nesneleri ve planları arasında sınır oluşturmayı planlayın ivme kazanıyor
Google’daki yazılım mühendisleri, web güvenliğinin belası haline gelen bir güvenlik açığı sınıfı olan prototip kirliliğini azaltmayı vaat eden bir teklif ortaya attılar.
Prototip kirliliği, saldırganların çalışma zamanında kontrol etmedikleri veya erişimleri olmayan nesneleri manipüle etmelerine izin veren bir JavaScript dili kusurudur. Sorun, (çalışma zamanında verileri tutmak için kullanılan) nesneler ile (bu nesnelerin nasıl davranması gerektiğini belirleyen) planları arasında açık bir sınırın olmamasından kaynaklanır.
ARKA PLAN Prototip kirliliği: JavaScript uygulamalarını etkileyen tehlikeli, hafife alınan hata
Teknik bir çalışma grubu olan TC39’a onaylanmak üzere sunulan Google destekli teklif, JavaScript nesneleri ile taslaklar arasında bir sınır oluşturmayı amaçlıyor. Teknoloji, “saldırganların nesnelerden planlara atlamasına izin veren yolları kaldırarak” çalışır.
Teklifin teknik detayları GitHub’da yayınlandı.
Güvenli modu etkinleştir
GitHub gönderisinde açıklandığı gibi, “teklif, prototiplere yöntemlerle erişilmesini gerektirmek yerine dize özellik anahtarlarını kullanarak erişmeyi imkansız kılan bir isteğe bağlı güvenli mod sunarak prototip kirliliğini azaltmayı amaçlıyor (Object.getPrototypeOf) veya önerilen yeni sembol özellik anahtarları”.
Teklifin ortak yazarı Santiago Diaz şunları söyledi: günlük yudum: “Amaç, mevcut kod tabanlarıyla mümkün olduğunca uyumlu olurken, bilinen açıklardan yararlanma tekniklerini kırmak ve böylece azaltmanın internette geniş çapta benimsenebilmesini sağlamaktır.”
JavaScript spesifikasyonunu sürdürmekten sorumlu bir çalışma grubu olan TC39, geçtiğimiz hafta 0. aşamadan 1. aşamaya geçmek için yeşil ışık yaktı ve onaylamaya yönelik beş bölümlük yolculuğunda bir sonraki aşamaya başladı.
Diaz şöyle açıkladı: “Bunun önemi, TC39’un kirliliği araştırmaya (ve umarım çözmeye) değer bir sorun olarak görmesidir. Önümüzdeki aylar boyunca, teklifin belirli yönlerini yineleyeceğiz ve doğru dengeyi bulmak için mühendislik yapacağız ve umarız hem TC39 üyeleri hem de geliştiriciler için kabul edilebilir hale getireceğiz.”
Bir teklif son aşamaya (4. aşama) ulaştığında, teklif nihai kabul edilir ve tarayıcı satıcıları yazılımlarında değişiklik yapabilir. “Bu sırayla, sinyaller [to] geliştiriciler bu yeni hafifletmeyi benimsemeye ve üretime yaymaya başlamalı,” diye sözlerini bitirdi Diaz.
Sembol çözümü
Ana şirketi PortSwigger’de güvenlik araştırmacısı olan Gareth Hayes günlük yudumtekliflere ilgi duyduğunu ifade etti.
“Bu, geliştiriciye aşağıdaki gibi özellikleri kaldırma yeteneği vererek prototip kirliliğini önleme önerisidir: __proto__ Hayes, güvenli bir modu etkinleştiren ve bu özellikleri kaldıran bazı kodları yürüterek, dedi.
“Sitenin kullanılmaya devam etmesini sağlamak için semboller kullanmayı öneriyorlar. __proto__ bir sitenin bozulmaması ve bir saldırganın bu sembolleri sağlayamaması için JavaScript yürütmesi gerekeceğinden işlevsellik.”
Google teklifi türünün ilk örneği değil. Ancak, prototiplerde istenmeyen değişikliklerin önlenmesine yönelik mevcut çözümler, örneğin nesne.dondur, uzantıları önlemeVe fok Google’ın bu dezavantajları ana hatlarıyla açıklayan blog gönderisine göre, “dağıtılmalarını zorlaştıran bir takım olumsuz yanları” vardır.
İLGİLİ Python’da keşfedilen prototip kirlilik benzeri böcek varyantı