錦州市廣廈電腦維修|上門維修電腦|上門做系統(tǒng)|0416-3905144熱誠服務(wù),錦州廣廈維修電腦,公司IT外包服務(wù)
topFlag1 設(shè)為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務(wù)項目 服務(wù)報價 維修流程 IT外包服務(wù) 服務(wù)器維護(hù) 技術(shù)文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統(tǒng)|0416-3905144熱誠服務(wù)技術(shù)文章
通過gpg簽名來防止偽造的github commits

作者: 佚名  日期:2017-07-20 16:32:13   來源: 本站整理

 在nVisium 公司內(nèi)部,我們都使用Git辦公,我們經(jīng)常使用github來托管我們的源碼。 我們有很多客戶也是通過git來管理他們程序的源碼。 鑒于此,我們覺得保護(hù)我們自己和客戶托管在Github上的源碼非常重要。
我們最近討論比較多的就是關(guān)于Git中 冒名commit 的問題,舉個栗子,當(dāng)用戶向源碼托管倉庫提交了一個包含用戶Email 地址的commit,對于像Github 或者Bitbucket這種 基于Git協(xié)議的源代碼托管系統(tǒng)來說,這些Email地址都會指向一個特定的Git賬戶。Github 就會標(biāo)記這個commit來自這個commit 中Email所指向的賬戶 。從安全角度來看,利用像Email地址這種已知信息進(jìn)行偽造commit 信息非常有意思。 我們的CTO Ken Johnson  已經(jīng)多次談過這個問題, 但是我們覺得還是有必要繼續(xù)進(jìn)行深入分析研究。
0×01. 偽造commits實例分析
案例1: 以CTO之名 提交代碼
下面是一個簡單的例子,用于展示0×00 中提到的commit 偽造提交問題。
我創(chuàng)建了一個公開的Git 倉庫,然后push 了一個初始化commit

 
從上圖中可以看出,我們的.gitconfig中配置的Email地址為:john.poulin@nvisium.com,這個commit信息中包含了我所配置的Email地址
如果我更改.gitconfig中的郵件地址(如下圖),重新提交,會發(fā)生什么呢?

 
上圖修改.gitconfig中的Email地址為我們CTO的賬戶ken.johnson@nvisium.com
接下來,我們嘗試去提交一些包含惡意代碼或者安全漏洞代碼的commit,作為安全公司的CTO,提交包含漏洞的代碼是非常令人難堪的。 好了,我們以他(CTO)的名義提交了一段基于Rails的含有動態(tài)渲染漏洞的代碼, 如下圖:

然后我們?nèi)ithub上查看提交歷史,看看有什么有趣的事情發(fā)生,如下圖:

我以我們CTO的Email地址提交了一個偽造commit
Github接受了這個提交,顯示是我們的CTO 提交了這段代碼,但是Github認(rèn)為這個Commit中的Email地址沒有和當(dāng)前賬號關(guān)聯(lián),Github 建議我們將commit 中的Email 標(biāo)記為提交者的賬戶關(guān)聯(lián)Email,這個我們稍后再說。
案例2模擬Linus Torvalds 大神 給我們提交代碼
讓我們再來看一個更有說服力的例子, 我們?nèi)タ匆谎畚覀僀TO的github上的一個示例項目
從圖中可以看出來,Linus Torvalds  大神也給這個項目貢獻(xiàn)過commit(Linus Torvalds  大神可是很忙的,實際上大神不可能會提交commit的)
為什么會出現(xiàn)上圖的問題,這是因為Github 沒有對commit 提交進(jìn)行認(rèn)證,我們可以很容易的以他人的名義偽造commit信息。 舉例例子,一般來說,我們的CTO ken 比公司中其他員工更值得信任吧,因此,相比其他員工,一般我們都會更愿意接受來自我們CTO提交的代碼,審核部門的人員對于CTO這種高級別的開發(fā)人員提交的代碼往往審核不嚴(yán)格(一般走個形式就行了)。如果我們以CTO  的名義(Email) 提交commit 信息,那么審核人員往往會通過。這樣就實現(xiàn)了偽造commit信息提交代碼。
案例3 在特定場景下劫持其他人的Github commit
我們發(fā)現(xiàn)另外一種導(dǎo)致安全隱患的場景,在Github上,特定環(huán)境下, 你可以聲稱你是一個老的郵箱的擁有者, 如果這個賬戶處于停用狀態(tài)(也就是說這個停用的賬號和其曾經(jīng)commit中的Email地址沒有關(guān)聯(lián)了),任何人都可以聲稱指定賬號曾經(jīng)的commit是屬于他的。 舉個例子,我們以前就見過這種例子,當(dāng)時,我們給我們CTO的一個舊賬號貢獻(xiàn)了一個commit。
在瀏覽我們自己的代碼倉庫的時候,我們發(fā)現(xiàn)有一個來自我們CTO賬號的commit,當(dāng)我在github上打開的時候,github詢問我是否將commit中的Email地址和本賬號關(guān)聯(lián),很顯然,這引起了我的興趣與注意, 于是將我的賬號與此Email關(guān)聯(lián)在一起了。

