CVE-2022-48998
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: powerpc/bpf/32: Tail call testlərində baş verən Oops xətasının düzəldilməsi test_bpf tail call testləri belə nəticələnir: test_bpf: #0 Tail call leaf jited:1 85 PASS test_bpf: #1 Tail call 2 jited:1 111 PASS test_bpf: #2 Tail call 3 jited:1 145 PASS test_bpf: #3 Tail call 4 jited:1 170 PASS test_bpf: #4 Tail call load/store leaf jited:1 190 PASS test_bpf: #5 Tail call load/store jited:1 BUG: Unable to handle kernel data access on write at 0xf1b4e000 Faulting instruction address: 0xbe86b710 Oops: Kernel access of bad area, sig: 11 [#1] BE PAGE_SIZE=4K MMU=Hash PowerMac Modules linked in: test_bpf(+) CPU: 0 PID: 97 Comm: insmod Not tainted 6.1.0-rc4+ #195 Hardware name: PowerMac3,1 750CL 0x87210 PowerMac NIP: be86b710 LR: be857e88 CTR: be86b704 REGS: f1b4df20 TRAP: 0300 Not tainted (6.1.0-rc4+) MSR: 00009032 <EE,ME,IR,DR,RI> CR: 28008242 XER: 00000000 DAR: f1b4e000 DSISR: 42000000 GPR00: 00000001 f1b4dfe0 c11d2280 00000000 00000000 00000000 00000002 00000000 GPR08: f1b4e000 be86b704 f1b4e000 00000000 00000000 100d816a f2440000 fe73baa8 GPR16: f2458000 00000000 c1941ae4 f1fe2248 00000045 c0de0000 f2458030 00000000 GPR24: 000003e8 0000000f f2458000 f1b4dc90 3e584b46 00000000 f24466a0 c1941a00 NIP [be86b710] 0xbe86b710 LR [be857e88] __run_one+0xec/0x264 [test_bpf] Call Trace: [f1b4dfe0] [00000002] 0x2 (unreliable) Instruction dump: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX ---[ end trace 0000000000000000 ]--- Bu, stek üzərində yazma cəhdidir. Problem 38608ee7b690 ("bpf, tests: Add load store test case for tail call") commit-i ilə əlavə edilmiş testlərdə müşahidə olunur. Bu, tail call-un fərqli stack_depth-ə malik olan bir BPF proqramına yönləndirildiyi üçün baş verir. Hazırda çağırıcı (caller), çağırılan (callee) funksiyanı tail call etdikdə stek olduğu kimi saxlanılır. Lakin çıxış zamanı çağırılan funksiya steki öz xüsusiyyətlərinə əsasən bərpa edir. Buna görə də burada hər işəsalmada r1 səhvən 32 - 16 = 16 bayt artırılır. Bu yanaşma, tail call sayını çağırıcıdan çağırılana stek vasitəsilə ötürmək üçün tətbiq edilmişdi. powerpc32-nin stekində "red zone" olmadığı üçün tail call zamanı stekin olduğu kimi saxlanılması zəruri idi. Lakin BPF freym ölçüsünün fərqli ola biləcəyi nəzərə alınmamışdı. Yeni bir yanaşma tətbiq edilir: tail call zamanı tail call sayını daşımaq üçün r4 registrindən istifadə olunacaq və tələb olunduqda funksiya girişində bu məlumat stekə yadda saxlanılacaq. Bu o deməkdir ki, giriş parametri r3-də olmalıdır, hansı ki, 32 bitlik parametr olduğu üçün daha doğrudur; beləliklə, tail call normal BPF funksiya girişi ilə daha yaxşı uyğunlaşır. Bunun mənfi tərəfi giriş parametrinin r3 və r4 arasında daim yerini dəyişməsidir ki, bu da sonradan optimallaşdırıla bilər. Bunun həmçinin tail call-lar və normal funksiya çıxışı arasındakı ortaq hissələri maksimuma çatdırmaq üstünlüyü var. Düzəlişdən sonra tail call testləri uğurlu tamamlanır: test_bpf: #0 Tail call leaf jited:1 53 PASS test_bpf: #1 Tail call 2 jited:1 115 PASS test_bpf: #2 Tail call 3 jited:1 154 PASS test_bpf: #3 Tail call 4 jited:1 165 PASS test_bpf: #4 Tail call load/store leaf jited:1 101 PASS test_bpf: #5 Tail call load/store jited:1 141 PASS test_bpf: #6 Tail call error path, max count reached jited:1 994 PASS test_bpf: #7 Tail call count preserved across function calls jited:1 140975 PASS test_bpf: #8 Tail call error path, NULL target jited:1 110 PASS test_bpf: #9 Tail call error path, index out of range jited:1 69 PASS test_bpf: test_tail_calls: Summary: 10 PASSED, 0 FAILED, [10/10 JIT'ed]
Necə düzəltmək olar
- linux linux_kernel6.0.12 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 5.13 ≤ v < 6.0.12, 6.1 | 6.0.12 |
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.