Redis修正其阻塞用戶端程式碼中一個釋放後使用漏洞,該漏洞允許已認證用戶在託管資料庫機器上執行任意作業系統命令。該漏洞由一款專為大型程式碼庫漏洞搜尋而開發的自主AI工具發現。該漏洞編號為CVE-2026-23479,最初在Redis 7.2.0版本中引入,並在所有穩定分支中一直存在,直到2026年5月5日的修復才被發現,此前兩年多時間裡一直未被察覺。NVD將其CVSS 3.1評分為8.8 分;Redis將其CVSS 4.0評分為7.7 分。該漏洞由Team Xint Code 報告,完整的技術文件現已公開。
雲端環境加劇此問題。Wiz分析(與漏洞利用檔案一同發布):Redis部署在絕大多數雲端環境中,其中大多數實例在未設定密碼的情況下運行。該漏洞利用需要透過身份驗證建立會話,但在預設部署中,預設使用者已經擁有該漏洞鏈所需的所有權限。此漏洞存在於src/blocked.c檔案中的unblockClientOnKey()函數中,該函數會在按鍵事件喚醒被阻塞的命令時觸發。此函數透過processCommandAndResetClient()函數分發已排隊的命令,然後繼續使用相同用戶端指標。問題在於該函數可能會以副作用形式釋放客戶端,而其頭部註釋也明確指出了這一點。呼叫者忽略了回傳值,仍然讀取已釋放的結構體,這屬於釋放後使用CWE-416)。
根據Wiz分析,該漏洞由兩次提交造成。2023年1月的重構(PR #11012)增加未經檢查的呼叫。2023年3月變更(PR #11568)在此之後增加對客戶端的更多存取。單獨來看,這兩次提交都不算危險。共同在7.2.0版本中正式發布,並經受住多輪安全審查。該攻擊鏈首先洩漏一個堆疊位址。然後,釋放一個客戶端,並在同一記憶體空間中插入一個偽造的客戶端,接著利用Redis自身的記憶體統計機制來覆寫一個函數指標。
已發布的版本分三個階段運行如下。
官方的Redis Docker映像簡化最後一步的操作。它僅提供部分 RELRO,導致GOT在運行時可寫入。ASLR和PIE對此無濟於事,因為寫入操作是相對於全域變數的,而全域變數的偏移量在建置時已固定。
完整的鏈需要一個經過驗證的會話,該會話包含CONFIG SET、EVAL、流命(XREAD/XADD)以及基本的 SET/GET操作,分別對應於@admin、@scripting、@stream 和 @read/@write ACL類別。(如下圖所示)

圖:Redis中遠端程式碼漏洞部署鏈
預設使用者擁有所有這些權限,在大多數部署中,這些權限被分組到一個共享的應用程式或操作員角色中。拒絕CONFIG權限會徹底破壞這條特定的權限鏈,但不會破壞底層的釋放後使用漏洞。Xint Code在2025年12月於倫敦舉行的Wiz駭客大賽ZeroDay.Cloud 2025上示範該遠端執行程式碼 (RCE)漏洞。Theori將Xint Code描述為一款自主AI安全工具,尋找大型程式碼庫中的漏洞。
Redis:在其自身或客戶環境中均未發現任何利用該漏洞的證據,也未出現任何公開的利用報告。完整的技術鏈現已公開,增加後續利用的風險。應升級到對應的已修復下列版本7.2.14、7.4.9、8.2.6、8.4.3或8.6.3,所有版本均於2026年5月5日發布。同一系列內的次要版本升級在實現無縫銜接。託管Redis服務會按照各自的計劃進行修補更新,Redis表示Redis Cloud修補更新已經完成。(如下表所示)
表: Redis修補更新表

如果暫時無法修補更新者請將Redis置於非公共網路環境並使用 TLS加密,收縮ACL,確保任何角色都不能同時擁有@admin、CONFIG和@scripting權限,並且如不使用Lua,則禁止@scripting權限,這可消除第一階段的漏洞。優先處理暴露於公共網路實例、共享應用程式憑證以及任何同時擁有CONFIG、腳本和串流存取權限的角色。同時,輪換所有共享Redis憑證。CVE-2026-23479是2026年5月披露的五個Redis遠端程式碼執行 (RCE)漏洞之一,此前 Redis 也存在 RediShell漏洞(2025),這是一個涉及Lua腳本的已認證釋放後使用漏洞。此外,該漏洞也是由AI工具發現。由兩次提交植入,隱藏兩年之久,並一直存在於部署資料庫中,直到匄駭客競賽才將其暴露。程式碼審查從未發現。
本文參考自:https://thehackernews.com/2026/06/autonomous-ai-tool-finds-2-year-old-rce.html