WebUSB Desteği Eksikliğini Aşmak İçin Firefox Hackleme Yöntemi
(github.com/ArcaneNibble)> "WebUSB'ye ihtiyacımız yok!"
- Web sayfalarının WebUSB olmadan USB cihazlarına erişmesinin bir yolu var. Ayrıca cihazlar, kullanıcı onayı gereksinimlerini aşacak şekilde tasarlanabilir.
Hızlı demo
u2f-hax.uf2, Raspberry Pi Pico'ya yükleniyor veindex.html, localhost'tan veya başka bir güvenli bağlamdan açılıyor.- "On!" ve "Off!" düğmeleri LED'i açıp kapatıyor;
GP22pininin durumu da sayfada düzenli olarak güncelleniyor.
Bu nasıl mümkün?
- Pico, bir U2F dongle'ını (fiziksel iki aşamalı güvenlik anahtarı) taklit edecek şekilde programlanıyor.
- Güvenlik işlevi yerine, rastgele veriler
U2F_AUTHENTICATEmesajının "key handle" alanına ve imzaya gizleniyor. - Key handle
0xfeedfaceile başlıyorsa, Pico kullanıcı varlığını anında "doğruluyor" ve veriyi geri döndürüyor.
Neden mümkün?
- U2F key handle'ları, güvenlik dongle'ının "sahip olduğu" opak veri blokları olarak tasarlanmıştır.
- Düşük maliyetli dongle'ların birçok web sitesiyle ilişkilendirilebilmesi için böyle tasarlanmıştır.
- Dongle, dahili olarak benzersiz bir "master" kriptografik anahtar saklar ve kayıt sırasında yeni bir açık/gizli anahtar çifti üretip geri döndürür.
- Key handle opak biçimde işlendiği için içine rastgele veri gizlenebilir.
Veriyi geri döndürme yöntemi
- Veriler ECDSA imzasının içine gizleniyor.
- İmza iki sayıdan (
r,s) oluşur ve her sayı belirli bir aralık içinde hesaplanır. - Chrome, imzadaki sayıların aralık içinde olup olmadığını kontrol ederken Firefox bunu kontrol etmiyor.
- Chrome'un varsayılan doğrulamasını aşmak için her sayının ilk baytı
0x7folarak ayarlanıyor.
Bu bir güvenlik açığı mı?
- Hayır; rastgele USB cihazlarına erişim sağlanamıyor.
- Yalnızca kuralları bilerek ihlal eden cihazlarda çalışıyor.
- USB cihazlarının güvenlik modeli çoğu platformda zaten tartışmalı.
- Bilinmeyen rastgele cihazları bilgisayarınıza bağlamamalısınız.
1 yorum
Hacker News görüşleri
Bu başlık ağırlıklı olarak WebUSB hakkında; OP ile ilgili değil. WebUSB harika bir hack
Firefox rastgele USB cihazlarıyla iletişimi desteklemiyor. Ancak U2F güvenlik anahtarlarıyla USB iletişimini destekliyor
WebUSB kullananlar bunun harika olduğunu söylüyor, kullanmayanlar ise neden gerekli olduğunu anlamıyor
QMK/Via firmware’li bir klavyeyi WebUSB ile özelleştirmek tam bir kâbus
/dev/hidrawcihazını tamamen okuyabilmesi gerekiyorUSB Serial harika bir araç ve artık tarayıcı kullanarak cihaz yapılandırmaya yarayan bir araç listesi var
Cihazlara sık sık firmware yazan kişiler için faydası açık. Ancak sıradan kullanıcılar için önemli değil
USB portlarının tarayıcı tabanlı kod tarafından kullanılmaması daha iyi olabilir
Pixel telefona GrapehenOS yazmak, yaşadığım en rahat ve en hızlı OS kurulum deneyimlerinden biriydi
Özel anahtarı bir "master" anahtarla şifreleyip, şifrelenmiş özel anahtarı key handle olarak döndürüyor
WebUSB ile ilgili politik bir tartışma var