deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Prusa, araştırmacının Connect hatasını RCE'ye dönüştürmesinin ardından Buddy ürün yazılımındaki 14 açığı yamaladı

Eşgüdümlü bir açıklamada Prusa 3D yazıcı ürün yazılımındaki 14 güvenlik açığı ayrıntılandırılıyor; bunlara Prusa Connect'teki CVSS 8.1 puanlı uzaktan kod çalıştırma açığı da dahil. Hepsinin 7.0.0 üzeri Buddy ürün yazılımında düzeltildiği bildiriliyor.

Prusa, araştırmacının Connect hatasını RCE'ye dönüştürmesinin ardından Buddy ürün yazılımındaki 14 açığı yamaladı

Bir güvenlik araştırmacısı, Prusa'nın 3D yazıcı ürün yazılımındaki 14 güvenlik açığını açıkladı; bunlardan biri, yazıcının ana denetleyicisinde uzaktan kod çalıştırmaya izin veren Prusa Connect entegrasyonundaki bir hataydı. Açıklama Prusa ile eşgüdümlü yapıldı; şirket kendi güvenlik bültenlerini araştırmacının yazısıyla aynı anda yayınladı ve Hacker News ana sayfasında öne çıkan dixken.de blogundaki o yazıya göre, bildirilen tüm bulguları 7.0.0 sürümü üzeri Buddy ürün yazılımında düzeltti.

Bir haftalık test, 14 bulgu

Yazar, platform mühendisliği ve SRE alanında serbest çalışan ve güvenlik araştırmalarını yan uğraş olarak tanımlayan bir kişi; Ağustos ayında bir haftasını, o anki güncel 6.5.7 ürün yazılımını (build 6.5.7+12836) çalıştıran kişisel bir MK4S'ye saldırmaya harcadı. Bu çaba, yaklaşık 23 ayrı hatayı kapsayan 14 bulgu ortaya çıkardı; bunlar G-code ayrıştırma, Prusa Connect, USB ve FAT depolama yolları, aktarım kurtarma kodu, MMU ve EEPROM işlemlerine yayılıyor. En ciddi sonuç, denetleyicinin ağ üzerinden iletilen kodu çalıştırmasıyla sonlanan bir zincirdi. Tüm bulgular için CVE kimlikleri talep edildi ancak yazı yayınlandığında henüz atanmamıştı.

Manşet açık: PFB-008

Öncül CVSS puanı 8.1 (Yüksek) olan ve fiziksel donanımda yeniden üretilen, PFB-008 olarak izlenen merkezî açık; yazıcıları yönetmek ve baskı işleri göndermek için kullanılan bulut veya kendi sunucunuzda barındırılan servis Prusa Connect'in işlenişinde yer alıyor. Connect bir SEND_FILE_INFO komutu gönderdiğinde, ürün yazılımı komutun yolunu paylaşımlı 512 baytlık bir buffer'a kopyalıyor, ardından dosya adını aynı buffer'a yazıyor ve konumunu, yol dizgesinin sonunu tarayarak buluyor. Bu düzen, yollar 104 baytın altında kaldığı sürece güvenli; tek güvence ise release build'lerde derleme sırasında kaldırılan bir assert().

Yazıya göre 463 baytlık bir yol, dosya adı yazımını buffer'ın sonunun ötesine ve Connect komut planlayıcısının çağrıları yazıcıya iletmek için kullandığı bitişik bir işaretçiye itiyor; böylece bir sonraki sanal çağrı, saldırganın denetimindeki bir işaretçiden geçiyor. İlgili dosyanın var olması bile gerekmiyor, çünkü baytlar herhangi bir şey açılmadan önce kopyalanıyor. Payload kendi kendine yeterli: yol dizgesinin kendisi sahte bir nesne, bir dispatch tablosu ve kodu taşıyor; heap spraying ya da ikinci bir teslim aşaması gerekmiyor. Ayrıca ürün yazılımında stack canary ve _FORTIFY_SOURCE da bulunmuyor; yazar, tam da bunun bir sınır denetimi kaymasını basit bir çökme yerine program sayacının denetimine dönüştürdüğü söylüyor.