一旦我選擇將此Email 與我的賬號關(guān)聯(lián)后, 我在我的賬號設(shè)置中發(fā)現(xiàn),這個剛剛關(guān)聯(lián)的Email地址被Github標(biāo)記為 ‘未認(rèn)證’

一旦我選擇將此Email和我的賬戶關(guān)聯(lián)在一起后,這個Email所有的commit請求都被標(biāo)記是來自我的提交,事實上,在這段時間內(nèi),我壓根沒有用我的賬號提交過任何東西。

  
在這種場景下,如果選擇將賬號和其他人的commit中的Email關(guān)聯(lián), 那么這些來自這個Email的commit 都會屬于我。 如果我的公司以在git上提交的數(shù)量和頻率來考核員工的話,那么我就是贏家, 因為我可以很容易欺騙他們。
0×02. 如何解決commit 偽造的問題
Github已經(jīng)意識到上述這些問題,但他們認(rèn)為這是他們有意設(shè)計的,不是安全隱患。 其實,根本原因是git協(xié)議所致,因為git協(xié)議本身沒有提供對于commit的認(rèn)證。 這里需要說清楚的一點就是,如果你沒有權(quán)限訪問一個代碼倉庫,這些安全隱患是不存在的(也就是不能偽造commit), 也就是說,我沒法利用這些安全隱患去劫持一個私有倉庫。關(guān)于這些問題, 我和github的幾位員工有過交流。 解決這些問題的最好的方式就是利用GPG簽名這些commit。 具體說來就是,當(dāng)你提交commit的時候,github會用commit中的Email對應(yīng)的私鑰簽名你的commit,然后提交之后github會用當(dāng)前賬號的公鑰去校驗這些簽名,如果通過了校驗,這些commit 會被顯示為 ‘verified’.

我強烈建議大家開啟自己Github中的GPG簽名功能,這個功能設(shè)置非常簡單,有關(guān)詳情,你可以參考GitHub操作指南
此外,你如果管理著一個項目,或者你是你們單位的安全工程師,我建議你強制所有的github commit 必須經(jīng)過GPG簽名和認(rèn)證, 這樣就可以確認(rèn)這些commit確實來自這些聲稱者提交的。這樣就不會有了冒名他人提交惡意代碼的情況出現(xiàn)。
Origin Refer: https://nvisium.com/blog/2017/06/21/securing-github-commits-with-gpg-signing/ 



熱門文章
  • 機械革命S1 PRO-02 開機不顯示 黑...
  • 聯(lián)想ThinkPad NM-C641上電掉電點不...
  • 三星一體激光打印機SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數(shù)和判...
  • IIS 8 開啟 GZIP壓縮來減少網(wǎng)絡(luò)請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機始終停留在開機界面...
  • 常見打印機清零步驟
  • 安裝驅(qū)動時提示不包含數(shù)字簽名的解...
  • 共享打印機需要密碼的解決方法
  • 圖解Windows 7系統(tǒng)快速共享打印機的...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯(lián)系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務(wù)區(qū)域: 遼寧錦州市區(qū)
    主要業(yè)務(wù): 修電腦,電腦修理,電腦維護(hù),上門維修電腦,黑屏藍(lán)屏死機故障排除,無線上網(wǎng)設(shè)置,IT服務(wù)外包,局域網(wǎng)組建,ADSL共享上網(wǎng),路由器設(shè)置,數(shù)據(jù)恢復(fù),密碼破解,光盤刻錄制作等服務(wù)

    技術(shù)支持:微軟等
    主站蜘蛛池模板: 无码人妻精品一区二区在线视频| 亚洲高清无码专区视频| 亚洲大尺度无码无码专区| a级毛片无码免费真人久久| 亚洲AV无码成人网站久久精品大| 无码精品A∨在线观看中文| 精品久久亚洲中文无码| 免费无码黄网站在线观看| 亚洲国产精品无码专区在线观看 | 亚洲精品无码成人片久久 | 亚洲AV无码久久精品成人| 在人线av无码免费高潮喷水| 亚洲精品无码你懂的网站| 亚洲AV无码一区二区三区人| 内射人妻无套中出无码| 中文字幕人成无码免费视频| 国产成人无码一区二区三区在线 | 精品无码久久久久国产动漫3d| 国产av激情无码久久| 91久久精品无码一区二区毛片| 亚洲AV蜜桃永久无码精品| 午夜爽喷水无码成人18禁三级| 国产精品久久无码一区二区三区网 | 精品三级AV无码一区| 自拍中文精品无码| 一道久在线无码加勒比| 中文字幕无码亚洲欧洲日韩| 亚洲av中文无码乱人伦在线咪咕| HEYZO无码中文字幕人妻| 中文午夜人妻无码看片| 久久午夜无码鲁丝片秋霞| 国产成人A人亚洲精品无码| 久久久久久av无码免费看大片| 国产精品爆乳奶水无码视频 | 亚洲精品中文字幕无码A片老| 无码一区二区三区视频| 亚洲VA成无码人在线观看天堂| 亚洲精品无码永久中文字幕| 中文字幕无码第1页| 日韩精品无码一区二区三区四区| 无码av中文一二三区|