偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

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

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

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

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

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

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

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

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

什么是 GitHub Marketplace?

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

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

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

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

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

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

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

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

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

讓我們來(lái)看看OWASP Zap基線(xiàn)掃描這個(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)目頁(yè)上看到各種信息——GitHub是否驗(yàn)證該action?上圖中顯示為已驗(yàn)證,你可以在右側(cè)看到一個(gè)藍(lán)色的小勾。有多少貢獻(xiàn)者在為這個(gè)項(xiàng)目工作?該項(xiàng)目獲得了多少顆星?有多少issue和PR?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

總結(jié)

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

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

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

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

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

2013-08-29 09:37:18

GitHub開(kāi)源項(xiàng)目

2014-04-15 10:11:05

Github開(kāi)源

2014-09-10 09:20:01

2021-08-16 11:57:49

安全漏洞GitHubAllstar

2015-02-03 02:43:57

2013-05-17 11:03:26

2017-02-27 11:06:28

Github開(kāi)源項(xiàng)目

2015-08-21 09:07:52

LinuxNMAP安全

2013-12-20 10:40:02

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

2014-11-13 14:32:53

2016-04-13 14:03:38

2021-05-26 09:35:22

Github開(kāi)源項(xiàng)目

2021-01-05 10:27:02

GithubPython開(kāi)源項(xiàng)目

2020-11-09 14:26:30

GitHub 技術(shù)開(kāi)源

2018-11-28 09:20:42

GitHubJava開(kāi)源項(xiàng)目

2020-11-04 10:35:05

Github開(kāi)源項(xiàng)目編程

2019-09-17 10:00:54

2019-10-09 09:10:18

開(kāi)源項(xiàng)目Github代碼

2020-04-01 10:15:23

開(kāi)源Github

2021-11-02 10:37:21

Java開(kāi)源項(xiàng)目
點(diǎn)贊
收藏

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