就係因為冇咗呢個分隔,如果一個攻擊者特登將自己個分支改名做 --exec='惡意指令' 咁嘅樣,系統就會將個分支名當做 git rebasegit rebase--exec 標記,本身嘅設計係用嚟喺每次重播提交之後執行一句 Shell 命令。結果,攻擊者就可以喺你台伺服器嘅作業系統層面,用 Gogs 伺服器程式嘅權限,任意執行代碼,完全控制你台機 。
攻擊手法速查:
發現呢個漏洞嘅 Rapid7 Labs 安全研究員 Jonah Burgess 好直接咁解釋:「呢個漏洞令任何已驗證嘅用戶,都可以通過建立一個帶有惡意分支名嘅 Pull Request,將 --exec 標記注入 git rebase
對於一路有留意 Gogs 項目嘅人嚟講,呢次爆出未修補嘅關鍵零日漏洞,絕對唔係乜嘢意外。呢單只係最新、亦都係最嚴重嘅例子,揭露咗個項目嘅主要(實際上係唯一)維護者,多年嚟對安全報告都係保持沉默嘅模式。
呢個「唔理會」嘅時間線,俾多個獨立研究團隊記錄得清清楚楚:
呢啲歷史,令到今次 Rapid7 嘅披露,已經唔單止係一個安全通告咁簡單。正如有業界媒體所講,呢個情況「提醒咗我哋開源項目嘅限制」,當一個被廣泛使用嘅關鍵基礎設施,完全依賴一個冇反應嘅單一維護者嗰陣,就會變成一個永久嘅風險 。冇咗有效嘅多方持份者管治,一個咁常用嘅工具,隨時會變成定時炸彈。
既然冇官方軟件修補程式,管理員就必須要靠更改設定同網絡控制,嚟消除呢個漏洞嘅攻擊途徑。以下步驟可以阻止眼前嘅威脅,同減少受攻擊嘅機會。
1. 即刻停用「Rebase before merging」
呢個係最有效嘅緩解措施。成個攻擊鏈都係依賴呢個特定嘅合併模式。將儲存庫或成個站台嘅設定,改為「Merge commit」或「Squash」,就可以完全避開呢段有問題嘅程式碼路徑 。
2. 限制網絡存取
呢個攻擊需要通過 HTTP 驗證先可以建立 Pull Request。如果你台 Gogs 伺服器根本冇需要對外公開,就將佢搬到 VPN 或者防火牆後面,淨係容許受信任嘅內部用戶存取。咁樣就可以令到你台機,喺互聯網大規模掃描器同一般攻擊者眼前消失。
3. 收緊用戶註冊同權限
由於任何一個已驗證用戶都可以利用呢個漏洞,減少伺服器上嘅賬戶數量係一個關鍵防線。停用自助註冊功能,改為手動審批新用戶。即刻審查你嘅用戶列表,停用所有唔活躍或者來歷不明嘅賬戶 。
4. 監察 Pull Request 有冇異常
實施積極嘅監控,特別留意 Pull Request 嘅分支名係咪包含可疑字符,例如雙橫線 (--)、分號、反引號,或者明顯嘅 Shell 命令關鍵字,例如 exec、curl、wget。見到一個古古怪怪嘅分支名,就係有人嘗試利用漏洞嘅強烈訊號 。
5. 計劃長遠脫離 Gogs
考慮到呢個有曬記錄嘅「未修補關鍵漏洞」模式,繼續依賴 Gogs 係一個戰略性風險。最可行嘅替代方案係 Gitea,佢係 Gogs 嘅一個由社群驅動嘅分支 (fork),有一個穩健、多人組成嘅維護團隊,同一個反應迅速嘅安全流程。當然仲有其他主要嘅 Git 服務平台,但對於當初就係鍾意 Gogs 夠輕量、可以自託管嘅團隊嚟講,Gitea 幾乎係一個無痛嘅替代品,可以消除單一維護者呢個瓶頸 。
6. 準備好迎接修補程式(如果真係有嘅話)
持續留意 Gogs 嘅安全頁面同 GitHub 嘅發佈更新。如果最終真係有修補程式推出,梗係即刻升級。不過,你要抱住「呢種模式會重複發生」嘅心態嚟規劃你嘅安全策略,假設將來又會有嚴重漏洞,拖足幾個月都冇人理,你要有心理準備。
Comments
0 comments