Exim遠程命令執行漏洞預警分析
0x00 漏洞詳情
日前,安全研究人員發現Exim郵件服務器存在一個遠程命令執行漏洞,漏洞編號為CVE-2019-10149。該漏洞在默認配置下可被本地攻擊者直接利用,通過低權限用戶執行root權限命令,遠程攻擊者需要修改默認配置。為了在默認配置下遠程利用該漏洞,遠程攻擊者需要與存在漏洞的服務器建立7天的連接(每隔幾分鐘發送1個字節)。
360CERT 判斷此次漏洞影響面廣,可造成本地提權並存在遠程命令執行的風險,危害較為嚴重,建議廣大用戶及時更新。
本地利用
漏洞代碼位於deliver_message()中:
代碼中new->address保存的是郵件的收件人地址,如果將收件人地址寫成${run{<command> <args>}}@localhost,則可以通過expand_string()以root權限執行任意命令。expand_string()的調用關係為:expand_string->child_open->execv
攻擊效果如下:
遠程利用
(1)默認配置
當目標Exim服務器使用默認配置時,攻擊者需要與存在漏洞的服務器建立連接7天(每隔幾分鐘發送1個字節),利用條件較為苛刻,難度大。但由於Exim的代碼非常複雜,可能存在其他能更快速利用的方法。
(2)非默認配置
當目標服務器使用以下配置時,攻擊者可對其進行遠程命令執行
a)管理員手動移除verify = recipient ACL配置;
b)管理員配置Exim可以識別收件人用戶名中的標籤(即@之前的部分),如通過local_part_suffix = + : –,攻擊者可以將RCPT TO設為本地用戶名+${run{…}}@localhost進行利用;
c)管理員配置Exim作為輔MX(Mail eXchange),將郵件轉發至遠程域,此時verify = recipient ACL只檢查遠程地址的域名部分(即@之後的部分),不檢查標籤。攻擊者可以將RCPT TO設為${run{…}}@relay_to_domains進行利用。
0x01 影響版本
影響Exim 4.87~4.91版本
在4.87版本之前如果手動啓用了EXPERIMENTAL_EVENT選項,服務器也會存在漏洞
0x02 修復建議
更新到最新版本4.92
0x03 時間線
2019-05-27 安全研究員向security@exim反饋漏洞報告
2019-05-28 安全研究員向distros@openwall反饋漏洞報告
2019-06-12 360CERT發佈預警分析
0x04 參考鏈接