Түүхий блок төхөөрөмжийн өгөгдлийг унших боломжийг олгодог XFS-ийн эмзэг байдал

XFS файлын системийн кодонд сул тал (CVE-2021-4155) тогтоогдсон бөгөөд энэ нь орон нутгийн эрхгүй хэрэглэгч ашиглагдаагүй блок өгөгдлийг блок төхөөрөмжөөс шууд унших боломжийг олгодог. XFS драйвер агуулсан 5.16-аас дээш хувилбар бүхий Linux цөмийн бүх үндсэн хувилбарууд энэ асуудалд өртөж байна. Засварыг 5.16 хувилбар болон цөмийн 5.15.14, 5.10.91, 5.4.171, 4.19.225 гэх мэт шинэчлэлтүүдэд оруулсан болно. Түгээлтийн асуудлыг засахын тулд үүсгэж буй шинэчлэлтүүдийн статусыг дараах хуудсуудаас хянах боломжтой: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Энэ эмзэг байдал нь цөмийн өргөн цар хүрээтэй fallocate() системийн дуудлагын функциональ аналог болох XFS тусгай ioctl(XFS_IOC_ALLOCSP) болон ioctl(XFS_IOC_FREESP)-ийн буруу үйлдлээс үүдэлтэй. Блоктой зэрэгцүүлээгүй файлын хэмжээг нэмэгдүүлэх үед ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP нь дараагийн блокийн хил хүртэл сүүлний байтыг тэг болгохгүй. Тиймээс, 4096 байт стандарт блокийн хэмжээ бүхий XFS дээр халдагч блок бүрээс өмнөх бичсэн 4095 байт хүртэлх өгөгдлийг унших боломжтой. Эдгээр хэсэгт устгасан файлууд, дефрагментлагдсан файлууд болон давхардсан блок бүхий файлуудын өгөгдлийг агуулж болно.

Та энгийн ашиглалтын прототип ашиглан системээ шалгаж болно. Хэрэв санал болгож буй тушаалын дарааллыг гүйцэтгэсний дараа Шекспирийн текстийг унших боломжтой бол FS драйвер нь эмзэг болно. Эхлээд үзүүлэхийн тулд XFS хуваалтыг холбоход root эрх шаардлагатай.

ioctl(XFS_IOC_ALLOCSP) болон ioctl(XFS_IOC_FREESP) нь стандарт fallocate()-тай бараг ижил байдаг ба тэдгээрийн цорын ганц ялгаа нь өгөгдөл алдагдах тул тэдгээрийн оршихуй нь арын хаалгатай төстэй юм. Цөм дэх одоо байгаа интерфэйсүүдийг өөрчлөхгүй байх ерөнхий бодлогыг үл харгалзан Линусын санал болгосноор эдгээр ioctls-ийг дараагийн хувилбарт бүрэн устгахаар шийдсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх