deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

WebUSB, WebHID ve Web Serial için origin düzeyinde bir cihaz politikası gerekiyor, dev.to yazısı savunuyor

Bir dev.to yazısı, WebUSB, WebHID ve Web Serial'ın cihaz izni kararlarını web origin'lerine taşıdığını savunarak, varsayılan olarak reddeden Permissions-Policy başlıklarına ve sıkı kapsamlı cihaz iş akışlarına çağrı yapıyor.

WebUSB, WebHID ve Web Serial için origin düzeyinde bir cihaz politikası gerekiyor, dev.to yazısı savunuyor

Donanım erişimi web origin'ine taşındı

Tarayıcılar artık USB, insan arayüzü ve seri port cihazlarını doğrudan web uygulamalarına devredebiliyor ve dev.to'daki bir yazı, bu kaymanın origin düzeyinde tanımlanmış bir cihaz politikası gerektirdiğini savunuyor. Üç API farklı alanları kapsıyor: WebUSB uyumlu USB cihazlarındaki servisleri açığa çıkarırken, WebHID az yaygın veya sıra dışı insan arayüzü cihazlarını hedefliyor, Web Serial ise USB veya Bluetooth seri adaptörü olarak görünen donanımlar dahil seri portlara bağlanıyor.

Kullanışlılık gerçek, çünkü donanım iş akışları artık yerel bir yükleyiciye ihtiyaç duymuyor. Ancak yazı, bir cihaz izni kararının artık web origin'inin içinde yaşadığı ve burada ele geçirilmiş bir script'in, üçüncü taraf bir iframe'in ya da aşırı geniş bir feature policy'nin kimin erişim elde edeceğini değiştirebileceği konusunda uyarıyor.

Cihaz seçici bir arabuluculuk, güven değil

Yazıya göre MDN bu API'leri yalnızca güvenli bağlamlarda kullanılabilir olarak belgeliyor ve tarayıcı, bir sayfa erişim almadan önce bir cihaz seçici sunuyor. Bu seçici kasıtlı bir kullanıcı onayı noktası, ancak origin'deki her script'i güvenilir kılmıyor. Bir siteye cihaz isteme izni verildiğinde, aynı origin'de çalışan her script isteği başlatabilir ve kötü niyetli bir bağımlılık kendine ait inandırıcı bir arayüz sunup kullanıcıdan bir cihaz seçmesini isteyebilir.

Cihaz tanımlayıcıları bağlam ekler ama politika değildirler. Bir üretici kimliği, ürün kimliği, seri numarası veya arayüz sınıfı bir cihaz ailesini tanımlar; donanım yazılımının güncel olduğunu, cihazın doğru kullanıcıya ait olduğunu veya istenen işlemin donanım için güvenli olduğunu kanıtlamaz.

Permissions-Policy ilk kapı

Yazı, bir belgenin her bir API'yi kullanıp kullanamayacağını kontrol eden usb, hid ve serial Permissions-Policy yönergelerine işaret ediyor. Varsayılan izin listesi sınırlı, ancak bir üst belge erişimi cross-origin bir frame'e devredebilir; yazı bu devri başlı başına bir güvenlik kararı olarak tanımlıyor.

Öneriler somut. Cihaz erişimi gerektirmeyen sayfalarda Permissions-Policy: usb=(), hid=(), serial=() gibi varsayılan olarak reddeden bir header gönderin. Bir uygulama bir yeteneğe gerçekten ihtiyaç duyduğunda politikayı güvenilen origin'e göre kapsamlandırın ve özelliği bir pazarlama sitesi ya da geniş bir yönetim alanı genelinde etkinleştirmek yerine ayrı bir sayfada yükleyin; çünkü özelliğe zaten sahip bir sayfadaki enjekte edilmiş bir script, hedeflenen uygulama ile aynı izin yolunu kullanabilir. Üretimde çalışan aynı üst belgeden iframe davranışını test edin, çünkü üst düzeyde doğru görünen bir politika yine de bir alt frame'deki allow özniteliği üzerinden erişim devredebilir; hem header'ı hem de frame özniteliklerini envanterleyin.

