İmtiyazların artırılmasına imkan verən Linux nüvəsi VFS zəifliyi

Linux nüvəsi tərəfindən təmin edilən Fayl Sistemi Kontekst API-də yerli istifadəçiyə sistemdə kök imtiyazları əldə etməyə imkan verən zəiflik (CVE-2022-0185) müəyyən edilib. Problemi müəyyən edən tədqiqatçı standart konfiqurasiyada Ubuntu 20.04-də kodu kök kimi icra etməyə imkan verən istismarın nümayişini dərc etdi. İstismar kodunun paylamalar zəifliyi aradan qaldıran yeniləməni buraxdıqdan sonra bir həftə ərzində GitHub-da yerləşdirilməsi planlaşdırılır.

Zəiflik VFS-də legacy_parse_param() funksiyasında mövcuddur və Fayl Sistemi Kontekst API-ni dəstəkləməyən fayl sistemlərində təqdim edilən parametrlərin maksimum ölçüsünün düzgün yoxlanılmaması nəticəsində yaranır. Çox böyük parametrin ötürülməsi yazılacaq məlumatın ölçüsünü hesablamaq üçün istifadə olunan tam dəyişənin daşmasına səbəb ola bilər - kodda "əgər (len > PAGE_SIZE - 2 - ölçüsü)" bufer daşması yoxlanışı var, bu, yoxdur. ölçü dəyəri 4094-dən çox olarsa işləyin. aşağı hədddən keçən tam ədədin daşması üçün (tam ədədin aşağı axını, imzasız int-ə 4096 - 2 - 4095 köçürərkən nəticə 2147483648-dir).

Bu xəta, xüsusi hazırlanmış fayl sistemi şəklinə daxil olduqda, buferin daşmasına və ayrılmış yaddaş sahəsinin ardınca nüvə məlumatlarının üzərinə yazmağa imkan verir. Zəiflikdən istifadə etmək üçün CAP_SYS_ADMIN hüquqlarınız olmalıdır, yəni. inzibatçı səlahiyyətləri. Problem ondadır ki, sistemdə istifadəçi adları üçün dəstək aktiv olduqda, imtiyazsız istifadəçi bu cür icazələri təcrid olunmuş konteynerdə əldə edə bilər. Məsələn, istifadəçi ad boşluqları Ubuntu və Fedora-da defolt olaraq aktivdir, lakin Debian və RHEL-də aktivləşdirilmir (konteyner izolyasiya platformaları istifadə edilmədikdə).

Problem Linux kernel 5.1-dən bəri ortaya çıxır və dünənki 5.16.2, 5.15.16, 5.10.93, 5.4.173 yeniləmələrində aradan qaldırılıb. Zəifliyi aradan qaldıran paket yeniləmələri artıq RHEL, Debian, Fedora və Ubuntu üçün buraxılıb. Düzəliş Arch Linux, Gentoo, SUSE və openSUSE-də hələ mövcud deyil. Konteyner izolyasiyasından istifadə etməyən sistemlər üçün təhlükəsizlik həlli kimi, sysctl "user.max_user_namespaces" dəyərini 0-a təyin edə bilərsiniz: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/ sysctl.d/userns.conf

Mənbə: opennet.ru

Добавить комментарий