在 GitHub Security Lab,我們花了很多時間與維護者交流。有些人覺得設定頁面太複雜,文件又太冗長。我們交談過的大多數維護者都不是被聘來擔任安全工程師的。儘管如此,完全忽略專案的安全設定,將會導致自動化與擴展性方面的機會流失,進而造成安全態勢不佳,並在你意識到之前累積漏洞,暴露你的使用者。

以下是簡短版本。六項設定,免費使用,不到半小時即可完成更新。我們已將它們整合成一個名為 Protect Your Project 的引導流程,讓你一次完成,並在下方逐一說明你會用到的工具。

1. 新增 SECURITY.md 檔案

這是清單中最輕鬆的設定,同時也是讓其他設定更順利進行的基礎。

SECURITY.md 檔案會告訴發現專案漏洞的人應該把漏洞回報給誰。如果沒有這個檔案,善意的回報者可能只能選擇公開 issue(現在成了公開的 exploit)或寄到你的個人信箱(如果他們找得到)。

Screenshot of GitHub settings. Security and quality > Set up a security policy are highlighted.

你不需要寫太多內容。我們建議加入聯絡方式,例如電子郵件,讓回報漏洞的人可以直接聯絡你,而不必公開討論。接著,你可以說明哪些漏洞在回報範圍內,以及回報者聯絡你時應注意的其他事項。作為參考,我們會建議維護者參考 systemd 專案的安全政策,這份文件被我們視為完整的範例。它清楚說明了重現步驟的要求,並且不會假設你擁有 24/7 的回應團隊(當你沒有時)。借用它的結構、修改聯絡資訊,然後提交即可。

頂多十分鐘。

2. 開啟私人漏洞回報

SECURITY.md 會告訴回報者該去哪裡。私人漏洞回報(PVR)則提供他們一個私密的地方提交回報。

啟用後,研究人員可以在你的 repo 提交機密 advisory。你可以在不公開的情況下進行分類,並依照自己的時程公開。設定只需要在 Settings → Security 中勾選一個核取方塊即可。

Screenshot of GitHub settings. Security and quality > Enable vulnerability reporting is highlighted.

如果你今晚只想做一件事,請先完成這前兩項。它們免費,而且是最快速向社群傳達你認真對待安全的方式。

3. 開啟祕密掃描,並啟用推送保護

這是失敗模式最令人尷尬的一項。

GitGuardian 的 State of Secrets Sprawl 2026 報告指出,2025 年在公開 GitHub 上洩露了 2,865 萬個新祕密,比前一年增加了 34%,是有紀錄以來單年增幅最大的一次。AI 輔助的 commit 洩露祕密的速率大約是基準值的兩倍。根據 IBM 2025 年資料外洩成本報告,全球資料外洩的平均成本為 444 萬美元(美國則為 1,022 萬美元)。

祕密掃描會在金鑰和權杖不小心進入你的 repo 時,於本機端攔截,防止它們被推送至你的儲存庫。無論你的 repo 是公開還是私人,一旦祕密離開你的本機開發環境,就可能被任何有權限存取你 repo 的人取得。

Screenshot of GitHub settings. Security and quality > View detected secrets is highlighted.

4. 開啟 Dependabot 與相依性審查

你的專案不只是你自己的程式碼,還包含你程式碼所引入的數十個(通常是數百個)套件。

以 WordPress 為例:搜尋已審核、嚴重等級的 WordPress 相關 advisory 會回傳一長串已知漏洞的外掛。如果你正在執行 WordPress 網站,Dependabot 可以幫助確保這些外掛不會留在你的相依性中。

Dependabot 會在你依賴的套件出現已知漏洞時發出警示。相依性審查則會在 pull request 內清楚顯示新增或升級的內容,以及其中是否有開放的 advisory。兩者結合,能將原本不透明的 package.json 差異轉變為只需兩分鐘的審查。

Screenshot of GitHub settings. Security and quality > View Dependabot alerts is highlighted.

5. 開啟程式碼掃描

程式碼掃描會對你的 repo 執行靜態分析,並標記可能導致實際漏洞的模式,例如 SQL 注入、命令注入、危險的反序列化等常見問題。

使用 CodeQL 的程式碼掃描可以偵測不安全的 GitHub Actions 工作流程。CodeQL 是引擎,而我們建構了程式碼掃描。我們在 2019 年讓開源專案免費使用它,現在它已成為 Security and Quality 分頁中的一鍵預設設定。

這是大多數維護者會跳過的設定,因為它聽起來需要配置。其實不需要。預設設定會為你的程式語言選擇合適的查詢套件,並在每次 pull request 時執行。

Screenshot of GitHub settings. Security and quality > Set up code scanning is highlighted.

6. 在預設分支上開啟分支保護

這是最簡單、最不起眼的設定,但一旦啟用,將產生最大的影響。這是關於要求在合併到 main 之前必須透過 pull request,並且至少需要一人核准。

這能防範最壞的情況:被入侵的憑證、混淆的貢獻者,或是疲憊的你直接推送至正式環境。這也讓其他五項設定真正發揮作用,因為 Dependabot 警示和程式碼掃描發現現在會阻擋合併,而不是留在你從不打開的分頁中。

結論

這六項設定無法讓你的專案變得無法被駭。沒有任何東西能做到。

它們能做的,是關閉那些容易被利用的入口——那些現在正被大量腳本針對公開 repo 進行攻擊的人所走過的門。

啟用這些設定,你的專案將比今天早上更難被攻擊。依賴它的每個專案也會如此。