GitLab於昨日發布了8.17.4、8.16.8和8.15.8版本(社區版和企業版),修復多個高危漏洞,包含一個針對關鍵信息泄露漏洞的更新補丁,針對SSRF攻擊的防護,以及針對可導致Atom源中私有郵件地址泄露漏洞的補丁,ElasticSearch中私有庫數據泄露的補丁等。
GitLab特別在其更新日誌中提到,在內部代碼審核過程中,在GitLab Issue和Merge Request tracker中發現一個Critical級別的高危漏洞,並因此強烈建議受影響用戶儘快升級。
漏洞編號
CVE-2017-0882
漏洞介紹
漏洞可導致擁有向其他用戶發送issue或merge請求許可權的攻擊者獲取到該用戶的private token, email token, email地址和加密的OTP secret。想要利用漏洞需要有Reporter級別的許可權。通過Gitlab API和這些敏感信息,就能以該用戶許可權進行操作,如果目標用戶是管理員則可能產生更大危害。
造成漏洞的原因是對用戶對象序列化過程中的一個bug,這個問題自GitLab 8.7.0版本就開始出現。
影響版本
8.7.0至8.15.7
8.16.0至8.16.7
8.17.0至8.17.3
升級后注意事項
由於漏洞的性質,用戶的token可能會緩存在代理或瀏覽器中。因此建議站長們重置所有用戶的private token和email token。
一次性密碼(OTP)的secret也有可能因漏洞而泄露。這些secret都經過加密,需要密鑰才能解密,並且不能在沒有用戶密碼的情況下使用。儘管如此, 還是建議先將一次性密碼功能關閉然後再重新打開,從而重置OTP secret。
重置用戶Tokens步驟
使用Omnibus的用戶將下面的源碼保存到: /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/reset_token.rake
/lib/tasks/reset_token.rake
Omnibus用戶運行
sudo gitlab-rake tokens:reset_allsudo gitlab-rake tokens:reset_all_email
源碼用戶運行
sudo -u git -H bundle exec rake tokens:reset_all RAILS_ENV=production sudo -u git -H bundle exec rake tokens:reset_all_email RAILS_ENV=production
執行完所有操作后可以把rake文件刪除。
對於某些無法升級的用戶可以使用以下的補丁:
$ cd /opt/gitlab/embedded/service/gitlab-rails/$ git apply$ sudo gitlab-ctl restart unicorn源碼用戶:
$ cd
檢驗漏洞是否修復
打開項目;
打開項目的issue跟蹤器;
創建一個issue,將issue擁有許可權分配給另一個用戶;
查看返回的JSON,檢查其中是否有敏感信息。
相關本次發布GitLab新版本修復的更多漏洞,如SSRF漏洞、關鍵信息泄露漏洞等內容可參見GitLab的安全公告。
*參考來源:GitLab,本文作者:Sphinx,轉載請註明來自FreeBuf(FreeBuf.COM)