Skip to main content
網路安全

GitHub 弱點管理:完整指南

GitHub 弱點管理涉及找出程式碼儲存庫中的安全弱點並加以修復,以防範網路威脅、維持程式碼品質,並提供一致的使用者體驗。

作者 SentinelOne
GitHub 弱點管理:完整指南

GitHub 弱點管理是指在 GitHub 儲存庫、相依性與工作流程中發現、分類處理及修補安全弱點。

GitHub 是一個以雲端為基礎的平台,軟體開發人員使用它來儲存與追蹤其程式碼,並與他人協作。它提供內建安全功能,例如 Dependabot、Secret Scanning 和 Code Scanning,以保護您的開發管線。這有助於您及早發現弱點、加以修復,並在每次發行中維持使用者信任。

在本文中,我們將討論 GitHub 弱點管理、內建安全功能、GitHub 如何偵測與回報弱點、如何在 GitHub 中管理與修補風險、GitHub Advanced Security、如何將第三方工具與 GitHub 整合,以及最佳實務。

什麼是 GitHub 弱點管理?

GitHub 弱點管理是 GitHub 安全團隊建立的一套計畫,用於識別與評估您系統和程式碼中的弱點,並協助進行修補,以保護超過 1 億名開發人員的專案與資料免受網路威脅。GitHub 中的弱點管理流程包含 5 個重要步驟:

  • 發現:安全團隊使用進階工具與流程,在 GitHub 上託管的程式碼庫、開發工作流程、組態等項目中找出弱點。偵測到的弱點會成為一個「issue」,並記錄在 GitHub 看板上。
  • 分類處理:這包括評估弱點以判定其嚴重性、建立技術報告,以及與程式碼擁有者互動。
  • 修補評估:在此階段,程式碼擁有者會提出修補程式,並根據問題的嚴重程度估算完成時程。
  • 修補:此時,程式碼擁有者會套用修補程式,而 GitHub 的安全團隊則會進行驗證。
  • 揭露:一旦修補程式被接受,安全團隊就會向客戶與使用者揭露該弱點。

對 GitHub 的安全團隊而言,弱點管理 不僅僅是簡單的修補程式管理;它是一種智慧且敏捷的流程,用於檢視可能的威脅暴露、預測可利用性,並了解對您業務的影響。這也有助於安全主管更快地針對威脅緩解做出明智決策。

為什麼 GitHub 儲存庫中的弱點管理很重要?

GitHub 擁有龐大的程式碼儲存庫基礎架構,來自全球數百萬名開發人員的資料儲存在多個資料中心與雲端供應商中。除了需要管理如此大量的資料外,GitHub 還需要持續評估個別資產的風險概況並加以保護。

儘管 GitHub 擁有多元且技術精湛的安全專家團隊,但管理如此龐大的基礎架構仍伴隨挑戰,例如營運負擔與不一致的使用者體驗。為了有效保護程式碼儲存庫,GitHub 上的弱點管理已成為必要措施。它帶來以下優勢:

  • 自動化:GitHub 弱點管理的主要目標之一是敏捷性。其目的是加快理解弱點、判斷其被利用可能性,以及評估其可能對業務造成何種影響所需的時間。這有助於您在攻擊者利用弱點之前及時準備修補程式。GitHub 使用自動化工具,例如 SAST、DAST、弱點掃描器等,將重複步驟自動化,以降低營運負擔、延遲與人為錯誤。
  • 降低暴露:透過持續監控您的程式碼儲存庫並執行弱點評估,您可以找出程式碼庫中的安全弱點。這表示您將有機會協作並提出修復方案。這有助於您在軟體開發生命週期 (SDLC) 的每個階段保護程式碼與系統免受網路攻擊者侵害,並降低暴露風險。
  • 維持合規:安全框架與標準要求您遵循其規範,以保護客戶資料免受威脅。透過 GitHub 弱點管理,您可以遵循安全開發實務,並主動找出與修補弱點。這可降低資料外洩、威脅、高額處罰與罰款的可能性,並提升合規性。
  • 更佳的使用者體驗:GitHub 的安全團隊使用 GitHub Advanced Security (GHAS) 來提升程式碼品質。它執行內部安全計畫,例如 Bug Bounty program,以搜尋威脅並加速修補。該平台也會透過提供更完善的弱點情境資訊,並根據嚴重性與業務影響進行優先排序,協助您採取更好的修補行動。因此,您可以保護程式碼庫與系統,並提供更佳的客戶體驗。

