KeyFrame內部研究專用

Black Hat Europe 2025 | From Live Exploitation to Zero-Day Discovery: Investigating Attacks on Gogs

Black Hat·6月4日週四·36 min英文

三句話摘要

Wiz 研究員從一筆惡意軟體警報出發,意外發現 Gogs 自架 Git 服務的零時差漏洞,並確認已有超過 700 台伺服器遭同一威脅行為者入侵。 --- 當已知 CVE 全部排除後仍有惡意軟體出現,那就意味著要回頭看修補是否真的完整——Gogs 這個案例說明,UI 層的修補未同步到 API 層,就足以讓整條攻擊鏈死灰復燃,演變成零時差漏洞。 symlink 保護缺口造成任意檔案覆寫:Gogs 曾修補 CVE 中 Web UI 編輯器的 symlink 問題,但 put contents 內部 API 從未套用同等保護,導致攻擊者可透過 API 對 symlink 目標進行任意寫入,繞過原本的修補。

重點整理

重點
  • 1

    symlink 保護缺口造成任意檔案覆寫:Gogs 曾修補 CVE 中 Web UI 編輯器的 symlink 問題,但 put contents 內部 API 從未套用同等保護,導致攻擊者可透過 API 對 symlink 目標進行任意寫入,繞過原本的修補。

  • 2

    RCE 鏈極短且門檻低:建立倉庫與新帳號在 Gogs 預設為開放,攻擊者只需建倉庫、提交指向 `.git/config` 的 symlink,再呼叫 put contents API 覆寫 SSH command 屬性,即可在伺服器上執行任意指令,無需任何預先存取權限。

  • 3

    行為型 IOC 比靜態 IOC 更有追蹤力:隨機八字元倉庫名稱、集中時間段建立等模式,是攻擊者留下的行為指紋;研究員用 Python 腳本掃描全球 1,500 台實例,以此特徵識別出 700 多台受害伺服器,效率遠超 IP 或雜湊值。

  • 4

    挖到根因才是調查終點:客戶刪除受感染機器後案子本可結束,但繼續追問「惡意軟體從哪進來」這個問題,才揭露了整個零時差漏洞與大規模入侵事件,說明「修補後繼續追根究柢」的重要性。

  • 5

    --

實用技巧與重點

乾貨
  • 漏洞標的:Gogs(自架 Git 服務),所有版本(含最新 13.3 版)均受影響,尚未釋出修補
  • 利用條件(三者同時成立才受影響)
  • 執行任意版本的 Gogs
  • 開放使用者註冊(預設啟用)
  • 伺服器對網際網路曝露
  • 攻擊步驟
  • 建立帳號(預設開放)
  • 建立倉庫並提交 symlink 指向 `.git/config`
  • 呼叫 put contents API 覆寫 `.git/config` 的 `core.sshCommand` 屬性
  • 觸發 Gogs 存取倉庫 → 執行任意指令(RCE)
  • Shodan 發現:全球約 1,500 台 Gogs 實例對外曝露
  • 受害規模:700+ 台伺服器以相同模式被入侵
  • IOC 特徵:倉庫名稱與擁有者名稱皆為隨機 8 字元,集中在同一天建立
  • 惡意軟體技術棧:ELF 格式、UPX 壓縮、Go Garble 混淆、C2 框架為 SuperShell
  • SuperShell 解析工具:Mandiant 的 Ungarbler(解密 Go Garble 字串)、upx 解包工具
  • 時間線:7/10 首次入侵 → 7/15 發現惡意軟體 → 兩天內回報 Gogs 維護者 → 10 月維護者確認 → 11 月發生第二波攻擊
  • 緩解建議:禁用開放註冊;以防火牆或 VPN 限制外部存取;等待官方修補後立即更新
  • C2 特徵:VirusTotal 上有用戶回報該 URL 路徑含 `superShell compiled download gogs`,確認為針對性活動
  • --

結論

結論

當已知 CVE 全部排除後仍有惡意軟體出現,那就意味著要回頭看修補是否真的完整——Gogs 這個案例說明,UI 層的修補未同步到 API 層,就足以讓整條攻擊鏈死灰復燃,演變成零時差漏洞。

完整解析

詳細

這次事件的起點是 Wiz 威脅研究員 Yara Shwiki 每日例行查看 YARA 規則警報時,在 7 月 15 日收到一筆命中「Go Garble」偵測規則的告警。她與惡意軟體研究員 Gilad Kochinski 一起檢視客戶雲端伺服器,確認機器已被植入惡意軟體。兩人依照標準流程逐一排除 SSH 預設憑證、系統錯誤設定、所有已公開 CVE 的 PoC,但全部落空。伺服器上安裝的 Gogs 已是當時最新版本(6 月 9 日釋出),理論上所有已知漏洞都應已修補,卻仍有惡意軟體。

