自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從工具到實(shí)踐:如何在GitHub上保障開源項(xiàng)目安全?

安全
比起閉源軟件,開源需要更多地考慮安全問題,因?yàn)槿魏稳硕伎梢圆榭床⑿薷拇a。貢獻(xiàn)者可以發(fā)現(xiàn)錯(cuò)誤并提交一個(gè)PR對(duì)代碼進(jìn)行變更。與此同時(shí),這也伴隨著一系列的安全問題。

1998年,Christine Peterson創(chuàng)造了 “開源軟件”這個(gè)詞。她解釋道:“這是刻意為之,為了讓其他人更容易理解這個(gè)領(lǐng)域”。同年,O’Reilly組織了首屆“開源峰會(huì)”。

開源軟件受到更多人青睞原因在于,用戶對(duì)軟件擁有更多的控制權(quán)因?yàn)樗麄兛梢詸z查代碼。對(duì)于長期項(xiàng)目來說,開源軟件被認(rèn)為是穩(wěn)定的,因?yàn)檫@些項(xiàng)目遵循開放的標(biāo)準(zhǔn),即便維護(hù)者停止工作,也不會(huì)憑空消失。活躍的開發(fā)者社區(qū)十分重要。

比起閉源軟件,開源需要更多地考慮安全問題,因?yàn)槿魏稳硕伎梢圆榭床⑿薷拇a。貢獻(xiàn)者可以發(fā)現(xiàn)錯(cuò)誤并提交一個(gè)PR對(duì)代碼進(jìn)行變更。與此同時(shí),這也伴隨著一系列的安全問題。

什么是軟件供應(yīng)鏈攻擊?

當(dāng)有人利用外部供應(yīng)商或能夠訪問你的企業(yè)的數(shù)據(jù)和系統(tǒng)的第三方組件來滲透你的數(shù)字基礎(chǔ)設(shè)施時(shí),就會(huì)發(fā)生軟件供應(yīng)鏈攻擊。供應(yīng)鏈攻擊的類型多種多樣,本文將聚焦于開源供應(yīng)鏈。

任何人都可以通過開源舉措為項(xiàng)目的開發(fā)做出貢獻(xiàn)。利用這個(gè)切入點(diǎn),黑客可以將漏洞編入開源項(xiàng)目中,當(dāng)企業(yè)將該項(xiàng)目引入其軟件中時(shí)也引入了新的威脅,而且往往是在不知情的情況下,通過遍歷依賴或間接依賴引入。

Web 應(yīng)用安全的重要性

Web 應(yīng)用安全是一個(gè)概念,它涵蓋了一系列嵌入Web應(yīng)用程序的安全管控,以保護(hù)其資產(chǎn)免受潛在的惡意行為的影響。它涉及安全開發(fā)實(shí)踐,在整個(gè)軟件開發(fā)生命周期(SDLC)中實(shí)施安全措施,以發(fā)現(xiàn)項(xiàng)目及其配置中的安全漏洞。

好消息是你可以通過使用不同的應(yīng)用程序及 action 在 GitHub 內(nèi)實(shí)現(xiàn)安全保護(hù),不管是一個(gè)簡單的demo項(xiàng)目,還是大型開源項(xiàng)目?;诖?,開源項(xiàng)目可以擁有與閉源軟件相同的安全水平。

Section 1:GitHub Marketplace 及 GitGuardian 應(yīng)用

什么是 GitHub Marketplace?

2016年的GitHub Universe上,首次引入GitHub Marketplace。它是一個(gè)開發(fā)者可以找到集成插件并將其落實(shí)到工作流程中的地方。

如何利用安全工具創(chuàng)建基礎(chǔ)流水線并實(shí)現(xiàn)防護(hù)?

你可以利用GitHub Marketplace中的安全應(yīng)用和action來保護(hù)你的流水線每個(gè)開發(fā)階段的安全。

一個(gè)基礎(chǔ)的流水線包括:

  • 軟件成分分析工具,專注于識(shí)別代碼庫中的開放源碼,以便維護(hù)者和貢獻(xiàn)者能夠管理它們的安全和許可證合規(guī)問題
  • 防止密鑰泄露的工具
  • 代碼分析工具,它是一種在程序運(yùn)行之前通過檢查源代碼進(jìn)行調(diào)試的方法,一般根據(jù)一組編碼規(guī)則分許一組代碼

如何為你的項(xiàng)目選擇相關(guān)應(yīng)用?你需要考慮些什么?

選擇工具、應(yīng)用或是action 主要取決于你的項(xiàng)目或團(tuán)隊(duì)的工作流程。你們使用的是什么類型的技術(shù)棧?你們是部署到Docker還是使用K8S?在你們的流水線中有多少個(gè)步驟?你能在每個(gè)步驟都實(shí)施防護(hù)嗎?

然后,你將會(huì)找到許多滿足你需求的工具和應(yīng)用。而對(duì)于開放源碼軟件的維護(hù)者來說,好消息是這些應(yīng)用程序通常對(duì)公開的代碼庫或開源軟件項(xiàng)目是免費(fèi)的。

