全部產品
Search
文件中心

Alibaba Cloud Linux:Alibaba Cloud Linux系統禁用AF_ALG協議族緩解方案

更新時間:May 09, 2026

本文介紹 CVE-2026-31431 Linux 核心本地提權漏洞的風險及緩解方案。該方案通過禁用 AF_ALG socket 建立能力阻斷漏洞利用路徑,適用於業務不依賴 AF_ALG socket 的情境。

警告
  1. 部署本方案後,依賴 AF_ALG socket 的業務進程將無法建立相關通訊端,可能導致業務不可用。如果無法 100% 確認業務是否依賴 AF_ALG socket,禁止部署本方案。

  2. 本方案存在一定穩定性風險,必須按照灰階策略逐步上線,嚴禁直接全量部署至生產環境。

  3. 灰階部署期間,請密切關注相關業務的穩定性、錯誤記錄檔及效能指標,發現異常請及時復原。

漏洞背景

CVE-2026-31431 是 Linux 核心 algif_aead 模組中存在的高危本地許可權提升漏洞。

攻擊者通過構造特定的 AF_ALG socket 調用序列,並結合 splice() 系統調用繞過常規許可權檢查,實現對任意檔案頁緩衝(Page Cache)的 4 位元組越權寫入。

攻擊者可利用該能力篡改 /usr/bin/su 等 setuid 程式的記憶體映像,在不修改磁碟檔案內容的情況下,實現從普通使用者到 root 許可權的本地提權。

漏洞詳情請參考:【漏洞通告】Linux Kernel 本地許可權提升漏洞風險通告(CVE-2026-31431)

緩解方案局限性

本緩解方案會導致依賴 AF_ALG socket 的加解密功能不可用,可能對依賴加解密功能的業務產生影響。實施前請務必評估業務是否存在對 AF_ALG socket 的依賴。如果無法確認業務是否依賴 AF_ALG socket 功能,請勿採用本緩解方案。

本節提供一些參考方法,用於檢查業務是否依賴 AF_ALG socket 使用核心密碼編譯演算法介面。可以通過 auditd 或 eBPF 等方式檢查機器上是否存在 AF_ALG socket 建立行為,以下為基於 auditd 的樣本:

# 首先確保 auditd 服務已啟用
systemctl start auditd

# 如系統已配置其他 audit 規則,請先備份並評估影響
# 下發對 AF_ALG socket 的審計規則
auditctl -a always,exit -F arch=b64 -S socket -F a0=38 -k afalg_socket

# 運行一段時間後,查看審計結果
ausearch -k afalg_socket -ts recent -i

# 預期結果:如果統計期間有進程建立過 AF_ALG socket,將會輸出審計記錄

# 結束後刪除對 AF_ALG socket 的審計規則
auditctl -d always,exit -F arch=b64 -S socket -F a0=38 -k afalg_socket
說明

以上排查方法僅供參考,不能完全排除業務對 AF_ALG 的依賴關係。仍建議結合業務原始碼、依賴列表以及實際運行情況進行完整核查。

部署方法

重要

在執行以下部署步驟前,請確認業務不依賴 AF_ALG socket 功能,並能夠接受 AF_ALG 相關功能受限帶來的影響。

步驟一:檢查依賴條件

部署本方案前需滿足以下條件:

  1. 核心已啟用 livepatch 支援。

  2. 已安裝當前運行核心版本對應的 kernel-devel 包。

# 1. 確認 kernel-devel 包已安裝
# 檢查當前運行核心版本對應的 kernel-devel 包是否已安裝
test -d "/lib/modules/$(uname -r)/build" && echo "kernel-devel OK" || echo "請安裝 kernel-devel-$(uname -r)"

# 如果需要手動安裝 kernel-devel 包
sudo yum install -y kernel-devel-$(uname -r)

# 2. 確認核心已啟用 livepatch 支援
test -d /sys/kernel/livepatch && echo "livepatch sysfs OK"

步驟二:根據作業系統版本安裝對應 RPM 包

# 1. 下載對應作業系統版本的 RPM 包(RPM 包下載地址採用白名單授權機制,請通過DingTalk群179525012975擷取下載連結)

# 2. 根據作業系統版本安裝對應的 RPM 包,例如,對於 Alibaba Cloud Linux 3:
sudo yum install disable-af-alg-livepatch-1.0.0-1.al8.noarch.rpm
更換運行中的核心版本後,需要重新安裝對應 RPM 包才會生效。

步驟三:驗證緩解方案是否生效

方法一:檢查 livepatch 狀態

適用於 Alibaba Cloud Linux 3 與 Alibaba Cloud Linux 4:

# 查看 livepatch 生效狀態
kpatch list

# 預期輸出:Loaded patch modules: 列表中包含 disable_af_alg [enabled] 條目視為生效

方法二:驗證 AF_ALG socket 是否被攔截

執行以下 Python 指令碼:

python3 - <<'PY'
import socket, errno
try:
    s = socket.socket(38, socket.SOCK_SEQPACKET, 0)  # 38 = AF_ALG
    print("AF_ALG socket create: SUCCESS (緩解方案未生效)")
    s.close()
except OSError as e:
    if e.errno == errno.EAFNOSUPPORT:
        print(f"AF_ALG socket create: FAILED(緩解方案生效)")
    else:
        print(f"AF_ALG socket create: FAILED(返回非預期錯誤),errno={e.errno}, msg={e.strerror}")
PY

復原方法

如果部署後出現業務異常,可通過以下方式卸載緩解方案:

sudo yum remove disable-af-alg-livepatch

卸載完成後,可再次執行驗證指令碼,確認對 AF_ALG socket 的攔截已被移除。