背景
大型內容與廣告平台為了加速審核,普遍把安全檢查交給自動化驗證管線,而這類管線對開發者工具的判讀經常產生誤判。InfoQ 在 2026 年 10 月 6 日由 Olimpiu Pop 報導的一則事件,把這個問題推到檯面上:RACE 的作者 Przemyslaw Alexander Kaminski 在啟用廣告活動後,帳戶遭自動停權,理由是「遭入侵的網站」與「惡意二進位檔」。RACE 是一套開源、以 Rust 編寫的原生 macOS 終端機多工器,也就是讓使用者在同一個畫面裡管理多個 shell 介面的工具。與 tmux 這類以網格分割版面的傳統多工器不同,RACE 採用無限畫布架構,shell 介面可以任意定位、縮放與分組。它的核心設計是把命令執行的生命周期與視窗版面的生命周期切開,確保子層的互動式 shell 在桌面應用程式重啟或介面崩潰後仍會存活。
這種設計在 macOS 上的實現方式,是透過內建的 PTY host 常駐程序,或外部的 dtach 後端,來管理 pseudoterminal(虛擬終端機配對,讓終端機程式以為自己連著真實輸出裝置)與背景工作程序。這正是後續被判為可疑的根源。
核心內容
自動安全掃描器評估二進位檔與網頁端點時,主要分析檔案簽章、靜態字串與動態程序執行模式。對桌面應用程式領域而言,一個持續衍生孤立背景工作程序、且能接收任意命令列輸入的可執行檔,其行為特徵會與常駐型後門和遠端存取木馬重疊。Kaminski 建立指向產品說明文件網域與二進位下載點的廣告活動後,平台的政策爬蟲便以惡意軟體違規為由標記了目標基礎設施。
作者自行排查後,手動驗證的結果與自動判定完全相反。發布的二進位檔已通過 macOS 原生公證,也通過獨立的惡意程式檢查;第三方分析工具回報乾淨,Google 自家的診斷工具同樣沒有發現問題。Google Search Console 與 Google Safe Browsing 驗證服務在網域根目錄與下載基礎設施上都回報零受損資產,RACE.dmg 具備 Apple Notarized Developer ID 公證狀態,VirusTotal 的陽性判定數為 0,程序生命週期也有文件說明為正當的 PTY 多工行為。
運作方式與申訴循環
要理解這次誤判,需要先理解稽核端與開發端看到的是不同東西。稽核端看到的是行為模式:常駐、衍生、可接收輸入;開發端看到的是功能合理:終端機多工器本來就需要管理程序與虛擬終端機。兩邊都沒有說錯,但自動化系統只對前者負責。
更棘手的是補救流程本身出現循環依賴。透過標準申訴介面送出診斷報告後,作者得到的是確定性的駁回,且平台不會揭露觸發標記的二進位雜湊、比對到的規則,或具體的網路 artefact。若要尋求帳戶支援,前置條件又是底層的安全停權必須先解決。為了隔離是否為常駐背景程序所致,作者在 1.0.39 版修改了生命週期拆除流程,在父程序終止時加入明確的使用者提示與程序清理鉤子,用來結束孤立的多工執行緒。這項修改並未改變停權結果。事後的貼文編輯指出,停權最終是在社群把這個操作僵局曝光給工程團隊之後才被撤銷,作者寫道,透過 Hacker News 的影響力,Google Ads 帳戶已恢復,但依然沒有說明是什麼觸發了停權。
影響與限制
這個案例顯示的是安全自動化與非標準系統程式設計之間的結構性張力。當平台愈來愈依賴黑盒行為模型檢查軟體生態系時,那些管理程序、操作記憶體對應、掛鈎底層核心抽象的合法原生工具,會在分發與商業基礎設施上遭遇愈來愈大的摩擦。對發行開發者工具的團隊而言,務實的對策是文件化程序拓撲,並把常駐工作代理與主要 UI 二進位檔隔離,以降低誤判機率;但這只能降低發生率,無法改變申訴時缺乏可見性的結構。Kaminski 表示會在所有可行途徑繼續爭取,包括訴諸歐盟法院。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。