你可以在一個(gè)階段中采用2個(gè)工具,比如 Synk 和 Mend 掃描你的依賴項(xiàng)。這兩種工具在覆蓋率方面都會(huì)有其優(yōu)點(diǎn)和缺點(diǎn),并會(huì)幫助你更好地了解你的項(xiàng)目的依賴項(xiàng)。如果你認(rèn)為一個(gè)工具比另一個(gè)好,你仍然可以刪除你不需要的那個(gè)。

讓我們來看看OWASP Zap基線掃描這個(gè)GitHub action,它會(huì)掃描目標(biāo)URL的漏洞,并在你提交PR時(shí)將其反饋給你的項(xiàng)目。

當(dāng)你打算在項(xiàng)目中采用一個(gè)action或一個(gè)應(yīng)用時(shí),你應(yīng)該在項(xiàng)目頁上看到各種信息——GitHub是否驗(yàn)證該action?上圖中顯示為已驗(yàn)證,你可以在右側(cè)看到一個(gè)藍(lán)色的小勾。有多少貢獻(xiàn)者在為這個(gè)項(xiàng)目工作?該項(xiàng)目獲得了多少顆星?有多少issue和PR?

再導(dǎo)航到 GitHub 倉庫,看看維護(hù)者和貢獻(xiàn)者是如何積極推動(dòng)這個(gè)項(xiàng)目的。它的文檔是否完善?他們是否提供了基本的使用范例?(比如一個(gè)簡單的YAML文件)是否容易實(shí)現(xiàn)?是否能與你項(xiàng)目的編程語言兼容?

接下來,我們來看看 GitGuardian 的實(shí)際用例。你可以直接在 Marketplace 中搜索到它。

點(diǎn)擊產(chǎn)品頁,你將獲得更多信息。作為項(xiàng)目的維護(hù)者,你將會(huì)用 OWASP Action 檢查我們前面提到的要求是否達(dá)標(biāo)。我們可以看到 GitHub 是否驗(yàn)證了該應(yīng)用、應(yīng)用安裝數(shù)量以及更多關(guān)于該組織的其他信息。

劃到頁面底部,你將看到價(jià)格及安裝信息。GitGuardian為公開的代碼庫提供免費(fèi)的監(jiān)控。選擇你想要安裝的賬號(hào),并點(diǎn)擊“Install it for free”。

你可以在所有代碼庫上都安裝 GitGuardian 或者選擇其中幾個(gè)。你可以為需要安全防護(hù)的每個(gè)階段重復(fù)這一過程。

Section 2:管理開源項(xiàng)目

當(dāng)貢獻(xiàn)者提交PR時(shí),它將觸發(fā)流水線中集成的所有應(yīng)用和action。理想狀況下,就GitGuardian而言,你希望憑證不被推送到源代碼中,并且在貢獻(xiàn)者提交PR之前停止這一行為。你可以在你的CLI上采用 GitGuardian Shield(ggsheild),并與預(yù)提交的 git hook集成以增強(qiáng)防護(hù),確保憑證沒有被推送到源碼中。

如果沒有設(shè)置 ggshield,在代碼庫上推送密鑰的貢獻(xiàn)者會(huì)在提交PR時(shí)收到告警。下圖虛擬PR提交的過程中,你可以看到一些工具被觸發(fā)。

你可以讓其中一些工具在主干分支上是必須觸發(fā)的。要做到這一點(diǎn),需要進(jìn)入項(xiàng)目設(shè)置,在【Code and automation】中點(diǎn)擊【Branches】。在這里,你可以添加分支保護(hù)規(guī)則,要求在合并PR前必須通過狀態(tài)檢查。

如何從ChatOps中獲取價(jià)值?

ChatOps 是一個(gè)協(xié)作模型,將人、工具、流程和自動(dòng)化連接到一個(gè)透明的工作流程中。使用Slack進(jìn)行討論,并為特定的工具設(shè)置專門的頻道,這將有助于你了解項(xiàng)目中發(fā)生的事情。監(jiān)控和設(shè)置告警是重要的一環(huán),可以幫助開發(fā)人員獲得正確的信息。

GitHub 項(xiàng)目:如何利用面板追蹤安全任務(wù)

在開發(fā)開源項(xiàng)目時(shí),你可以利用GitHub projects來列出你為某一特定功能所要做的所有任務(wù)。你可以創(chuàng)建標(biāo)簽和epics(milestones)來跟蹤進(jìn)度或用于提出問題。還可以創(chuàng)建一個(gè)安全標(biāo)簽來追蹤你項(xiàng)目中的漏洞。

你可以使用自動(dòng)化項(xiàng)目或面板,其中的卡片會(huì)根據(jù)PR的狀態(tài)相應(yīng)地移動(dòng)。這個(gè)方式可以很好地展示功能開發(fā)進(jìn)度以及你可能需要幫助的地方。

在 README 文件中展示項(xiàng)目的健康狀態(tài)

