TuxCare 團隊識別 CVE-2021-38604,這是 glibc 中的新漏洞
TuxCare團隊負責對新的CVE進行深入分析。這是針對彈出的每個新 CVE 完成的,這些 CVE 直接或間接影響 Linux 生態系統。我們會檢查我們提供服務的發行版是否受到影響。當一個這樣的 CVE 確實影響支持的發行版時,團隊成員會捲起袖子開始深入研究代碼。
在對 CVE-2021-33574 執行這項工作時,我們的團隊成員之一 Nikita Popov 發現了上游 glibc 的問題。事實證明,可能會導致在庫內的特定代碼路徑中觸發分段錯誤的情況。反過來,這可能導致使用庫的應用程式崩潰,從而導致拒絕服務問題。
請記住,glibc 提供了主要的系統原語,並與大多數(如果不是全部)其他 Linux 應用程式(包括其他語言編譯器和解釋器)連結。它是系統中僅次於內核本身的第二重要的元件。
此問題是在 CVE-2021-33574 的原始上游修復程式中引入的,特別是在檔 mq_notify.c 中:
@@ -133,8 +133,11 @@ helper_thread (void *arg) |
雖然free() 調用不受傳遞給它的NULL指標的影響,但 pthread_attr_destroy() 不是。可以確定兩種情況,其中Linux內核將使用消息NOTIFY_REMOVED,同時在data.attr字段中傳遞複製的線程屬性。不幸的是,如果主機應用程式希望 glibc 產生具有預設屬性的線程,則可以在那裡傳遞 NULL 值。在這種情況下,glibc 會在pthread_attr_destroy中取消引用 NULL 指標,從而導致整個過程崩潰。
根據負責任的披露準則,漏洞和代碼修復均已提交給負責 glibc 的團隊,並在 Mitre 請求了 CVE (CVE-2021-38604)。在 glibc 中,它被分配為 bug 28213。這已經被納入上游的glibc。
還向glibc的自動測試套件提交了一個新的測試,以發現這種情況並防止將來發生。有時,不相關的代碼路徑的更改可能會導致代碼中其他位置的行為發生變化,而程式師卻沒有意識到這一點。此測試將捕獲這種情況。
對於上下文,“mq_”函數系列提供符合 POSIX 的消息佇列 API 功能和傳入消息的異步通知,通常用於進程間通信。
相關連結:
https://sourceware.org/git/?p=glibc.git;a=commit;h=42d359350510506b87101cf77202fefcbfc790cb