用於弱點偵測的 GitHub 內建安全功能

GitHub 是一個以開發人員為優先的平台,在重視擴充性的同時也專注於安全性。它提供一些出色的內建安全功能,協助您快速找出程式碼庫、工作流程與系統中的弱點。如此一來,您可以在移轉至正式環境之前解決這些弱點並保護您的開發工作流程。以下是 GitHub 用於弱點偵測的一些安全功能:

  • Code scanning: 此功能可讓您分析 GitHub 儲存庫中的一段程式碼,以偵測錯誤與安全弱點、加以分類處理,並排定修補工作的優先順序。它也可確保新的修復不會產生新的弱點。此工具可讓您將程式碼掃描排程在特定時間或日期執行,或在特定事件發生時觸發程式碼掃描。一旦偵測到重大弱點,GitHub 會在相同儲存庫中以警示形式顯示該錯誤。
  • Dependabot: 它是 GitHub 中強大的原生安全功能,可監控您的程式碼相依性是否存在弱點,並在發現弱點時立即通知您。它也會自動更新您的相依性,並協助您在攻擊者利用弱點之前加以緩解。
  • Bug Bounty program: GitHub 的 Bug Bounty program 會獎勵找出程式碼儲存庫中安全弱點的安全研究人員。獎勵金額會根據弱點嚴重性而有所不同,從 $617 到 $30,000+ 不等。
  • Secret Scanning: 此工具可讓安全團隊偵測外洩的機密或認證資訊,例如 API 金鑰、密碼、私密金鑰等。它會自動執行,並在公開儲存庫中偵測到機密時通知您。如此一來,您可以在發生外洩事件之前及時保護機密。
  • GitHub Advanced Security: 在私人儲存庫上,您可以使用 GitHub Advanced Security (GHAS) 掃描您的程式碼提交與推送,以找出安全缺陷。這有助於您提升程式碼品質並防止其遭到濫用。
  • Vulnerability board: GitHub 提供安全儀表板,協助您將各個程式碼庫中的弱點視覺化並加以追蹤。您可以查看每個儲存庫中有多少弱點處於開啟狀態、未修補問題的存在時間、每個儲存庫的合規資訊,以及警示歷史記錄。此看板可協助安全主管做出明智的修補決策並改善安全態勢。
  • Security Advisory database: GitHub 擁有即時資料庫,您可以參考它來掌握新的威脅與弱點並加以化解。它包含三個類別:惡意軟體公告、GitHub 審查過的公告,以及未審查的公告。它會顯示 CVE、受影響儲存庫的名稱、CVSS 等級等資訊。

GitHub 如何偵測與回報弱點?

GitHub 是一個強大的安全平台,可在整個軟體開發生命週期中管理弱點。您的 IT 團隊可以使用其安全功能掃描程式碼儲存庫中的弱點、高風險相依性與外洩機密。它也能協助您修正問題並長期追蹤安全狀況。讓我們將 GitHub 的弱點管理流程拆解為四個階段:

找出弱點

GitHub 漏洞管理的第一步是在程式碼儲存庫中偵測漏洞。您必須在網路犯罪分子利用這些漏洞並發動攻擊之前,找出 GitHub 儲存庫中的安全風險。此階段可讓您完整掌握安全漏洞的可視性,並優先安排修補行動。

為了找出漏洞,GitHub 的安全團隊會使用自動化 SAST 或 DAST、手動測試、內部報告、客戶報告、滲透測試以及 Bug Bounty 計畫。GitHub 的團隊也會使用一些原生工具持續掃描您的程式碼、機密資訊和相依性:

  • Dependabot: 它會將您專案的相依性圖譜與 GitHub 的 Advisory Database 進行比對。它會標示出有漏洞的套件,並建議安全版本。
  • Code scanning: GitHub 使用第三方掃描器或 CodeQL 檢查您的程式碼,以追蹤不安全或可疑的編碼模式,例如 SQL 注入和不安全的函式使用方式。
  • Secret scanning: GitHub 會掃描意外暴露的資料,例如 AWS 金鑰、資料庫密碼等。對於公開儲存庫,此功能預設為啟用,但對於私人儲存庫,您需要購買方案。

