VSOCK multi-transport refcount race (CVE-2021-26708)¶
Not: Bu kayıt, eskiden "AF_PACKET version-toggle signedness OOB" başlığıyla yanlış etiketlenmişti. CVE-2021-26708 aslında VSOCK multi-transport race condition'ıdır; başlık/summary buna göre düzeltildi (slug geriye dönük link uyumluluğu için korundu). Aynı bug/CVE'nin canonical notu için aşağıdaki linke bakın — bu sayfa o nota yönlendiren bir alias/duplicate'tir.
Mechanism¶
Bu, CVE-2021-26708'in (vsock multi-transport stale-transport race → 4-byte UAF write) bir duplicate'idir. Tam mekanizma için: refcount memory management flaw (CVE-2021-26708).
Konsept olarak kök neden, Linux vsock multi-transport refactor'ında ortaya çıkan bir race condition'dır: bir AF_VSOCK socket'inin transport pointer'ı, bağlantı/lifecycle state'ine göre birden fazla yerde set/clear edilir; ancak bu güncellemeler ilgili socket lock altında tutarlı şekilde serialize edilmediğinden, eşzamanlı operasyonlar pointer'ın stale (dangling) kalmasına yol açabilir. Broken invariant burada şudur: "transport ya geçerli bir live transport'u gösterir ya da NULL'dur" — race penceresinde bu invariant ihlal edilir ve serbest bırakılmış bir object üzerinden işlem yapılır. Saldırgan bu use-after-free durumunu kontrollü bir 4-byte write primitive'ine dönüştürerek, freed slot'a sıkıştırdığı başka bir kernel object'in bir alanını bozar ve buradan kademeli olarak güçlü bir R/W primitive'e escalate eder. Upstream fix, transport state geçişlerini doğru lock'lama ile koruyarak bu race penceresini kapatır.
Walkthrough¶
Tam walkthrough canonical not'ta: refcount memory management flaw (CVE-2021-26708).