CVE-2023-52854
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: padata: padata_free_shell() fonksiyonundaki refcnt yönetimi düzeltildi Yüksek yük altındaki bir arm64 ortamında, LTP içerisindeki pcrypt_aead01 testi sistemde UAF (Use-After-Free - serbest bırakıldıktan sonra kullanım) sorunlarına yol açabilmektedir. pcrypt_aead01 fonksiyon çağrısının analizi uzun sürdüğü için, problem senaryosu basitleştirilmiş bir modelle açıklanacaktır: Aşağıdaki kodda gösterildiği gibi, serial() çağrıldıktan sonra padata_free_shell fonksiyonunu çağırma gereksinimine uyan `user_function` adlı bir padata kullanıcısı olduğunu varsayalım: ```c struct request { struct padata_priv padata; struct completion *done; }; void parallel(struct padata_priv *padata) { do_something(); } void serial(struct padata_priv *padata) { struct request *request = container_of(padata, struct request, padata); complete(request->done); } void user_function() { DECLARE_COMPLETION(done) padata->parallel = parallel; padata->serial = serial; padata_do_parallel(); wait_for_completion(&done); padata_free_shell(); } ``` İlgili padata.c dosyasında şu kod yer almaktadır: ```c static void padata_serial_worker(struct work_struct *serial_work) { ... cnt = 0; while (!list_empty(&local_list)) { ... padata->serial(padata); cnt++; } local_bh_enable(); if (refcount_sub_and_test(cnt, &pd->refcnt)) padata_free_pd(pd); } ``` Sistemdeki yüksek yük ve bu sırada yürütülmemiş softirq birikmesi nedeniyle, padata içindeki `local_bh_enable()` normalden daha uzun sürede çalışmaktadır. Sonrasında `pd->refcnt` erişilmeye çalışıldığında, `pd` zaten `padata_free_shell()` tarafından serbest bırakılmış olduğundan, `pd->refcnt` ile ilgili bir UAF sorunu oluşmaktadır. Çözüm basitçe şudur: `padata_free_shell` içinde `padata_free_pd` çağrılmadan önce `refcount_dec_and_test` eklenmiştir.
Nasıl düzeltilir
- linux linux_kernel3.17, 4.5, 4.10, 4.15, 4.20, 5.5, 5.10.201, 5.15.139, 6.1.63, 6.5.12, 6.6.2 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 3.16.84 ≤ v < 3.17, 4.4.215 ≤ v < 4.5, 4.9.215 ≤ v < 4.10, 4.14.172 ≤ v < 4.15, 4.19.103 ≤ v < 4.20, 5.4.19 ≤ v < 5.5, 5.5.3 ≤ v < 5.10.201, 5.11 ≤ v < 5.15.139, 5.16 ≤ v < 6.1.63, 6.2 ≤ v < 6.5.12, 6.6 ≤ v < 6.6.2 | 3.17, 4.5, 4.10, 4.15, 4.20, 5.5, 5.10.201, 5.15.139, 6.1.63, 6.5.12, 6.6.2 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.