當 GitHub 的安全團隊發現漏洞時,他們會在追蹤看板中建立一個「issue」,並包含以下屬性:

  • 明確的標題
  • 問題的簡短描述
  • 漏洞來源,包括滲透測試、Bug Bounty 計畫、漏洞掃描、內部負責任揭露、客戶通知,以及 CI/CD pipeline 安全檢查
  • 技術報告或漏洞來源的連結

一旦安全團隊接手該漏洞,他們就會將其移至分級階段。

漏洞分級

安全團隊會徹底評估該漏洞,以驗證該漏洞是否值得重視。在此階段,他們會執行以下動作:

  • 找出該漏洞被利用的可能性有多高
  • 判定該漏洞對您系統的影響
  • 根據 CVSS 或影響指派嚴重性分數
  • 撰寫技術報告
  • 與程式碼擁有者溝通

GitHub 的安全團隊會審查問題的初始報告,並在收到初始報告後 3 天內建立技術文件,說明問題的類型與成因。在建立技術報告時,安全工程師會先透過測試更多情境來找出可能的攻擊。例如,他們會嘗試以各種存取層級和部署模型利用漏洞,以判斷哪些漏洞會帶來更嚴重的風險。

如果發現嚴重漏洞,安全團隊會建立技術文件並標記程式碼擁有者,以便他們著手修補。GitHub 的安全團隊會透過兩種方式通知程式碼擁有者:

  • 在技術報告中加入評論並標記團隊。
  • 在 Slack 頻道中撰寫訊息作為提醒。

他們也會根據漏洞的嚴重性說明修補程式開發的 SLA,並提供修補建議。

修補程式估算

當技術文件送達程式碼擁有者後,其工程團隊便會開始著手修補,以在指定的 SLA 內解決漏洞。

修補程式準備完成後,程式碼擁有者會將其提交給 GitHub,並提供完整的工作量與時程估算,以便在 SLA 內完成整個流程。該估算也包含回歸測試,以確認修補程式能解決問題,且不會引入新的安全漏洞。

根據漏洞的嚴重性等級,程式碼擁有者需要回覆估算:

  • 1 天內,適用於重大風險
  • 3 天內,適用於高風險
  • 10 天內,適用於中低風險

此步驟可協助安全團隊建立最終報告,以供追蹤與溝通。GitHub 會透過以下方式報告漏洞:

  • Security alerts dashboard: 這對於檢視所有目前與過去的漏洞、其修補狀態以及解決趨勢非常有用。
  • Security advisory database: 它可讓安全團隊私下揭露漏洞、指派 CVE,並在修復完成後發布詳細的安全公告。
  • Audit Logs and REST APIs: 它們是啟用進階報告以及追蹤與法規遵循相關之服務等級協議 (SLA) 所必需的。
  • Code scanning alerts: 它們會針對 CodeQL 偵測到的安全問題傳送通知,以便在 pull request 上進行行內回報。內容包括有漏洞的程式碼行、嚴重性分數,以及修正問題的建議。

在 GitHub 工作流程中管理與修補漏洞

為了維護您軟體開發生命週期的安全性與完整性,管理與修補 GitHub 工作流程中的漏洞至關重要。這包括透過安全設定修正不安全的工作流程模式,例如權限過於寬鬆和不受信任的觸發條件。

讓我們了解漏洞管理與修補如何在 GitHub 中進行。

修補漏洞

修補漏洞是 漏洞管理生命週期 中不可或缺的一步,可從 GitHub 儲存庫中消除安全弱點。在 GitHub 的安全團隊偵測並分級漏洞,且將報告傳送給程式碼擁有者後,後者便會開始著手修復。在修補程式開發期間,GitHub 的安全團隊將隨時提供必要的諮詢,協助負責修復的工程師。

