CVE-2026-89666
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: nfsd: NFSv3 SETATTR və create əməliyyatlarında diapazondan kənar nseconds dəyərlərini rədd etmək Kliyent, nseconds sahəsi diapazondan kənar olan atime və ya mtime tərkibli NFSv3 SETATTR, CREATE, MKDIR, SYMLINK və ya MKNOD sorğusu göndərə bilər. Dəyər şəbəkədə düzgün formatlanmışdır və uğurla valid uint32 tipinə dekodlaşdırılır, lakin o, valid timespec64 deyil: tv_nsec dəyəri NSEC_PER_SEC-dən kiçik olmalıdır. setattr yolunda bu dəyəri məhdudlaşdıran heç bir mexanizm yoxdur. notify_change() funksiyası zamanı timestamp_truncate() vasitəsilə emal edir, lakin fayl sistemi nanosaniyə dərəcəliliyini (s_time_gran == 1) dəstəklədikdə, timestamp_truncate() tv_nsec dəyərini NSEC_PER_SEC səviyyəsinə endirmir və inode atime/mtime təyinediciləri onu olduğu kimi saxlayır (yalnız ctime inode_set_ctime_to_ts() vasitəsilə normallaşdırılır). Normallaşdırılmamış dəyər daha sonra diskdəki metadata-nı korlayır: ext4-ün ext4_encode_extra_time() funksiyası tv_nsec dəyərini EXT4_EPOCH_BITS qədər sola sürüşdürür, bu isə 32-bitlik əlavə sahənin daşmasına (overflow) və saniyə-epox bitlərinin pozulmasına səbəb olur, nəticədə oxuma zamanı saxlanılan saniyələr (və beləliklə il) yanlış göstərilir. Bigtime istifadə edən XFS eyni səbəbdən vaxt möhürünü yanlış saxlayır. Hər hansı bir dəyişiklik edilməzdən əvvəl proc handler-lərdə kliyentin təqdim etdiyi atime/mtime dəyərlərini yoxlayın və NFS3ERR_INVAL qaytarın. RFC 1813, SETATTR üçün NFS3ERR_INVAL xətasını siyahıya salır və bunu serverin "öz təmsiliyyətində saxlaya bilmədiyi" dəyər üçün xəta kimi təsvir edir; kliyent isə bunu EINVAL ilə əlaqələndirir. Yoxlamanın nfsd_setattr() yerinə proc handler-lərdə aparılması, rəddetmə prosesinin obyektin yaradılmasından əvvəl baş verməsini təmin edir. Create əməliyyatları nfsd_create_setattr() işə düşməzdən əvvəl obyekti yaradır, buna görə də gecikmiş xəta yeni obyektin qalmasına səbəb olar və idempotent olmayan sorğunu, uğursuzluq hesabatı verən ad sahəsi (namespace) dəyişikliyinə çevirər. Buna görə də, create əməliyyatları üçün yoxlama obyekt yaradılmadan əvvəl, öncədən həyata keçirilir. tv_nsec long tipində olduğu üçün müqayisə zamanı o, timespec64_valid() funksiyasına uyğun olaraq u32 yerinə unsigned long (eyni genişlikdə) tipinə çevrilir. u32 çevrilməsi 64-bit sistemlərdə kəsməyə (truncate) səbəb olardı; unsigned long çevrilməsi həmçinin diapazondan kənar u32 şəbəkə nseconds dəyəri 32-bitlik long tipinə təyin edildikdə mənfi hala gələn dəyərləri də rədd edir. Yalnız kliyent tərəfindən təqdim edilən zamanlar yoxlanılır: SET_TO_SERVER_TIME sorğuları kliyent dəyəri daşımır. sattrguard3 ctime qəsdən toxunulmaz saxlanılıb: diapazondan kənar guard sadəcə obyektin ctime dəyəri ilə heç vaxt üst-üstə düşmür və mövcud guardtime müqayisəsi vasitəsilə NFS3ERR_NOT_SYNC qaytarır ki, bu da sorğunu rədd etmək əvəzinə protokol baxımından düzgün nəticədir.
Necə düzəltmək olar
- Linux Linuxcacda0762d7af24a27f7265711bc05095ece56b9, 98fc1d21a7b80324ba64b949ac6bcc00364dd068, 55341d8a5a0f5853e70d46f5a55cf06007808f1d, 54e02f5e32c52fb395f2ee02986a6c6d5608d22b, e2543852152bcf9aeb57da17d9f9219f7df8aafb, eb0eca7720662ba5847df1510e73801f7f473094 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < cacda0762d7af24a27f7265711bc05095ece56b9, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 98fc1d21a7b80324ba64b949ac6bcc00364dd068, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 55341d8a5a0f5853e70d46f5a55cf06007808f1d, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 54e02f5e32c52fb395f2ee02986a6c6d5608d22b, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < e2543852152bcf9aeb57da17d9f9219f7df8aafb, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < eb0eca7720662ba5847df1510e73801f7f473094, 2.6.12 | cacda0762d7af24a27f7265711bc05095ece56b9, 98fc1d21a7b80324ba64b949ac6bcc00364dd068, 55341d8a5a0f5853e70d46f5a55cf06007808f1d, 54e02f5e32c52fb395f2ee02986a6c6d5608d22b, e2543852152bcf9aeb57da17d9f9219f7df8aafb, eb0eca7720662ba5847df1510e73801f7f473094 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.