Ağ anahtarını öldüren suçlu kimdi? 'Hubris bug' hikâyesi
(cliffle.com)Hubris bug hikâyesi: Ağ anahtarını öldüren kimdi?
-
Hubris nedir?
- Hubris, derinlemesine gömülü sistemler için bir işletim sistemidir; klavyenin içi gibi bilgisayar olarak tanınmayan bilgisayarlar için tasarlanmıştır.
- Oxide Rack'te büyük işlemcileri başlatmak için gereken tüm işleri yürütmek üzere geliştirildi.
- Hubris oldukça sıra dışıdır; hikâyeyle ilgili kısım aşağıda açıklanır.
-
Suç mahalli
- Oxide'ın ağ anahtarı firmware'inden sorumlu çalışma arkadaşı Arjen Roodselaar, güç sıralaması ve saat yapılandırmasıyla ilgili değişiklikleri test ediyordu.
- Küçük bir değişiklikten sonra anahtar birden açılmaz hâle geldi.
- Firmware'in bazı bölümleri yanıt veriyordu, ancak güç besleme sırasından sorumlu kritik bölüm durmuştu.
-
Kısıtlı RAM'den daha fazlasını çıkarmak
- Hubris kullanan düşük maliyetli mikrodenetleyicilerde RAM ve flash son derece sınırlıdır.
- Hubris, görev adı verilen ayrı ayrı derlenmiş birçok programdan oluşur; bu yüzden diğer işletim sistemlerine göre kaynak gereksinimi biraz daha yüksektir.
- Çalışma arkadaşı Matt Keeter kısa süre önce sistemi daha akıllı hâle getirerek, mümkün olduğunca çok görevi yerleştirmek için birden fazla 2'nin kuvveti bölge kullanmaya çalıştı.
-
Dumanı tüten silah
- Arjen, Humility adlı Hubris hata ayıklayıcısını kullanarak arızalı ağ anahtarını inceledi.
humility taskskomutuyla işlemci üzerinde çalışan görevlerin listesini ve durum bilgilerini çıkardı.- Güç sıralamasından sorumlu görevin, bellek hatası nedeniyle 115 kez yeniden başlatıldığını keşfetti.
-
Hubris IPC'de Rust borrow kavramını görevler arasına genişletmek
- Hubris görevleri IPC üzerinden birbirlerine mesaj gönderebilir.
- Mesajlar, işlev çağrılarına çok benzer şekilde görünür ve çalışır.
- Bir görev belleği başka bir göreve borrow ettiğinde, gerçekte sahip olmadığı belleği borrow etmeye çalışmamalıdır.
-
Özellikler saldırıya geçtiğinde
- İki özellik birleşerek bir bug'a dönüşebilir.
- Görev paketleme, build sistemi içinde fırsatçı biçimde çalışır.
- Görev A'nın boyutu biraz değişirse, ilgisiz görev B'nin MPU bölge sınırlarının konumu kayabilir.
-
Çağrı içeriden geliyor!
- Bellek koruma algoritmasının değiştirilmesi gerekiyordu.
- Borrow edilen belleğin MPU bölgesini aşmasına izin verilmeliydi.
-
Hubris ile başarısız olmak
- Sistem arızalandığında gerçekleşmeyen birçok şey vardı.
- Bozulan ağ anahtarı 3 saat içinde düzeltilebildi.
- Arıza yalıtımı, güvenli şekilde hata verme, güvenli paylaşımlı bellek, kernel-debugger ortak tasarımı, tasarım ve uygulamadaki sadelik ve ekibin yakın, hiyerarşik olmayan entegrasyonu yardımcı oldu.
GN⁺'un görüşü
- Bu yazı, Hubris adlı işletim sisteminde ortaya çıkan bir bug'ı bulup çözme süreci üzerinden, karmaşık sistemlerde bile sağlam yazılım tasarımının önemini gösteriyor.
- Bug'ın keşfedilmesi ve çözülmesi süreci, yazılım mühendisliğinde karmaşık problemleri çözmede ekip çalışmasının ve verimli hata ayıklama araçlarının önemini vurguluyor.
- Hubris gibi sistemler kullanılırken, sistem yalıtımı ve arıza yönetimi özelliklerinin ne kadar kritik olduğunu gösteriyor. Bu, sistemin kararlılığını ve bakım yapılabilirliğini büyük ölçüde artırabilir.
- Bu yazı ayrıca, güvenli bir programlama dili olan Rust kullanarak bellek güvenliğinin nasıl sağlanabileceğini ve bug'ların nasıl en aza indirilebileceğini gösteriyor. Rust kullanan sistemlerde bu tür bug'lar nadiren görülür; bu da Rust'ın bellek güvenliği garantilerinin pratikte ne kadar etkili olduğunu kanıtlıyor.
- Benzer işlevlere sahip diğer proje veya ürünler arasında seL4, FreeRTOS ve Zephyr bulunuyor; bunların her biri farklı amaç ve özelliklere sahip gömülü sistem işletim sistemleridir.
- Hubris gibi sistemleri benimserken bellek kısıtları, görev yönetimi ve IPC mekanizmasının tasarımı gibi etkenler dikkate alınmalıdır. Bu tür sistemleri seçmenin avantajları sağlam sistem tasarımı ve güvenli bellek yönetimidir; dezavantajları ise sistemin karmaşıklığı ve öğrenme eğrisi olabilir.
1 yorum
Hacker News görüşleri
Hubris çekirdek kod incelemesi
İş ilanına övgü
Kod incelemesi ve öneri
TaskDesc::regionsdokümantasyon metnine eklemek iyi olabilir.Hata ayıklama sürecine değerlendirme
Oxide ekibinin kültürüne ilgi
İlgili bilgi bağlantısı
Hata ayıklarken ortaya çıkan sorunla empati
Donanım işleme üzerine öneri
Oxide’ın çalışmasına övgü
İşletim sistemi adına tepki