修補時程會依嚴重性等級而有所不同:

  • 重大為 3 天
  • 高風險為 10 天
  • 中風險為 40 天
  • 低風險為 100 天

修正準備就緒後,程式碼擁有者會將修正作為「修補程式」提交給 GitHub 的安全團隊。接著,安全團隊會成為審查者以驗證修補程式。他們會在安全修補程式上重新測試概念驗證,並確認修補程式已解決問題且未引入新的弱點。若否,他們會建議更新。確認後,工程師即可合併程式碼。

向使用者與客戶揭露問題

GitHub 的安全團隊會透過揭露已發現的弱點與修補程式,對使用者與客戶維持透明度。他們透過以下方式揭露:

  • 儲存庫中含有該問題的 GitHub Security Advisory
  • Security Notifications 郵件清單
  • CHANGELOG 更新

GitHub 會在含有該弱點的儲存庫中發布安全公告,通常透過 Sourcegraph。揭露內容包括弱點描述、您的處理方式、受影響版本、嚴重性分數、已修補版本等。

如果程式碼擁有者無法符合 SLA 或找出修補程式,則會升級為需要進一步討論的例外情況。例外情況需根據嚴重性由不同管理層級核准。

GitHub Advanced Security:功能與優勢

GitHub Advanced Security (GHAS) 是一項進階功能,可讓您在軟體開發生命週期的每個階段整合安全性。這項原生 GitHub 功能可與您的開發人員工作流程良好整合,讓您在攻擊者利用安全問題之前先行發現並修正。

GHAS 可協助您維護並提升程式碼品質,且具備許多功能。基本功能,例如 Dependabot alerts、dependency graphs,以及 secret scanning 和 code scanning,所有方案皆可使用。若要使用進階功能,您至少需要購買以下其中一項產品:GitHub Secrets Protection 或 GitHub Code Security。

GitHub Code Security 的功能與優勢:

  • Code scanning: 使用第三方掃描器或 GitHub 的語意程式碼分析引擎 CodeQL,找出程式碼中的編碼錯誤與安全缺陷。
  • CodeQL CLI: 這個命令列工具可讓您分析程式碼、產生程式碼掃描結果,以及建置和測試自訂查詢。
  • Dependency review: 在合併特定 pull request 之前,您可以進行審查,以找出是否存在任何有弱點的版本,以及變更會對您的相依性帶來何種影響。
  • Copilot Autofix: 它會為透過 code scanning 發現的弱點產生自動修正。
  • Custom rules: 您可以在 Dependabot alerts 中自訂自動分類規則。自動化決定要觸發、延後處理或忽略哪些警示。
  • Security overview: 檢視整個基礎架構中的網路風險分布情況,以便做出更好的安全決策。

GitHub Secret Protection 的功能與優勢:

  • Secret scanning: 此工具會偵測儲存庫中儲存的密密,例如密碼,並傳送警示。
  • Copilot secret scanning: 使用 AI 揭露儲存庫中暴露的密密。
  • Push protection: 封鎖包含密密的程式碼提交,以防止洩漏與外洩事件。
  • Custom patterns: 監控模式並防止組織特有的密密洩漏。
  • Approval control: 透過更嚴格的核准流程,明確規範誰可以執行敏感操作,以獲得更佳的治理與控制。其中包括委派的警示關閉,以及 push protection 的委派略過。
  • Security overview: 透過詳細的安全總覽,了解整個儲存庫與基礎架構中的風險。

將第三方工具與 GitHub 整合

將第三方工具與 GitHub 工作流程整合,可提升整個 CI/CD 管線中的自動化、安全性與可觀測性。您可以透過使用 GitHub actions、呼叫外部 API,以及透過 secrets 和 tokens 來整合這些工具。

