XFS'de ham blok cihaz verilerinin okunmasına izin veren güvenlik açığı

XFS dosya sistemi kodunda, yerel ayrıcalıkları olmayan bir kullanıcının kullanılmayan blok verilerini doğrudan bir blok cihazdan okumasına izin veren bir güvenlik açığı (CVE-2021-4155) belirlendi. Linux çekirdeğinin XFS sürücüsünü içeren 5.16'dan eski tüm ana sürümleri bu sorundan etkilenmektedir. Düzeltme, 5.16 sürümünün yanı sıra 5.15.14, 5.10.91, 5.4.171, 4.19.225 vb. çekirdek güncellemelerine dahil edildi. Dağıtımlardaki sorunu düzeltmek için oluşturulan güncellemelerin durumu şu sayfalardan takip edilebilir: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Güvenlik açığı, çekirdek çapında fallocate() sistem çağrısının işlevsel bir benzeri olan XFS'ye özgü iki ioctl(XFS_IOC_ALLOCSP) ve ioctl(XFS_IOC_FREESP) öğesinin hatalı davranışından kaynaklanmaktadır. Blok hizalı olmayan bir dosya boyutunu arttırırken, ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP, bir sonraki blok sınırına kadar kuyruk baytlarını sıfıra sıfırlamaz. Böylece, standart blok boyutu 4096 bayt olan XFS'de, bir saldırgan her bloktan 4095 bayta kadar önceden yazılmış veriyi okuyabilir. Bu alanlar silinmiş dosyalardan, birleştirilmiş dosyalardan ve tekilleştirilmiş bloklara sahip dosyalardan veriler içerebilir.

Basit bir yararlanma prototipi kullanarak sisteminizde sorun olup olmadığını test edebilirsiniz. Önerilen komut dizisini yürüttükten sonra Shakespeare'in metnini okumak mümkünse, FS sürücüsü savunmasızdır. Gösterim amacıyla bir XFS bölümünün başlangıçta montajı, kök ayrıcalıkları gerektirir.

ioctl(XFS_IOC_ALLOCSP) ve ioctl(XFS_IOC_FREESP) pratik olarak standart fallocate() ile işlevsellik açısından aynı olduğundan ve aralarındaki tek fark veri sızıntısı olduğundan, varlıkları bir arka kapıya benzer. Çekirdekteki mevcut arayüzlerin değiştirilmemesi yönündeki genel politikaya rağmen Linus'un önerisi üzerine bir sonraki sürümde bu ioctl'lerin tamamen kaldırılmasına karar verildi.

Kaynak: opennet.ru

Yorum ekle