如果你想為你的項(xiàng)目吸引更多的貢獻(xiàn)者,不要忘記使用應(yīng)用及action工作流程提供的標(biāo)簽或tag來展示項(xiàng)目的健康狀態(tài),并將其添加到項(xiàng)目的README文件頂部。你通過GitHub文檔了解更多徽章設(shè)置:

https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/adding-a-workflow-status-badge

Section 3:安全加固開源項(xiàng)目

除了在流水線各環(huán)節(jié)添加安全防護(hù)外,你還可以通過采用以下最佳實(shí)踐加固開源項(xiàng)目:

采用最小權(quán)限:在成員權(quán)限部分將基本權(quán)限設(shè)置為無權(quán)限,這樣成員只能克隆和提取公共代碼庫。如果要給貢獻(xiàn)者更多的權(quán)限,維護(hù)者需要把他們加入團(tuán)隊(duì)或讓他們成為單個(gè)代碼庫的協(xié)作者。創(chuàng)建團(tuán)隊(duì)、添加用戶,并將他們分配到具有特定權(quán)限的特定代碼庫中。

讓所有維護(hù)者和貢獻(xiàn)者都必須使用2FA。到2023年底,GitHub將要求所有貢獻(xiàn)代碼的用戶啟用一種或多種形式的雙因素認(rèn)證。

保護(hù)主分支:如上所述,一定要保護(hù)主分支,以免被維護(hù)者意外刪除。

啟用提醒和告警:更新email地址以保證你能收到來自項(xiàng)目的提醒信息

添加正確的許可證:OSS許可證可以保護(hù)貢獻(xiàn)者和用戶。如果你不確定應(yīng)該選擇哪個(gè)許可證,可以查看這篇文章進(jìn)行簡單的入門,并且確保在你的代碼庫中有 LICENSE.md 或 LICENSE.txt 文件。

審查應(yīng)用程序、工具和Webhooks的列表:如果你在流水線中的一個(gè)步驟中使用了多個(gè)應(yīng)用程序、工具或webhooks,請(qǐng)review 它們是否仍然適用,并刪除任何陳舊過時(shí)的或未使用的組件。

如果你依賴 GitHub Actions 來構(gòu)建、測試和部署你的項(xiàng)目,一定要檢查你的工作流程配置。訪問下方鏈接可以查看 GitHub Actions 安全最佳實(shí)踐:

https://blog.gitguardian.com/github-actions-security-cheat-sheet/

總結(jié)

開源組件可以成為大規(guī)模網(wǎng)絡(luò)攻擊的一個(gè)載體。去年我們已經(jīng)看到了Apache Log4j 的漏洞,這是一個(gè)開源的Java包,用于支持許多Java應(yīng)用程序的活動(dòng)記錄。雖然不是所有用Java編寫的軟件都有漏洞,但受影響的軟件包被開發(fā)人員廣泛使用,有許多應(yīng)用程序和服務(wù)都使用這個(gè)庫。大型科技公司,如微軟、VMWare、亞馬遜、IBM等都受到影響。

使用不同的工具和防護(hù)在整個(gè)流水線中擁有可見性對(duì)于減少攻擊面至關(guān)重要,在本文中我們已經(jīng)看到借助 GitHub Marketplace 的應(yīng)用和Action可以幫助達(dá)成這一目標(biāo)。軟件供應(yīng)鏈安全管理平臺(tái)SEAL 也可以幫助用戶獲取項(xiàng)目的全局安全可見性,目前已開放免費(fèi)試用:seal.io/trial。

作為維護(hù)者和貢獻(xiàn)者,可以先創(chuàng)建一個(gè)小型流水線,并嘗試試用其中一些工具,為每個(gè)貢獻(xiàn)者安全加固GitHub項(xiàng)目。

不停地實(shí)踐是保證安全的關(guān)鍵一環(huán),但更重要的是,不要在GitHub上push你的密鑰!

責(zé)任編輯:趙寧寧 來源: FreeBuf.COM
相關(guān)推薦

2013-08-29 09:37:18

GitHub開源項(xiàng)目

2014-04-15 10:11:05

Github開源

2014-09-10 09:20:01

2017-02-27 11:06:28

Github開源項(xiàng)目

2021-08-16 11:57:49

安全漏洞GitHubAllstar

2015-02-03 02:43:57

2015-08-21 09:07:52

LinuxNMAP安全

2013-05-17 11:03:26

2021-05-26 09:35:22

Github開源項(xiàng)目

2014-11-13 14:32:53

2013-12-20 10:40:02

開源系統(tǒng)服務(wù)安全chroot開源安全

2016-04-13 14:03:38

2018-11-28 09:20:42

GitHubJava開源項(xiàng)目

2020-11-09 14:26:30

GitHub 技術(shù)開源

2021-01-05 10:27:02

GithubPython開源項(xiàng)目

2012-06-27 10:16:12

開源項(xiàng)目CodePlex

2019-02-26 10:15:13

GitHub 開源代碼

2019-07-04 11:23:06

GitHub開源系統(tǒng)

2020-07-01 14:08:20

開源Github開源項(xiàng)目

2021-07-01 10:25:58

開源項(xiàng)目Github
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)