Cihaz erişimini bir yetenek olarak tasarlayın

Uygulamalar, seçicinin listeleyebildiği her cihazı istemek yerine ihtiyaç duydukları kesin cihaz sınıfını ve işlemi tanımlamalıdır: bir donanım yazılımı güncelleyicisi, bir sıcaklık sensörü okuyucusundan farklı bir iş akışına ihtiyaç duyar ve bir klavye yapılandırma aracı belirli bir HID usage page ve rapor formatı gerektirebilir.

Tarayıcı filtreleri desteklediğinde seçici filtrelenmeli ve erişim verilmeden önce üretici ile ürün adları gösterilmelidir. Sayfa ne okuyup ne yazacağını ve işlemin kalıcı cihaz durumunu değiştirip değiştiremeyeceğini açıklamalıdır. İşlemden sonra arayüz serbest bırakılmalı ve cihaz kapatılmalıdır; böylece başka bir uygulama onu kullanabilir.

Seri cihazlar ekstra özen hak eder. Yazı, seri yolu ve baud yapılandırmasını isteğin bir parçası olarak ele alıyor; çünkü bir yönetim konsoluna veya mikrodenetleyici bootloader'ına rastgele baytlar yazabilen bir sayfa, yalnızca bir sensör değeri okuyan sayfadan daha fazla yetki taşıyor. Donanım izin veriyorsa salt okunur ve yazma yetkili rollerin ayrılmasını öneriyor.

Günlükleme ve hata davranışı

Günlükler origin'i, izin kararını, cihaz sınıfını, işlemi, sonucu ve kullanıcı bağlamını kaydetmeli; aynı zamanda kararlı bir dahili varlık kimliği yeterliyse tam cihaz seri numaralarından kaçınmalıdır. Bağlantı kesilmeleri ve izin geri almaları normal durumlar olarak ele alınmalıdır: uygulama yetkili bir yazmayı otomatik olarak yeniden denemek yerine kapalı şekilde başarısız olmalı ve durumu açıklamalıdır.

Politikanın çözmediği şeyler

Yazı sınırlar hakkında açık. Bu API'ler genel bir uç nokta güvenlik sınırı değildir: yerel sürücüler hâlâ savunmasız olabilir, kötü niyetli cihazlar hâlâ beklenmeyen veri gönderebilir ve daha güçlü host izinlerine sahip bir tarayıcı uzantısı sayfadan fazlasını görebilir. Web izni yalnızca tarayıcı aracılığındaki yolu düzenler. Savunma değeri daha dardır — hangi origin'lerin belirli donanıma hiç erişebileceğini kısıtlar.

Neden önemli

Donanım erişimi bir web yeteneği hâline geldikçe güvenlik sınırı, yükleyicilerden ve işletim sistemlerinden origin'e ve onun içinde çalışan her şeye, üçüncü taraf bağımlılıklar ve gömülü frame'ler dahil, kayıyor. Izın verici bir varsayılan, ele geçirilmiş tek bir script'i donanım yazılımı güncelleyicilerine, bootloader'lara ve yönetim konsollarına giden olası bir yola dönüştürüyor. Yazının önerdiği çare ucuz ve standartlara dayalı: cihaz API'lerini varsayılan olarak reddedin, yalnızca ayrılmış sayfalarda devredin, seçiciyi filtreleyin, bir kullanıcı eylemi isteyin ve cross-origin frame'leri test edin. Bu bileşim, bir cihaz iş akışını hassas bir ağ uç noktası veya bir dosya izni kadar görünür ve denetlenebilir kılar; tarayıcı tabanlı donanım erişiminin de tam olması gereken yer burasıdır.

  • #webusb
  • #webhid
  • #web-serial
  • #web-security
  • #browser-apis
  • #permissions-policy