Önkoşul, saldırganın yazıcının iletişim kurduğu Connect uç noktasını denetlemesi ya da trafiği yakalaması — bu kategori, ele geçirilmiş bir Connect arka ucu veya o trafik yolunda konumlanan herkesi kapsıyor.

Yöntem: bir fuzzer, bir emülatör ve bir yapay zekâ modeli

Araştırmacı, kullanıcının sağladığı girdinin sisteme girdiği yerlerden — G-code ayrıştırma ve Prusa Connect — başladı; Opus 4.8 yapay zekâ modeli ve bir fuzzer ile çalıştı. Yöntem; ürün yazılımının kendi ayrıştırıcı kodunu AddressSanitizer altında derlemeyi, imzalı gerçek imajı eşleşen bir bellek haritasıyla çalıştırmak için küçük bir Cortex-M emülatörü kurmayı, PrusaLink ve Connect'e milyonlarca mutasyona uğratılmış G-code girdisi ve HTTP isteği fırlatmayı, kapsamlı tersine mühendislik ve paralel kaynak kodu incelemelerini birleştirdi. Yazarın belirttiğine göre en zor adım kullanılabilir bir kontrol akışı ilkelini bulmaktı: aday dispatch noktalarından oluşan yığın içinde tam olarak biri istismar için işe yaradı. Dikkat çekici bir ayrıntı: araştırmacı bu projeden önce hiç Cortex-M assembly yazmamıştı.

Bölünmüş açıklama, düzeltmeler zaten dağıtımda

Bulgular iki paket halinde Prusa'ya gönderildi; satıcının zayıf raporlara fazla, güçlü raporlara az güvenmemesi için bilinçli olarak güven düzeyine göre ayrıldılar. İlk pakette dört bulgu vardı: üçü yazıcının kendi çökme dökümleri ve denetleyicinin tamamen ele geçirilmesiyle gerçek yazıcıda doğrulandı, biri ise yalnızca kaynak kodda doğrulanan bir MMU off-by-one hatasıydı. İkinci pakette AddressSanitizer altında ya da yalnızca kaynak incelemesiyle doğrulanan on bulgu vardı. Her raput tam bir yazı ve mümkün olan yerlerde proof-of-concept kod içeriyordu; yazar ayrıca Prusa'nın geliştiricilerinin süreci tekrarlayabilmesi için tüm araştırma çalışma ağacını — betikler ve yöntemler dahil — devretti. Bültenlerin artık kamuya açık olmasıyla araştırmacı tüm yazıları yayınlıyor ve yazıda listelenen yazıcıların sahiplerini hemen güncelleme yapmaya çağırıyor.

Neden önemli

Bu, yazıcı sahiplerinin harekete geçmesi gereken somut bir güvenlik olayı: ayrıntılar ve proof-of-concept kodu artık kamuya açık, bu yüzden eski ürün yazılımında çalışan etkilenmiş bir Prusa modeli kullanan herkes Buddy ürün yazılımını 7.0.0 üzerine yükseltmeli. Ayrıca yaygın gömülü ürün yazılımı uygulamalarının — tek sınır denetimi olarak bir assert(), stack canary yokluğu, derleyici sertleştirmesi olmaması — küçük bir doğrulama hatasını cihazın tamamen ele geçirilmesine nasıl dönüştürebildiğini gösteriyor. Ve bulut bağlantılı bir yazıcının, kontrol uç noktasının güvenliğini miras aldığının altını çiziyor: Connect servisine güven, ürün yazılımının kendisine güven olmak anlamına geliyor. Olumlu tarafta ise bu olay, satıcı düzeltmeleri, resmi bültenler ve bağımsız, yeniden üretilebilir bir yazının aynı anda ortaya çıktığı temiz bir eşgüdümlü açıklama örneği.

  • #prusa
  • #3d-printing
  • #firmware
  • #security
  • #vulnerability-disclosure

İlgili yazılar