以下我們將說明一些容易理解的步驟,介紹如何將第三方工具與 GitHub 整合。

  • 選擇合適的工具: 首先,識別您的專案需求,例如提升安全性、自動化測試、管理部署,以及監控效能。一旦您有了清楚的想法,就可以選擇符合目標的可信任第三方工具。請確保您選擇的工具支援與 GitHub 整合。
  • 設定存取認證: 大多數第三方工具在整合後都需要安全存取,例如 token 或 API 金鑰,才能連線至 GitHub 帳戶。這些認證可協助工具掃描程式碼、部署建置或傳送通知。您可以依照工具的指示產生並安全地儲存這些認證。
  • 將工具連線至您的 GitHub 儲存庫: 取得認證後,前往您的 GitHub 儲存庫設定或第三方工具的儀表板,以連結這兩個系統。有些第三方工具提供一鍵整合,而有些則需要您手動授權存取特定儲存庫。這會開始 GitHub 與外部服務之間的通訊。
  • 使用 GitHub secrets 儲存敏感資料: 前往您的儲存庫設定,並在「Secrets」下新增 API 金鑰和其他敏感憑證。這些 secrets 可在 GitHub Actions 工作流程執行時安全地存取,保護您的整合,並協助您遵循安全最佳實務。
  • 定義工具應在何時以及如何執行: 您可以決定第三方工具在您的 GitHub 工作流程中應如何運作以及何時運作。大多數工具都提供彈性的選項,讓您定義它們何時採取動作,以便自然地融入開發與部署週期。
  • 監控、檢閱與最佳化: 整合完成後,請監控並檢閱結果。檢查 GitHub Actions 分頁或第三方工具的儀表板,以確保一切正常運作。檢視日誌、掃描結果、警示和效能指標,以便在需要時調整您的整合,維持順暢的工作流程。

SentinelOne 是一個先進的資安平台,可與 GitHub 整合,協助偵測並修復軟體開發生命週期中的弱點、惡意軟體及其他惡意活動。它可提供儲存庫與 CI/CD 工作流程的即時可視性,讓您的安全團隊能夠監控並追蹤程式碼變更、找出錯誤設定,並在不影響開發速度的情況下自動化威脅回應。

GitHub 弱點管理最佳實務

GitHub 是一個可靠的平台,可用於儲存、協作與管理程式碼。但它也是網路攻擊者高度鎖定的目標。這就是為什麼您需要保護程式碼庫免受弱點影響。GitHub 中不佳的弱點管理可能使您的組織暴露於供應鏈攻擊、法規風險與資料外洩之中。

無論您是在管理開源專案還是企業級儲存庫,這些最佳實務都能協助您在組織中實施強大的 GitHub 弱點管理。

  • 啟用 GitHub 的原生工具,例如 Dependabot alerts and updates、code scanning 和 secret scanning,  以偵測已知弱點、外洩的 secrets,以及程式碼中的安全問題。
  • 使用 Dependabot pull requests 和 GitHub 的 dependency graph 更新第三方套件與程式庫,以降低暴露於已知弱點的風險。
  • 建立狀態檢查、pull request 審查,並防止對主要分支進行 force push 或直接提交,以維持可稽核的程式碼變更。
  • 讓您的團隊能夠自動化所有可重複的步驟,避免人為延遲,並降低營運負擔與情境切換。
  • 使用工具,例如 git-secrets 和 pre-commit hooks,防止敏感資訊被推送到 GitHub 儲存庫。
  • 追蹤公開 repos 及其 forks,以確認含有弱點的程式碼未被複製,或未在開源專案中持續暴露。
  • 透過落實最低權限存取控制,為使用者和團隊指派最低必要權限。
  • 將 GitHub 連接到您的弱點掃描器和 SIEM 工具,以簡化弱點偵測、分類處理與修復。
  • 透過針對 GitHub 中的安全編碼實務、原生安全工具及真實世界弱點案例研究的適當訓練,在您的組織中推動安全優先文化。
  • 定期檢閱儲存庫設定、相依性風險、稽核日誌與存取控制,以偵測錯誤設定或可疑活動。

SentinelOne 如何補強 GitHub 弱點管理?

SentinelOne 提供 Singularity Vulnerability Management,這是一個先進的平台,可管理您 GitHub 儲存庫與 CI/CD 管線中的弱點。此工具可協助您監控並保護程式碼,無論其處於開發階段或已上線。這讓您能保護工作負載、端點、容器與系統免受主動式漏洞利用的影響。