為了回答「惡意軟體怎麼進來的」,研究員深入 Gogs 的 Explore 頁面,發現大量隨機八字元的倉庫與使用者名稱,每個倉庫只包含一個指向 `.gitconfig` 的 symbolic link。這個發現讓他們重新審視舊 CVE,鎖定兩個關鍵:一是 put contents API 的路徑穿越漏洞(已修補,加入路徑驗證);二是 Web UI 編輯器對 symlink 的任意覆寫漏洞(修補僅套用在前端 UI,從未套用到底層 API)。兩者結合就產生了一條新攻擊路徑:攻擊者先提交一個 symlink 指向 `.git/config`,再透過 put contents API 覆寫該檔案的 `core.sshCommand` 欄位,當 Gogs 伺服器下次需要存取倉庫時便會執行攻擊者指定的任意命令,完整實現 RCE。由於 Gogs 預設開放帳號註冊,這條攻擊鏈對任何曝露在網際網路的伺服器幾乎零門檻。

確認漏洞成立後,研究員轉向評估受害規模。Shodan 搜尋顯示全球約 1,500 台 Gogs 實例對外曝露;他們根據「隨機八字元倉庫名稱且集中時間建立」這個行為特徵寫了一支 Python 腳本進行掃描,結果找到超過 700 台伺服器呈現相同模式。進一步檢查 `.gitconfig` 內容後,C2 伺服器地址、SSH command 覆寫內容、惡意軟體雜湊值三者皆完全一致,指向同一個威脅行為者。惡意軟體本體是以 Go Garble 混淆並經 UPX 壓縮的 ELF 檔,解包與解混淆後找到的字串指向開源 C2 框架 SuperShell,而 VirusTotal 上已有人回報含有 `superShell compiled download gogs` 的 URL,進一步佐證這是針對 Gogs 的專屬活動。從攻擊者行為模式——大規模機會性掃描、不刻意清理痕跡、使用已知財務動機框架——研究員推斷這是一個以經濟利益為目的的網路犯罪組織,而非國家級 APT。

從調查到向 Gogs 維護者回報,整個過程只花了兩天。然而截至演講當天,官方修補尚未釋出,11 月更記錄到第二波攻擊,代表這個零時差漏洞仍在野外積極被利用。研究員總結三個教訓:第一,將惡意軟體發現與伺服器上的技術元件快速連結,能大幅縮短調查路徑;第二,找到症狀(惡意軟體)後必須繼續追根究柢,才能發現更大的問題;第三,任何足夠獨特的行為模式都應被文件化為行為型 IOC,以應對傳統靜態指標(IP、雜湊、憑證)在現代攻擊中快速失效的現實。

---

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。
Risky Bulletin: Expired credit cards can be used for malicious transactions
5 min
Web2 安全英文PODCAST8月24日

Risky Bulletin: Expired credit cards can be used for malicious transactions

Risky Business

  • 支付安全的非對稱風險:Visa卡利用未加密的卡片資料與NFC通訊,攻擊者可藉由中間人技術竄改過期日期進行交易,但MasterCard、美運卡與Discover的防護更完善,顯示不同發卡機構的安全架構存在明顯差異。
  • 國家級駭客活動的連鎖延伸:北韓Lazarus集團在2月單一事件已累積100名受害者,涵蓋大學、警察部門、媒體與醫療機構,伊朗駭客則針對基礎建設如電力系統發動破壞性攻擊,反映地緣政治在網路戰爭中的升溫。
  • AI加速漏洞生態的雙面刃:AI工具催生近2萬份漏洞概念驗證代碼發布,但同時也導致大量失效漏洞代碼氾濫,增加資安團隊甄別真實威脅的難度;Mayer Protocol遭攻擊事件中,駭客用AI鏈接六個無關的小漏洞完成盜竊170萬美元的攻擊。
SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware
5 min
Web2 安全英文PODCAST8月24日

SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware

SANS Stormcast

  • Microsoft EntraID 的遠端代碼執行漏洞已由微軟修補,初期報告顯示已遭利用但後來更正為未遭利用。這反映 Microsoft 在雲端軟體安全上的透明度提升,對漏洞採用與內部軟體相同的 CVE 編號和公告流程。
  • PowerShell 指令碼可用於驗證 MFA 部署完整性,特別是找出未啟用 MFA 的遺漏帳號。同時可以分析 EntraID 登入日誌中的異常行為,如風險係數評估和地理位置檢測,幫助組織快速識別可疑登入。
  • GitLab 的 GraphQL 代碼注入漏洞允許未認證攻擊者刪除或修改儲存庫,潛在導致供應鏈攻擊。已有公開概念驗證 (PoC) 存在,使用內部部署 GitLab 的組織必須立即修補。