Glibc 2.32 系統庫發布

經過六個月的開發 發表 系統庫發布 GNU C 庫 (glibc) 2.32,完全符合ISO C11和POSIX.1-2017標準的要求。 新版本包含 67 名開發人員的修復。

來自 Glibc 2.32 中實現的 改進 你可以注意:

  • 新增了對 Synopsys ARC HS (ARCv2 ISA) 處理器的支援。 該連接埠至少需要 binutils 2.32、gcc 8.3 和 Linux 核心 5.1 才能運作。 支援三種 ABI 變體:arc-linux-gnu、arc-linux-gnuhf 和 arceb-linux-gnu (big-endian);
  • 載入 DT_AUDIT 和 節中指定的審核模組
    可執行文件的 DT_DEPAUDIT。

  • 對於 powerpc64le 架構,實現了對 IEEE128 long double 類型的支持,在使用“-mabi=ieeelongdouble”選項構建時啟用。
  • 一些 API 帶有 GCC「存取」屬性註釋,這使得在 GCC 10 中編譯時可以產生更好的警告,以檢測可能的緩衝區溢位和其他越界情況。
  • 對於 Linux 系統,函數 pthread_attr_setsigmask_np 和
    pthread_attr_getsigmask_np,它使應用程式能夠為使用 pthread_create 建立的執行緒指定訊號遮罩。

  • 編碼資料、字元類型資訊和音譯表已更新,以支援 Unicode 13.0.0 規範;
  • 新增了新的頭檔,它定義了 __libc_single_threaded 變量,可在應用程式中用於單線程最佳化。
  • 新增了函數 sigabbrev_np 和 sigdescr_np,它們傳回訊號的縮寫名稱和描述(例如,SIGHUP 的「HUP」和「Hangup」)。
  • 新增了函數 strerrorname_np 和 strerrordesc_np,它們傳回錯誤的名稱和描述(例如,EINVAL 的“EINVAL”和“無效參數”)。
  • 對於 ARM64 平台,新增了「--enable-standard-branch-protection」標誌(或 GCC 中的 -mbranch-protection=standard),這使得 ARMv8.5-BTI(分支目標指示器)機制能夠保護執行不應執行的指令集、分支轉換。 阻止轉換到任意程式碼部分是為了防止在使用面向返回的程式設計技術(ROP - 返回導向的程式設計)的漏洞利用中創建小工具;攻擊者不會嘗試將其程式碼放入記憶體中,而是對已經存在的程式碼進行操作以返回控制指令結尾的機器指令,從中建立呼叫鏈以獲得所需的功能)。
  • 對過時功能進行了重大清理,包括刪除“--enable-obsolete-rpc”和“--enable-obsolete-nsl”選項、頭文件。 函式 sstk、siginterrupt、sigpause、sighold、sigrelse、sigignore 和 sigset、陣列 sys_siglist、_sys_siglist 和 sys_sigabbrev、符號 sys_errlist、_sys_errlist、sys_nerr 和 _sys_nerr 以及 Nsys_errlist 也被棄用模組。
  • 預設情況下,ldconfig 已改為使用新的 ld.so.cache 格式,glibc 已支援該格式近 20 年。
  • 已修復的漏洞:
    • CVE-2016-10228 – 在處理不正確的多位元組資料時,使用「-c」選項執行 iconv 公用程式時,會出現循環。
    • CVE-2020-10029 使用偽空參數呼叫三角函數時堆疊損壞。
    • CVE-2020-1752 - 在路徑中擴展對主目錄(“~user”)的引用時,glob 函數中的釋放後使用記憶體存取。
    • CVE-2020-6096 – 在 ARMv7 平台上,memcpy() 和 memmove() 中負參數值的處理不正確,該值決定了複製區域的大小。 允許 在 memcpy() 和 memmove() 函數中處理以某種方式格式化的資料時組織程式碼執行。 值得注意的是,這個問題 留下來 自該資訊公開披露以來近兩個月以及自 Glibc 開發人員收到通知以來五個月內未更正。

來源: opennet.ru

添加評論