GitLab是一個(gè)利用Ruby on Rails開(kāi)發(fā)的開(kāi)源應(yīng)用程序,實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),可通過(guò)Web界面進(jìn)行訪問(wèn)公開(kāi)的或者私人項(xiàng)目。2016年11月3日,美國(guó)眾測(cè)平臺(tái)HackerOne公布了GitLab的目錄遍歷漏洞。漏洞的發(fā)現(xiàn)者為Jobert Abma,同時(shí)表示該漏洞可導(dǎo)致遠(yuǎn)程命令執(zhí)行。
漏洞預(yù)覽
從GitLab 8.9開(kāi)始,GitLab允許用戶導(dǎo)入或者導(dǎo)出他們的TAR文件。在8.13.0版本之前,這個(gè)功能是只有管理員才可以使用。8.13.0版本之后,這個(gè)功能開(kāi)放給的用戶進(jìn)行使用,只要有管理員許可。由于GitLab沒(méi)有檢查符號(hào)鏈接(symlinks),因此經(jīng)過(guò)身份驗(yàn)證的用戶可以檢索任何GitLab賬戶中的文件,甚至是secret tokens等敏感信息。因?yàn)樵撀┒纯梢栽L問(wèn)到secret tokens,有了secret后,cookie可以在GitLab中被marshalled和resigned,所以該漏洞又可以導(dǎo)致遠(yuǎn)程命令執(zhí)行。
漏洞編號(hào)
CVE-2016-9086。
影響版本
8.13.0至8.13.2
8.12.0至8.12.7
8.11.0至8.11.9
8.10.0至8.10.12
8.9.0至8.9.11
修復(fù)方式
GitLab官方強(qiáng)烈建議所有的用戶請(qǐng)立刻對(duì)自己的GitLab進(jìn)行升級(jí)。但是注意,版本號(hào)為8.9.0至8.9.11并沒(méi)有相關(guān)補(bǔ)丁。如果沒(méi)有辦法進(jìn)行升級(jí),或者無(wú)修復(fù)補(bǔ)丁,可以采取以下方法修補(bǔ)該漏洞。
1.選擇Admin Area
2.點(diǎn)擊settings
3.在import sources下面關(guān)閉GitLab export這個(gè)選項(xiàng)
4.點(diǎn)擊save
驗(yàn)證修復(fù)
1.首先在瀏覽器登陸任意GitLab賬號(hào)
2.點(diǎn)擊Projects
3.點(diǎn)擊New Project創(chuàng)建一個(gè)項(xiàng)目
4.輸入任意項(xiàng)目名稱
5.如果里面沒(méi)有出現(xiàn)GitLab export,那么就表示漏洞已經(jīng)修復(fù)