問題
呼叫 string_interpret_escape() 的程式碼根據實際大小為排出分配一個緩衝區,並且暴露的指標最終位於緩衝區邊界之外的區域。 因此,當嘗試處理輸入字串時,會出現從分配的緩衝區邊界之外的區域讀取資料的情況,並且嘗試寫入未轉義的字串可能導致寫入超出緩衝區的邊界。
在預設配置下,在與伺服器建立安全連線時,可以透過向 SNI 發送專門設計的資料來利用該漏洞。 也可以透過修改為客戶端憑證驗證配置的配置中的peerdn值或匯入憑證時來利用該問題。 從發布開始就可能透過 SNI 和 Peerdn 進行攻擊
漏洞利用原型已準備好透過 SNI 進行攻擊,在具有 Glibc 的 Linux 系統上的 i386 和 amd64 架構上運行。 此漏洞利用堆區域上的資料覆蓋,導致覆蓋儲存日誌檔案名稱的記憶體。 檔案名稱替換為“/../../../../../../../../etc/passwd”。 接下來,包含寄件者地址的變數將被覆蓋,該變數首先保存在日誌中,這允許您向系統新增使用者。
發行版發布的包含漏洞修復的軟體包更新
作為阻止該漏洞的解決方法,您可以停用 TLS 支援或添加
ACL 部分「acl_smtp_mail」:
拒絕條件= ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
拒絕條件= ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
來源: opennet.ru