SentinelOne 會將在 GitHub 中發現的弱點對應到正式環境中的即時風險,根據業務影響與可利用性來排定問題優先順序,並提供自動化回應以修復攻擊。這有助於您在維持安全態勢的同時擴展創新工作。

SentinelOne 可偵測多達 750+ 種不同類型的機密資訊;可防止雲端憑證外洩,並具備 Snyk 整合功能。您可以保護公開與私有的 GitHub、GitLab,甚至 bitBucket 儲存庫。SentinelOne 可找出休眠或非作用中的帳戶,並將其標示以供稽核。它可防止未經授權的帳戶接管與劫持,並消除在網路中執行的惡意程序。您可以使用 SentinelOne 保護單一雲、混合雲與多雲環境,並透過其 1-click remediation 修復重大弱點。

取得示範 以探索 SentinelOne 的 Singularity Vulnerability Management。

結論

GitHub 弱點管理是一種可靠的方法,可用於掃描與分類處理弱點,並根據風險等級加以修復。GitHub 的安全團隊會在您的程式碼儲存庫中找出問題並通知您,讓您能在威脅行為者發現或利用它們之前進行修補。這可保護您的程式碼與系統免受網路威脅,並維持使用者信任。

GitHub 允許您與第三方安全工具整合,以在您的 CI/CD 管線中找出並修復安全弱點。這有助於您自動化並加速安全工作流程,並降低遭到利用的可能性。

如果您正在尋找可靠的 GitHub 弱點管理第三方解決方案,SentinelOne 是極佳的選擇。

常見問題

GitHub 弱點管理是指識別、分類處理、評估、修復及揭露您 GitHub 儲存庫與工作流程中的安全弱點。它透過使用 GitHub 的工具,例如 Dependabot、secret scanning 和 code scanning,協助開發人員與組織找出程式碼中的缺陷,然後加以修復。它也可與第三方工具整合,以在整個軟體開發生命週期中偵測並回應風險。

GitHub 的安全團隊會使用 SAST/DAST、Dependabot、程式碼掃描和秘密掃描等工具,透過掃描相依性、機密資訊和安全性設定來偵測程式碼中的弱點。一旦發現弱點,GitHub 會透過 pull request 或 Security 索引標籤提醒儲存庫維護者,並提供一份提及弱點詳細資訊及建議修正方式的報告。這有助於軟體工程師快速回應並立即採取行動來修正問題及保護程式碼安全。

GitHub 弱點管理儀表板可讓您清楚掌握 GitHub repo 的安全健康狀況。它會顯示未解決與已解決的弱點、追蹤您的團隊修復問題的速度,並標示哪些 repos 已啟用 secret scanning 或 CodeQL 等安全功能。該儀表板提供的功能包括偵測指標、修復指標、預防指標、安全功能採用情況、進階篩選,以及可匯出的資料。

GitHub 提供 Dependabot alerts、code scanning 和 secret scanning 等工具,以偵測程式碼與相依性中的弱點。您可以透過 Security Command Center 追蹤發現結果並管理修復工作流程。然而,它缺乏完整弱點管理所需的功能,例如資產清冊、風險評分與全面性報告。如果您需要端對端的弱點管理,則需要將 GitHub 與 SentinelOne 等應用程式串接。

GitHub 透過 Dependabot alerts 追蹤第三方弱點,這些警示會監看 package.json 或 Gemfile 等相依性檔案。它們會在 npm 或 PyPI 等登錄中尋找公開已知的弱點,並與 GitHub Advisory Database 進行交叉比對。若您的儲存庫包含有弱點的相依性,您將在 Security 分頁中收到警示。Dependabot 可設定為自動建立 pull requests 以進行修補。自訂相依性則必須手動檢查。

深入了解 網路安全

Decorative background gradient

體驗最先進的資安平台

了解全球最智慧、最自主的資安平台如何在今日及未來保護您的組織。
Dark dashboard UI with purple-highlighted nav, summary cards showing 149, 7, 78, 56, 1.2 h, and a status table with linked purple text