華文網

Samba遠端代碼執行漏洞(CVE-2017-7494)分析

作者: cyg07 && redrain

概述

Samba是在Linux和UNIX系統上實現SMB協定的一個軟體。2017年5月24日Samba發佈了4.6.4版本,

中間修復了一個嚴重的遠端代碼執行漏洞,漏洞編號CVE-2017-7494,漏洞影響了Samba 3.5.0 之後到4.6.4/4.5.10/4.4.14中間的所有版本。360網路安全中心 和 360資訊安全部的Gear Team第一時間對該漏洞進行了分析,確認屬於嚴重漏洞,可以造成遠端代碼執行。

漏洞簡述

漏洞編號:CVE-2017-7494

危害等級:嚴重

影響版本:Samba 3.5.0 和包括4.6.4/4.5.10/4.4.14中間版本

漏洞描述:2017年5月24日Samba發佈了4.6.4版本,修復了一個嚴重的遠端代碼執行漏洞,該漏洞影響了Samba 3.5.0 之後到4.6.4/4.5.10/4.4.14中間的所有版本。

技術分析

如官方所描述,該漏洞只需要通過一個可寫入的Samba用戶許可權就可以提權到samba所在伺服器的root許可權(samba默認是root用戶執行的)。

從Patch來看的話,is_known_pipename函數的pipename中存在路徑符號會有問題:

再延伸下smb_probe_module函數中就會形成公告裡說的載入攻擊者上傳的dll來任意執行代碼了:

具體攻擊過程:

構造一個有’/’ 符號的管道名或路徑名,如 “/home/toor/cyg07.so”

通過smb的協議主動讓伺服器smb返回該FID

後續直接請求這個FID就進入上面所說的惡意流程

具體攻擊結果如下:

1.嘗試載入 “/home/toor/cyg07.so” 惡意so

2.其中so 代碼如下(載入時會調用 samba_init_module 匯出函數)

3.最後我們可以在/tmp/360sec中看到實際的執行許可權(帶root許可權)

PoC

暫不公開

解決方案

360網路安全回應中心和360資訊安全部建議使用受影響版本的使用者立即通過以下方式來進行安全更新操作,

2.使用二進位分發包(RPM等方式)的使用者立即進行yum,apt-get update等安全更新操作;

緩解策略:用戶可以通過在smb.conf的[global]節點下增加 nt pipe support = no 選項,然後重新開機samba服務, 以此達到緩解該漏洞的效果。